1e4f25e4aSBram Moolenaarifeq ($(shell uname),Darwin) 2e4f25e4aSBram Moolenaar LIBTOOL ?= glibtool 3e4f25e4aSBram Moolenaarelse 4e4f25e4aSBram Moolenaar LIBTOOL ?= libtool 5e4f25e4aSBram Moolenaarendif 6e4f25e4aSBram Moolenaar 7e4f25e4aSBram Moolenaarifneq ($(VERBOSE),1) 8e4f25e4aSBram Moolenaar LIBTOOL +=--quiet 9e4f25e4aSBram Moolenaarendif 10e4f25e4aSBram Moolenaar 11471f6581SBram Moolenaaroverride CFLAGS +=-Wall -Iinclude -std=c99 -Wpedantic -DINLINE="" 12e4f25e4aSBram Moolenaar 13e4f25e4aSBram Moolenaarifeq ($(shell uname),SunOS) 14e4f25e4aSBram Moolenaar override CFLAGS +=-D__EXTENSIONS__ -D_XPG6 -D__XOPEN_OR_POSIX 15e4f25e4aSBram Moolenaarendif 16e4f25e4aSBram Moolenaar 17e4f25e4aSBram Moolenaarifeq ($(DEBUG),1) 18e4f25e4aSBram Moolenaar override CFLAGS +=-ggdb -DDEBUG 19e4f25e4aSBram Moolenaarendif 20e4f25e4aSBram Moolenaar 21e4f25e4aSBram Moolenaarifeq ($(PROFILE),1) 22e4f25e4aSBram Moolenaar override CFLAGS +=-pg 23e4f25e4aSBram Moolenaar override LDFLAGS+=-pg 24e4f25e4aSBram Moolenaarendif 25e4f25e4aSBram Moolenaar 26e4f25e4aSBram MoolenaarCFILES=$(sort $(wildcard src/*.c)) 27e4f25e4aSBram MoolenaarHFILES=$(sort $(wildcard include/*.h)) 28e4f25e4aSBram MoolenaarOBJECTS=$(CFILES:.c=.lo) 29e4f25e4aSBram MoolenaarLIBRARY=libvterm.la 30e4f25e4aSBram Moolenaar 31e4f25e4aSBram MoolenaarBINFILES_SRC=$(sort $(wildcard bin/*.c)) 32e4f25e4aSBram MoolenaarBINFILES=$(BINFILES_SRC:.c=) 33e4f25e4aSBram Moolenaar 34e4f25e4aSBram MoolenaarTBLFILES=$(sort $(wildcard src/encoding/*.tbl)) 35e4f25e4aSBram MoolenaarINCFILES=$(TBLFILES:.tbl=.inc) 36e4f25e4aSBram Moolenaar 37e4f25e4aSBram MoolenaarHFILES_INT=$(sort $(wildcard src/*.h)) $(HFILES) 38e4f25e4aSBram Moolenaar 39e4f25e4aSBram MoolenaarVERSION_MAJOR=0 406fc3b59eSBram MoolenaarVERSION_MINOR=1 41e4f25e4aSBram Moolenaar 42e4f25e4aSBram MoolenaarVERSION_CURRENT=0 43e4f25e4aSBram MoolenaarVERSION_REVISION=0 44e4f25e4aSBram MoolenaarVERSION_AGE=0 45e4f25e4aSBram Moolenaar 466fc3b59eSBram MoolenaarVERSION=$(VERSION_MAJOR).$(VERSION_MINOR) 47e4f25e4aSBram Moolenaar 48e4f25e4aSBram MoolenaarPREFIX=/usr/local 49e4f25e4aSBram MoolenaarBINDIR=$(PREFIX)/bin 50e4f25e4aSBram MoolenaarLIBDIR=$(PREFIX)/lib 51e4f25e4aSBram MoolenaarINCDIR=$(PREFIX)/include 52e4f25e4aSBram MoolenaarMANDIR=$(PREFIX)/share/man 53e4f25e4aSBram MoolenaarMAN3DIR=$(MANDIR)/man3 54e4f25e4aSBram Moolenaar 5537e3edceSBram Moolenaar# Uncomment to check for memory access errors with valgrind. 5637e3edceSBram Moolenaar# VALGRIND=1 5737e3edceSBram Moolenaar 58e4f25e4aSBram Moolenaarall: $(LIBRARY) $(BINFILES) 59e4f25e4aSBram Moolenaar 60e4f25e4aSBram Moolenaar$(LIBRARY): $(OBJECTS) 61a9659e0dSBram Moolenaar $(LIBTOOL) --mode=link --tag=CC $(CC) -rpath $(LIBDIR) -version-info $(VERSION_CURRENT):$(VERSION_REVISION):$(VERSION_AGE) -o $@ $^ $(LDFLAGS) 62e4f25e4aSBram Moolenaar 63e4f25e4aSBram Moolenaarsrc/%.lo: src/%.c $(HFILES_INT) 64a9659e0dSBram Moolenaar $(LIBTOOL) --mode=compile --tag=CC $(CC) $(CFLAGS) -o $@ -c $< 65e4f25e4aSBram Moolenaar 66e4f25e4aSBram Moolenaarsrc/encoding/%.inc: src/encoding/%.tbl 67a9659e0dSBram Moolenaar perl -CSD tbl2inc_c.pl $< >$@ 68e4f25e4aSBram Moolenaar 69e178ba36SBram Moolenaarsrc/fullwidth.inc: 70e178ba36SBram Moolenaar @perl find-wide-chars.pl >$@ 71e178ba36SBram Moolenaar 72e4f25e4aSBram Moolenaarsrc/encoding.lo: $(INCFILES) 73e4f25e4aSBram Moolenaar 74e4f25e4aSBram Moolenaarbin/%: bin/%.c $(LIBRARY) 75a9659e0dSBram Moolenaar $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) -o $@ $< -lvterm $(LDFLAGS) 76e4f25e4aSBram Moolenaar 77e4f25e4aSBram Moolenaart/harness.lo: t/harness.c $(HFILES) 78a9659e0dSBram Moolenaar $(LIBTOOL) --mode=compile --tag=CC $(CC) $(CFLAGS) -o $@ -c $< 79e4f25e4aSBram Moolenaar 80e4f25e4aSBram Moolenaart/harness: t/harness.lo $(LIBRARY) 81*476268c3SBram Moolenaar $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) -static 82e4f25e4aSBram Moolenaar 83e4f25e4aSBram Moolenaar.PHONY: test 84e4f25e4aSBram Moolenaartest: $(LIBRARY) t/harness 85e4f25e4aSBram Moolenaar for T in `ls t/[0-9]*.test`; do echo "** $$T **"; perl t/run-test.pl $$T $(if $(VALGRIND),--valgrind) || exit 1; done 86e4f25e4aSBram Moolenaar 87e4f25e4aSBram Moolenaar.PHONY: clean 88e4f25e4aSBram Moolenaarclean: 89e4f25e4aSBram Moolenaar $(LIBTOOL) --mode=clean rm -f $(OBJECTS) $(INCFILES) 90e4f25e4aSBram Moolenaar $(LIBTOOL) --mode=clean rm -f t/harness.lo t/harness 91e4f25e4aSBram Moolenaar $(LIBTOOL) --mode=clean rm -f $(LIBRARY) $(BINFILES) 92e4f25e4aSBram Moolenaar 93e4f25e4aSBram Moolenaar.PHONY: install 94e4f25e4aSBram Moolenaarinstall: install-inc install-lib install-bin 95e4f25e4aSBram Moolenaar 96e4f25e4aSBram Moolenaarinstall-inc: 97e4f25e4aSBram Moolenaar install -d $(DESTDIR)$(INCDIR) 98e4f25e4aSBram Moolenaar install -m644 $(HFILES) $(DESTDIR)$(INCDIR) 99e4f25e4aSBram Moolenaar install -d $(DESTDIR)$(LIBDIR)/pkgconfig 100e4f25e4aSBram Moolenaar sed -e "s,@PREFIX@,$(PREFIX)," -e "s,@LIBDIR@,$(LIBDIR)," -e "s,@VERSION@,$(VERSION)," <vterm.pc.in >$(DESTDIR)$(LIBDIR)/pkgconfig/vterm.pc 101e4f25e4aSBram Moolenaar 102e4f25e4aSBram Moolenaarinstall-lib: $(LIBRARY) 103e4f25e4aSBram Moolenaar install -d $(DESTDIR)$(LIBDIR) 104e4f25e4aSBram Moolenaar $(LIBTOOL) --mode=install install $(LIBRARY) $(DESTDIR)$(LIBDIR)/$(LIBRARY) 105e4f25e4aSBram Moolenaar $(LIBTOOL) --mode=finish $(DESTDIR)$(LIBDIR) 106e4f25e4aSBram Moolenaar 107e4f25e4aSBram Moolenaarinstall-bin: $(BINFILES) 108e4f25e4aSBram Moolenaar install -d $(DESTDIR)$(BINDIR) 109e4f25e4aSBram Moolenaar $(LIBTOOL) --mode=install install $(BINFILES) $(DESTDIR)$(BINDIR)/ 110e4f25e4aSBram Moolenaar 111e4f25e4aSBram Moolenaar# DIST CUT 112e4f25e4aSBram Moolenaar 113e4f25e4aSBram MoolenaarDISTDIR=libvterm-$(VERSION) 114e4f25e4aSBram Moolenaar 115e4f25e4aSBram Moolenaardistdir: $(INCFILES) 116e4f25e4aSBram Moolenaar mkdir __distdir 1176fc3b59eSBram Moolenaar cp LICENSE CONTRIBUTING __distdir 118e4f25e4aSBram Moolenaar mkdir __distdir/src 119d4a5f40cSBram Moolenaar cp src/*.c src/*.h src/*.inc __distdir/src 120e4f25e4aSBram Moolenaar mkdir __distdir/src/encoding 121e4f25e4aSBram Moolenaar cp src/encoding/*.inc __distdir/src/encoding 122e4f25e4aSBram Moolenaar mkdir __distdir/include 123e4f25e4aSBram Moolenaar cp include/*.h __distdir/include 124e4f25e4aSBram Moolenaar mkdir __distdir/bin 125e4f25e4aSBram Moolenaar cp bin/*.c __distdir/bin 126e4f25e4aSBram Moolenaar mkdir __distdir/t 127e4f25e4aSBram Moolenaar cp t/*.test t/harness.c t/run-test.pl __distdir/t 128e4f25e4aSBram Moolenaar sed "s,@VERSION@,$(VERSION)," <vterm.pc.in >__distdir/vterm.pc.in 129e4f25e4aSBram Moolenaar sed "/^# DIST CUT/Q" <Makefile >__distdir/Makefile 130e4f25e4aSBram Moolenaar mv __distdir $(DISTDIR) 131e4f25e4aSBram Moolenaar 132e4f25e4aSBram MoolenaarTARBALL=$(DISTDIR).tar.gz 133e4f25e4aSBram Moolenaar 134e4f25e4aSBram Moolenaardist: distdir 135e4f25e4aSBram Moolenaar tar -czf $(TARBALL) $(DISTDIR) 136e4f25e4aSBram Moolenaar rm -rf $(DISTDIR) 137e4f25e4aSBram Moolenaar 138e4f25e4aSBram Moolenaardist+bzr: 139e4f25e4aSBram Moolenaar $(MAKE) dist VERSION=$(VERSION)+bzr`bzr revno` 140e4f25e4aSBram Moolenaar 141e4f25e4aSBram Moolenaardistdir+bzr: 142e4f25e4aSBram Moolenaar $(MAKE) distdir VERSION=$(VERSION)+bzr`bzr revno` 143