1CC ?= gcc 2CFLAGS += -Wall -I. -fPIC 3PREFIX ?= $(DESTDIR)/usr/local 4TESTS = $(patsubst %.c, %, $(wildcard t/*.c)) 5 6ifdef ANSI 7 # -D_BSD_SOURCE for MAP_ANONYMOUS 8 CFLAGS += -ansi -D_BSD_SOURCE 9 LDLIBS += -lbsd-compat 10endif 11 12%: 13 $(CC) $(LDFLAGS) $(TARGET_ARCH) $(filter %.o %.a %.so, $^) $(LDLIBS) -o $@ 14 15%.o: 16 $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $(filter %.c, $^) $(LDLIBS) -o $@ 17 18%.a: 19 $(AR) rcs $@ $(filter %.o, $^) 20 21%.so: 22 $(CC) -shared $(LDFLAGS) $(TARGET_ARCH) $(filter %.o, $^) $(LDLIBS) -o $@ 23 24all: libtap.a libtap.so tap.pc tests 25 26tap.pc: 27 @echo generating tap.pc 28 @echo 'prefix='$(PREFIX) > tap.pc 29 @echo 'exec_prefix=$${prefix}' >> tap.pc 30 @echo 'libdir=$${prefix}/lib' >> tap.pc 31 @echo 'includedir=$${prefix}/include' >> tap.pc 32 @echo '' >> tap.pc 33 @echo 'Name: libtap' >> tap.pc 34 @echo 'Description: Write tests in C' >> tap.pc 35 @echo 'Version: 0.1.0' >> tap.pc 36 @echo 'URL: https://github.com/zorgnax/libtap' >> tap.pc 37 @echo 'Libs: -L$${libdir} -ltap' >> tap.pc 38 @echo 'Cflags: -I$${includedir}' >> tap.pc 39 40libtap.a: tap.o 41 42libtap.so: tap.o 43 44tap.o: tap.c tap.h 45 46tests: $(TESTS) 47 48$(TESTS): %: %.o libtap.a 49 50$(patsubst %, %.o, $(TESTS)): %.o: %.c tap.h 51 52clean: 53 rm -rf *.o t/*.o tap.pc libtap.a libtap.so $(TESTS) 54 55install: libtap.a tap.h libtap.so tap.pc 56 mkdir -p $(PREFIX)/lib $(PREFIX)/include $(PREFIX)/lib/pkgconfig 57 install -c libtap.a $(PREFIX)/lib 58 install -c libtap.so $(PREFIX)/lib 59 install -c tap.pc $(PREFIX)/lib/pkgconfig 60 install -c tap.h $(PREFIX)/include 61 62uninstall: 63 rm $(PREFIX)/lib/libtap.a $(PREFIX)/lib/libtap.so $(PREFIX)/include/tap.h 64 65dist: 66 rm libtap.zip 67 zip -r libtap * 68 69check test: all 70 ./t/test 71 72.PHONY: all clean install uninstall dist check test tests 73