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=2 41 42VERSION_CURRENT=0 43VERSION_REVISION=0 44VERSION_AGE=0 45 46VERSION=$(VERSION_MAJOR).$(VERSION_MINOR) 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 $(LIBTOOL) --mode=link --tag=CC $(CC) -rpath $(LIBDIR) -version-info $(VERSION_CURRENT):$(VERSION_REVISION):$(VERSION_AGE) -o $@ $^ $(LDFLAGS) 62 63src/%.lo: src/%.c $(HFILES_INT) 64 $(LIBTOOL) --mode=compile --tag=CC $(CC) $(CFLAGS) -o $@ -c $< 65 66src/encoding/%.inc: src/encoding/%.tbl 67 perl -CSD tbl2inc_c.pl $< >$@ 68 69src/fullwidth.inc: 70 @perl find-wide-chars.pl >$@ 71 72src/encoding.lo: $(INCFILES) 73 74bin/%: bin/%.c $(LIBRARY) 75 $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) -o $@ $< -lvterm $(LDFLAGS) 76 77t/harness.lo: t/harness.c $(HFILES) 78 $(LIBTOOL) --mode=compile --tag=CC $(CC) $(CFLAGS) -o $@ -c $< 79 80t/harness: t/harness.lo $(LIBRARY) 81 $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) -static 82 83.PHONY: test 84test: $(LIBRARY) t/harness 85 for T in `ls t/[0-9]*.test`; do echo "** $$T **"; perl t/run-test.pl $$T $(if $(VALGRIND),--valgrind) || exit 1; done 86 87.PHONY: clean 88clean: 89 $(LIBTOOL) --mode=clean rm -f $(OBJECTS) $(INCFILES) 90 $(LIBTOOL) --mode=clean rm -f t/harness.lo t/harness 91 $(LIBTOOL) --mode=clean rm -f $(LIBRARY) $(BINFILES) 92 93.PHONY: install 94install: install-inc install-lib install-bin 95 96install-inc: 97 install -d $(DESTDIR)$(INCDIR) 98 install -m644 $(HFILES) $(DESTDIR)$(INCDIR) 99 install -d $(DESTDIR)$(LIBDIR)/pkgconfig 100 sed -e "s,@INCDIR@,$(INCDIR)," -e "s,@LIBDIR@,$(LIBDIR)," -e "s,@VERSION@,$(VERSION)," <vterm.pc.in >$(DESTDIR)$(LIBDIR)/pkgconfig/vterm.pc 101 102install-lib: $(LIBRARY) 103 install -d $(DESTDIR)$(LIBDIR) 104 $(LIBTOOL) --mode=install install $(LIBRARY) $(DESTDIR)$(LIBDIR)/$(LIBRARY) 105 $(LIBTOOL) --mode=finish $(DESTDIR)$(LIBDIR) 106 107install-bin: $(BINFILES) 108 install -d $(DESTDIR)$(BINDIR) 109 $(LIBTOOL) --mode=install install $(BINFILES) $(DESTDIR)$(BINDIR)/ 110 111# DIST CUT 112 113DISTDIR=libvterm-$(VERSION) 114 115distdir: $(INCFILES) 116 mkdir __distdir 117 cp LICENSE CONTRIBUTING __distdir 118 mkdir __distdir/src 119 cp src/*.c src/*.h src/*.inc __distdir/src 120 mkdir __distdir/src/encoding 121 cp src/encoding/*.inc __distdir/src/encoding 122 mkdir __distdir/include 123 cp include/*.h __distdir/include 124 mkdir __distdir/bin 125 cp bin/*.c __distdir/bin 126 mkdir __distdir/t 127 cp t/*.test t/harness.c t/run-test.pl __distdir/t 128 sed "s,@VERSION@,$(VERSION)," <vterm.pc.in >__distdir/vterm.pc.in 129 sed "/^# DIST CUT/Q" <Makefile >__distdir/Makefile 130 mv __distdir $(DISTDIR) 131 132TARBALL=$(DISTDIR).tar.gz 133 134dist: distdir 135 tar -czf $(TARBALL) $(DISTDIR) 136 rm -rf $(DISTDIR) 137 138dist+bzr: 139 $(MAKE) dist VERSION=$(VERSION)+bzr`bzr revno` 140 141distdir+bzr: 142 $(MAKE) distdir VERSION=$(VERSION)+bzr`bzr revno` 143