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