author | Tero Marttila <terom@qmsk.net> |
Fri, 03 Oct 2014 23:09:37 +0300 | |
changeset 161 | 310f53b700dd |
parent 158 | bf220c415cc0 |
child 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 |
|
155 | 22 |
all: build lib bin lib/libpngtile.so bin/pngtile |
1
f3cde3db1fef
basic image/cache code compiles
Tero Marttila <terom@fixme.fi>
parents:
0
diff
changeset
|
23 |
|
155 | 24 |
# 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
|
25 |
lib/libpngtile.so: \ |
155 | 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 \ |
27 |
build/shared/util.o build/shared/log.o |
|
28 |
||
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
|
29 |
lib/libpngtile.a: \ |
155 | 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 \ |
31 |
build/shared/util.o build/shared/log.o |
|
32 |
||
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
|
33 |
bin/pngtile: \ |
155 | 34 |
build/pngtile/main.o \ |
158
bf220c415cc0
Makefile: really drop libpngtile.so from bin/pngtile link
Tero Marttila <terom@qmsk.net>
parents:
156
diff
changeset
|
35 |
build/shared/log.o |
155 | 36 |
|
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
|
37 |
bin/pngtile-static: \ |
155 | 38 |
build/pngtile/main.o \ |
39 |
lib/libpngtile.a |
|
40 |
||
41 |
SRC_PATHS = $(wildcard src/*/*.c) |
|
42 |
SRC_DIRS = $(dir $(SRC_PATHS)) |
|
43 |
||
44 |
build: |
|
45 |
mkdir -p $(SRC_DIRS:src/%=build/%) |
|
46 |
||
47 |
lib: |
|
48 |
mkdir -p lib |
|
49 |
||
50 |
bin: |
|
51 |
mkdir -p bin |
|
52 |
||
53 |
# build obj files from src, with header deps |
|
54 |
build/%.o: src/%.c |
|
55 |
$(CC) -c $(CPPFLAGS) $(CFLAGS) src/$*.c -o build/$*.o |
|
56 |
$(CC) -MM $(CPPFLAGS) src/$*.c -MT build/$*.o -MF build/$*.d |
|
57 |
||
58 |
-include $(wildcard build/*/*.d) |
|
59 |
||
60 |
# output libraries |
|
61 |
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
|
62 |
$(CC) -shared $(LDFLAGS) $+ $(LDLIBS_LIB) -o $@ |
155 | 63 |
|
64 |
lib/lib%.a: |
|
65 |
$(AR) rc $@ $+ |
|
66 |
||
67 |
# output binaries |
|
68 |
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
|
69 |
$(CC) $(LDFLAGS) $+ -o $@ $(LDLIBS_BIN) |
155 | 70 |
|
71 |
clean: |
|
72 |
rm -f build/*/*.o build/*/*.d |
|
73 |
rm -f bin/pngtile bin/pngtile-static lib/*.so lib/*.a |
|
74 |
||
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
|
75 |
# 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
|
76 |
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
|
77 |
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
|
78 |
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
|
79 |
|
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: $(INSTALL_INCLUDE) $(INSTALL_LIB) $(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
|
81 |
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
|
82 |
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
|
83 |
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
|
84 |
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
|
85 |
|
155 | 86 |
# dist builds |
119 | 87 |
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
|
88 |
DIST_DEPS = |
0260aeca943c
cleanup readme, drop pypngtile bits from Makefile, fixup setup.py for pypngtile
Tero Marttila <terom@paivola.fi>
parents:
122
diff
changeset
|
89 |
DIST_RESOURCES = README pngtile/ static/ bin/ |
0 | 90 |
|
155 | 91 |
dist-clean: clean dirs |
0 | 92 |
|
155 | 93 |
dist: dist-clean $(DIST_DEPS) |
94 |
mkdir -p dist |
|
118 | 95 |
rm -rf dist/$(DIST_NAME) |
0 | 96 |
mkdir -p dist/$(DIST_NAME) |
118 | 97 |
cp -rv Makefile $(DIST_RESOURCES) src/ include/ dist/$(DIST_NAME)/ |
98 |
make -C dist/$(DIST_NAME) dist-clean |
|
0 | 99 |
tar -C dist -czvf dist/$(DIST_NAME).tar.gz $(DIST_NAME) |
100 |
@echo "*** Output at dist/$(DIST_NAME).tar.gz" |
|
101 |
||
155 | 102 |
.PHONY : dirs clean depend dist-clean dist |