|
1 PREFIX = opt |
|
2 |
1 # debug |
3 # debug |
2 CFLAGS_DBG = -g |
4 CFLAGS_DEV = -g |
3 LDFLAGS_DBG = |
5 LDFLAGS_DEV = -Wl,-Rlib |
4 |
6 |
5 # profile |
7 # profile |
6 CFLAGS_PRF = -g -O2 -pg |
8 CFLAGS_PRF = -g -O2 -pg |
7 LDFLAGS_PRF = -pg |
9 LDFLAGS_PRF = -pg |
8 |
10 |
9 # release |
11 # release |
10 CFLAGS_REL = -O2 |
12 CFLAGS_REL = -O2 |
11 LDFLAGS_REL = |
13 LDFLAGS_REL = -Wl,-R${PREFIX}/lib |
12 |
14 |
13 # preprocessor flags |
15 # preprocessor flags |
14 CPPFLAGS = -Iinclude -Isrc/ |
16 CPPFLAGS = -Iinclude -Isrc |
15 CFLAGS = -Wall -std=gnu99 -fPIC -pthread ${CFLAGS_REL} |
17 CFLAGS = -Wall -std=gnu99 -fPIC -pthread ${CFLAGS_REL} |
16 LDFLAGS = ${LDFLAGS_ALL} ${LDFLAGS_REL} |
18 LDFLAGS = -Llib ${LDFLAGS_REL} |
17 LDLIBS = -lpng -lpthread |
19 LDLIBS_LIB = -lpng -lpthread |
|
20 LDLIBS_BIN = -lpngtile |
18 |
21 |
19 all: build lib bin lib/libpngtile.so bin/pngtile |
22 all: build lib bin lib/libpngtile.so bin/pngtile |
20 |
23 |
21 # binary deps |
24 # binary deps |
22 lib/libpngtile.so : \ |
25 lib/libpngtile.so: \ |
23 build/lib/ctx.o build/lib/image.o build/lib/cache.o build/lib/tile.o build/lib/png.o build/lib/error.o \ |
26 build/lib/ctx.o build/lib/image.o build/lib/cache.o build/lib/tile.o build/lib/png.o build/lib/error.o \ |
24 build/shared/util.o build/shared/log.o |
27 build/shared/util.o build/shared/log.o |
25 |
28 |
26 lib/libpngtile.a : \ |
29 lib/libpngtile.a: \ |
27 build/lib/ctx.o build/lib/image.o build/lib/cache.o build/lib/tile.o build/lib/png.o build/lib/error.o \ |
30 build/lib/ctx.o build/lib/image.o build/lib/cache.o build/lib/tile.o build/lib/png.o build/lib/error.o \ |
28 build/shared/util.o build/shared/log.o |
31 build/shared/util.o build/shared/log.o |
29 |
32 |
30 bin/pngtile : \ |
33 bin/pngtile: \ |
31 build/pngtile/main.o \ |
34 build/pngtile/main.o \ |
32 lib/libpngtile.so build/shared/log.o |
35 lib/libpngtile.so build/shared/log.o |
33 |
36 |
34 bin/pngtile-static : \ |
37 bin/pngtile-static: \ |
35 build/pngtile/main.o \ |
38 build/pngtile/main.o \ |
36 lib/libpngtile.a |
39 lib/libpngtile.a |
37 |
40 |
38 SRC_PATHS = $(wildcard src/*/*.c) |
41 SRC_PATHS = $(wildcard src/*/*.c) |
39 SRC_DIRS = $(dir $(SRC_PATHS)) |
42 SRC_DIRS = $(dir $(SRC_PATHS)) |
54 |
57 |
55 -include $(wildcard build/*/*.d) |
58 -include $(wildcard build/*/*.d) |
56 |
59 |
57 # output libraries |
60 # output libraries |
58 lib/lib%.so: |
61 lib/lib%.so: |
59 $(CC) -shared $(LDFLAGS) $+ $(LDLIBS) -o $@ |
62 $(CC) -shared $(LDFLAGS) $+ $(LDLIBS_LIB) -o $@ |
60 |
63 |
61 lib/lib%.a: |
64 lib/lib%.a: |
62 $(AR) rc $@ $+ |
65 $(AR) rc $@ $+ |
63 |
66 |
64 # output binaries |
67 # output binaries |
65 bin/%: |
68 bin/%: |
66 $(CC) $(LDFLAGS) $+ -o $@ $(LDLIBS) |
69 $(CC) $(LDFLAGS) $+ -o $@ $(LDLIBS_BIN) |
67 |
70 |
68 clean: |
71 clean: |
69 rm -f build/*/*.o build/*/*.d |
72 rm -f build/*/*.o build/*/*.d |
70 rm -f bin/pngtile bin/pngtile-static lib/*.so lib/*.a |
73 rm -f bin/pngtile bin/pngtile-static lib/*.so lib/*.a |
|
74 |
|
75 # install |
|
76 INSTALL_INCLUDE = include/pngtile.h |
|
77 INSTALL_LIB = lib/libpngtile.so |
|
78 INSTALL_BIN = bin/pngtile |
|
79 |
|
80 install: $(INSTALL_INCLUDE) $(INSTALL_LIB) $(INSTALL_BIN) |
|
81 install -d $(PREFIX)/bin $(PREFIX)/lib $(PREFIX)/include |
|
82 install -t $(PREFIX)/include $(INSTALL_INCLUDE) |
|
83 install -t $(PREFIX)/lib $(INSTALL_LIB) |
|
84 install -t $(PREFIX)/bin $(INSTALL_BIN) |
71 |
85 |
72 # dist builds |
86 # dist builds |
73 DIST_NAME = pngtile-${shell hg id -i} |
87 DIST_NAME = pngtile-${shell hg id -i} |
74 DIST_DEPS = |
88 DIST_DEPS = |
75 DIST_RESOURCES = README pngtile/ static/ bin/ |
89 DIST_RESOURCES = README pngtile/ static/ bin/ |
83 cp -rv Makefile $(DIST_RESOURCES) src/ include/ dist/$(DIST_NAME)/ |
97 cp -rv Makefile $(DIST_RESOURCES) src/ include/ dist/$(DIST_NAME)/ |
84 make -C dist/$(DIST_NAME) dist-clean |
98 make -C dist/$(DIST_NAME) dist-clean |
85 tar -C dist -czvf dist/$(DIST_NAME).tar.gz $(DIST_NAME) |
99 tar -C dist -czvf dist/$(DIST_NAME).tar.gz $(DIST_NAME) |
86 @echo "*** Output at dist/$(DIST_NAME).tar.gz" |
100 @echo "*** Output at dist/$(DIST_NAME).tar.gz" |
87 |
101 |
88 |
|
89 .PHONY : dirs clean depend dist-clean dist |
102 .PHONY : dirs clean depend dist-clean dist |