]> begriffs open source - libtap/blob - Makefile
Create shared objects by default
[libtap] / Makefile
1 CFLAGS = -g -Wall -I. -fPIC
2 CC = gcc
3 PREFIX = $(DESTDIR)/usr/local
4 TESTS = $(patsubst %.c, %, $(wildcard t/*.c))
5
6 ifdef ANSI
7         # -D_BSD_SOURCE for MAP_ANONYMOUS
8         CFLAGS += -ansi -D_BSD_SOURCE
9         LDLIBS += -lbsd-compat
10 endif
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: tap.o
22         $(CC) -shared $(LDFLAGS) $(TARGET_ARCH) $(filter %.o, $^) $(LDLIBS) -o $@
23
24 all: libtap.a tests
25
26 libtap.a: tap.o
27
28 tap.o: tap.c tap.h
29
30 tests: $(TESTS)
31
32 $(TESTS): %: %.o libtap.a
33
34 $(patsubst %, %.o, $(TESTS)): %.o: %.c tap.h
35
36 clean:
37         rm -rf *.o t/*.o libtap.a libtap.so $(TESTS)
38
39 install: libtap.a tap.h libtap.so
40         mkdir -p $(PREFIX)/lib $(PREFIX)/include
41         install -D libtap.a $(PREFIX)/lib
42         install -D libtap.so $(PREFIX)/lib
43         install -D tap.h $(PREFIX)/include
44
45 uninstall:
46         rm $(PREFIX)/lib/libtap.a $(PREFIX)/lib/libtap.so $(PREFIX)/include/tap.h
47
48 dist:
49         rm libtap.zip
50         zip -r libtap *
51
52 check test: all
53         prove
54
55 .PHONY: all clean install uninstall dist check test tests
56