author | Tero Marttila <terom@qmsk.net> |
Mon, 03 Jul 2017 23:36:26 +0300 | |
changeset 178 | 9e3ce737eb9d |
parent 162 | dd922b16220d |
permissions | -rw-r--r-- |
156
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
1 |
PREFIX = opt |
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
2 |
|
155 | 3 |
# debug |
156
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
4 |
CFLAGS_DEV = -g |
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
5 |
LDFLAGS_DEV = -Wl,-Rlib |
155 | 6 |
|
7 |
# profile |
|
99
fa21919d105f
support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents:
95
diff
changeset
|
8 |
CFLAGS_PRF = -g -O2 -pg |
fa21919d105f
support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents:
95
diff
changeset
|
9 |
LDFLAGS_PRF = -pg |
35 | 10 |
|
155 | 11 |
# release |
12 |
CFLAGS_REL = -O2 |
|
156
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
13 |
LDFLAGS_REL = -Wl,-R${PREFIX}/lib |
0 | 14 |
|
15 |
# preprocessor flags |
|
156
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
16 |
CPPFLAGS = -Iinclude -Isrc |
155 | 17 |
CFLAGS = -Wall -std=gnu99 -fPIC -pthread ${CFLAGS_REL} |
156
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
18 |
LDFLAGS = -Llib ${LDFLAGS_REL} |
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
19 |
LDLIBS_LIB = -lpng -lpthread |
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
20 |
LDLIBS_BIN = -lpngtile |
0 | 21 |
|
162
dd922b16220d
Makefile: fix make install on dirs
Tero Marttila <terom@qmsk.net>
parents:
158
diff
changeset
|
22 |
DIRS = build lib bin |
dd922b16220d
Makefile: fix make install on dirs
Tero Marttila <terom@qmsk.net>
parents:
158
diff
changeset
|
23 |
all: $(DIRS) lib/libpngtile.so bin/pngtile |
1
f3cde3db1fef
basic image/cache code compiles
Tero Marttila <terom@fixme.fi>
parents:
0
diff
changeset
|
24 |
|
155 | 25 |
# binary deps |
156
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
26 |
lib/libpngtile.so: \ |
155 | 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 \ |
28 |
build/shared/util.o build/shared/log.o |
|
29 |
||
156
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
30 |
lib/libpngtile.a: \ |
155 | 31 |
build/lib/ctx.o build/lib/image.o build/lib/cache.o build/lib/tile.o build/lib/png.o build/lib/error.o \ |
32 |
build/shared/util.o build/shared/log.o |
|
33 |
||
156
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
34 |
bin/pngtile: \ |
155 | 35 |
build/pngtile/main.o \ |
158
bf220c415cc0
Makefile: really drop libpngtile.so from bin/pngtile link
Tero Marttila <terom@qmsk.net>
parents:
156
diff
changeset
|
36 |
build/shared/log.o |
155 | 37 |
|
156
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
38 |
bin/pngtile-static: \ |
155 | 39 |
build/pngtile/main.o \ |
40 |
lib/libpngtile.a |
|
41 |
||
42 |
SRC_PATHS = $(wildcard src/*/*.c) |
|
43 |
SRC_DIRS = $(dir $(SRC_PATHS)) |
|
44 |
||
162
dd922b16220d
Makefile: fix make install on dirs
Tero Marttila <terom@qmsk.net>
parents:
158
diff
changeset
|
45 |
|
155 | 46 |
build: |
47 |
mkdir -p $(SRC_DIRS:src/%=build/%) |
|
48 |
||
49 |
lib: |
|
50 |
mkdir -p lib |
|
51 |
||
52 |
bin: |
|
53 |
mkdir -p bin |
|
54 |
||
55 |
# build obj files from src, with header deps |
|
56 |
build/%.o: src/%.c |
|
57 |
$(CC) -c $(CPPFLAGS) $(CFLAGS) src/$*.c -o build/$*.o |
|
58 |
$(CC) -MM $(CPPFLAGS) src/$*.c -MT build/$*.o -MF build/$*.d |
|
59 |
||
60 |
-include $(wildcard build/*/*.d) |
|
61 |
||
62 |
# output libraries |
|
63 |
lib/lib%.so: |
|
156
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
64 |
$(CC) -shared $(LDFLAGS) $+ $(LDLIBS_LIB) -o $@ |
155 | 65 |
|
66 |
lib/lib%.a: |
|
67 |
$(AR) rc $@ $+ |
|
68 |
||
69 |
# output binaries |
|
70 |
bin/%: |
|
156
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
71 |
$(CC) $(LDFLAGS) $+ -o $@ $(LDLIBS_BIN) |
155 | 72 |
|
73 |
clean: |
|
74 |
rm -f build/*/*.o build/*/*.d |
|
75 |
rm -f bin/pngtile bin/pngtile-static lib/*.so lib/*.a |
|
76 |
||
156
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
77 |
# install |
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
78 |
INSTALL_INCLUDE = include/pngtile.h |
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
79 |
INSTALL_LIB = lib/libpngtile.so |
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
80 |
INSTALL_BIN = bin/pngtile |
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
81 |
|
162
dd922b16220d
Makefile: fix make install on dirs
Tero Marttila <terom@qmsk.net>
parents:
158
diff
changeset
|
82 |
install: $(DIRS) $(INSTALL_INCLUDE) $(INSTALL_LIB) $(INSTALL_BIN) |
156
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
83 |
install -d $(PREFIX)/bin $(PREFIX)/lib $(PREFIX)/include |
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
84 |
install -t $(PREFIX)/include $(INSTALL_INCLUDE) |
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
85 |
install -t $(PREFIX)/lib $(INSTALL_LIB) |
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
86 |
install -t $(PREFIX)/bin $(INSTALL_BIN) |
01a05c807e82
Makefile: do no link bin/pngtile directly with libpngtile, but rather use -lpngtile and -Rlib; add install target
Tero Marttila <terom@qmsk.net>
parents:
155
diff
changeset
|
87 |
|
155 | 88 |
# dist builds |
119 | 89 |
DIST_NAME = pngtile-${shell hg id -i} |
132
0260aeca943c
cleanup readme, drop pypngtile bits from Makefile, fixup setup.py for pypngtile
Tero Marttila <terom@paivola.fi>
parents:
122
diff
changeset
|
90 |
DIST_DEPS = |
0260aeca943c
cleanup readme, drop pypngtile bits from Makefile, fixup setup.py for pypngtile
Tero Marttila <terom@paivola.fi>
parents:
122
diff
changeset
|
91 |
DIST_RESOURCES = README pngtile/ static/ bin/ |
0 | 92 |
|
155 | 93 |
dist-clean: clean dirs |
0 | 94 |
|
155 | 95 |
dist: dist-clean $(DIST_DEPS) |
96 |
mkdir -p dist |
|
118 | 97 |
rm -rf dist/$(DIST_NAME) |
0 | 98 |
mkdir -p dist/$(DIST_NAME) |
118 | 99 |
cp -rv Makefile $(DIST_RESOURCES) src/ include/ dist/$(DIST_NAME)/ |
100 |
make -C dist/$(DIST_NAME) dist-clean |
|
0 | 101 |
tar -C dist -czvf dist/$(DIST_NAME).tar.gz $(DIST_NAME) |
102 |
@echo "*** Output at dist/$(DIST_NAME).tar.gz" |
|
103 |
||
155 | 104 |
.PHONY : dirs clean depend dist-clean dist |