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