Makefile
author Tero Marttila <terom@fixme.fi>
Sat, 10 Apr 2010 22:30:00 +0300
branchunscaled-coordinates
changeset 128 66c95c2d212c
parent 122 8e4ff23e33f5
child 132 0260aeca943c
permissions -rw-r--r--
partial implementation of unscaled coordinates in URLs, but broken for url hashes and view images
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
# :set noexpandtab
35
314aa047a910 compile with -O2 sometimes?
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
     2
CFLAGS_ALL = -Wall -std=gnu99
95
af7d0de9a35c compile with profiling?
Tero Marttila <terom@fixme.fi>
parents: 75
diff changeset
     3
LDFLAGS_ALL =
35
314aa047a910 compile with -O2 sometimes?
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
     4
CFLAGS_DBG = -g
314aa047a910 compile with -O2 sometimes?
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
     5
CFLAGS_REL = -O2
99
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
     6
CFLAGS_PRF = -g -O2 -pg
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
     7
LDFLAGS_PRF = -pg
35
314aa047a910 compile with -O2 sometimes?
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
     8
99
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
     9
CFLAGS_SEL = ${CFLAGS_REL}
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
    10
LDFLAGS_SEL = ${LDFLAGS_REL}
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
# warnings, and use C99 with GNU extensions
35
314aa047a910 compile with -O2 sometimes?
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    13
CFLAGS = ${CFLAGS_ALL} ${CFLAGS_SEL}
95
af7d0de9a35c compile with profiling?
Tero Marttila <terom@fixme.fi>
parents: 75
diff changeset
    14
LDFLAGS = ${LDFLAGS_ALL} ${LDFLAGS_SEL}
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
# preprocessor flags
16
6e781cf3d459 move public headers to include/, python stuff to python/ sub-dir
Tero Marttila <terom@fixme.fi>
parents: 4
diff changeset
    17
CPPFLAGS = -Iinclude -Isrc/
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
1
f3cde3db1fef basic image/cache code compiles
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    19
# libraries to use
19
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    20
LOADLIBES = -lpng -lpthread
1
f3cde3db1fef basic image/cache code compiles
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    21
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
# output name
119
56cf0a330b5b use hg id for DIST_NAME
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
    23
DIST_NAME = pngtile-${shell hg id -i}
120
3c153e82e862 make dist depend on python.c, and add pypngtile.so to all...
Tero Marttila <terom@fixme.fi>
parents: 119
diff changeset
    24
DIST_DEPS = python/pypngtile.c
118
dc77a9f66f59 fix up dist
Tero Marttila <terom@fixme.fi>
parents: 116
diff changeset
    25
DIST_RESOURCES = README python/ pngtile/ static/ bin/
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
120
3c153e82e862 make dist depend on python.c, and add pypngtile.so to all...
Tero Marttila <terom@fixme.fi>
parents: 119
diff changeset
    27
all: depend lib/libpngtile.so bin/pngtile lib/pypngtile.so
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
1
f3cde3db1fef basic image/cache code compiles
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    29
lib/libpngtile.so : \
58
d0295e6deb62 updated Makefile for png.o
Tero Marttila <terom@fixme.fi>
parents: 35
diff changeset
    30
	build/obj/lib/ctx.o build/obj/lib/image.o build/obj/lib/cache.o build/obj/lib/tile.o build/obj/lib/png.o build/obj/lib/error.o \
16
6e781cf3d459 move public headers to include/, python stuff to python/ sub-dir
Tero Marttila <terom@fixme.fi>
parents: 4
diff changeset
    31
	build/obj/shared/util.o build/obj/shared/log.o
6e781cf3d459 move public headers to include/, python stuff to python/ sub-dir
Tero Marttila <terom@fixme.fi>
parents: 4
diff changeset
    32
99
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
    33
lib/libpngtile.a : \
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
    34
	build/obj/lib/ctx.o build/obj/lib/image.o build/obj/lib/cache.o build/obj/lib/tile.o build/obj/lib/png.o build/obj/lib/error.o \
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
    35
	build/obj/shared/util.o build/obj/shared/log.o
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
    36
16
6e781cf3d459 move public headers to include/, python stuff to python/ sub-dir
Tero Marttila <terom@fixme.fi>
parents: 4
diff changeset
    37
lib/pypngtile.so : \
6e781cf3d459 move public headers to include/, python stuff to python/ sub-dir
Tero Marttila <terom@fixme.fi>
parents: 4
diff changeset
    38
	lib/libpngtile.so
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
99
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
    40
bin/pngtile : \
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
    41
	build/obj/pngtile/main.o \
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
    42
	lib/libpngtile.so build/obj/shared/log.o
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
    43
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
    44
bin/pngtile-static : \
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
    45
	build/obj/pngtile/main.o \
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
    46
	lib/libpngtile.a
2
05de54150a4c up to a test client
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    47
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
SRC_PATHS = $(wildcard src/*/*.c)
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
SRC_NAMES = $(patsubst src/%,%,$(SRC_PATHS))
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
SRC_DIRS = $(dir $(SRC_NAMES))
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
.PHONY : dirs clean depend dist
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
118
dc77a9f66f59 fix up dist
Tero Marttila <terom@fixme.fi>
parents: 116
diff changeset
    54
dist-clean : clean dirs
dc77a9f66f59 fix up dist
Tero Marttila <terom@fixme.fi>
parents: 116
diff changeset
    55
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
dirs: 
30
53e99e552122 move the python/web code in
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
    57
	mkdir -p bin lib dist
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
	mkdir -p $(SRC_DIRS:%=build/deps/%)
116
6841b56e128b build/objs/py -> python
Tero Marttila <terom@fixme.fi>
parents: 115
diff changeset
    59
	mkdir -p $(SRC_DIRS:%=build/obj/%) build/obj/python
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
clean:
118
dc77a9f66f59 fix up dist
Tero Marttila <terom@fixme.fi>
parents: 116
diff changeset
    62
	rm -f build/obj/*/*.o build/deps/*/*.d
122
8e4ff23e33f5 fix make clean
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    63
	rm -f bin/pngtile bin/pngtile-static lib/*.so lib/*.a
118
dc77a9f66f59 fix up dist
Tero Marttila <terom@fixme.fi>
parents: 116
diff changeset
    64
	rm -f pngtile/*.pyc 
122
8e4ff23e33f5 fix make clean
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    65
	rm -f */.*.swp */*/.*.swp
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    67
# .h dependencies
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    68
depend: $(SRC_NAMES:%.c=build/deps/%.d)
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    69
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
build/deps/%.d : src/%.c
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
	@set -e; rm -f $@; \
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    72
	 $(CC) -MM -MT __ $(CPPFLAGS) $< > $@.$$$$; \
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
	 sed 's,__[ :]*,build/obj/$*.o $@ : ,g' < $@.$$$$ > $@; \
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    74
	 rm -f $@.$$$$
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    75
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
include $(wildcard build/deps/*/*.d)
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    77
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
# build (potential) library targets with specific cflags
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    79
# XXX: just build everything with -fPIC?
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80
build/obj/shared/%.o : src/shared/%.c
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    81
	$(CC) -c -fPIC $(CPPFLAGS) $(CFLAGS) $< -o $@
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    82
19
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    83
# XXX: hax in -pthread
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
build/obj/lib/%.o : src/lib/%.c
19
ebcc49de97d0 implement pt_ctx threadpool and pt_image_tile_async
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    85
	$(CC) -c -fPIC -pthread $(CPPFLAGS) $(CFLAGS) $< -o $@
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
# general binary objects
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
build/obj/%.o : src/%.c
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    89
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    90
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
# output binaries
99
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
    92
bin/% :
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    93
	$(CC) $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    94
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    95
# output libraries
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    96
lib/lib%.so :
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    97
	$(CC) -shared $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    98
99
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
    99
lib/lib%.a :
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
   100
	$(AR) rc $@ $+
fa21919d105f support for profiling - although it's absolutely useless here
Tero Marttila <terom@fixme.fi>
parents: 95
diff changeset
   101
115
e4628dea2126 keep .pyx -> .c in python/, separate build/obj/py/py*.o
Tero Marttila <terom@fixme.fi>
parents: 114
diff changeset
   102
python/%.c : python/%.pyx
16
6e781cf3d459 move public headers to include/, python stuff to python/ sub-dir
Tero Marttila <terom@fixme.fi>
parents: 4
diff changeset
   103
	cython -o $@ $<
6e781cf3d459 move public headers to include/, python stuff to python/ sub-dir
Tero Marttila <terom@fixme.fi>
parents: 4
diff changeset
   104
116
6841b56e128b build/objs/py -> python
Tero Marttila <terom@fixme.fi>
parents: 115
diff changeset
   105
build/obj/python/%.o : python/%.c
115
e4628dea2126 keep .pyx -> .c in python/, separate build/obj/py/py*.o
Tero Marttila <terom@fixme.fi>
parents: 114
diff changeset
   106
	$(CC) -c -fPIC -I/usr/include/python2.5 $(CPPFLAGS) $(CFLAGS) $< -o $@
16
6e781cf3d459 move public headers to include/, python stuff to python/ sub-dir
Tero Marttila <terom@fixme.fi>
parents: 4
diff changeset
   107
116
6841b56e128b build/objs/py -> python
Tero Marttila <terom@fixme.fi>
parents: 115
diff changeset
   108
lib/py%.so : build/obj/python/py%.o
115
e4628dea2126 keep .pyx -> .c in python/, separate build/obj/py/py*.o
Tero Marttila <terom@fixme.fi>
parents: 114
diff changeset
   109
	$(CC) -shared $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@
16
6e781cf3d459 move public headers to include/, python stuff to python/ sub-dir
Tero Marttila <terom@fixme.fi>
parents: 4
diff changeset
   110
120
3c153e82e862 make dist depend on python.c, and add pypngtile.so to all...
Tero Marttila <terom@fixme.fi>
parents: 119
diff changeset
   111
dist: $(DIST_DEPS)
118
dc77a9f66f59 fix up dist
Tero Marttila <terom@fixme.fi>
parents: 116
diff changeset
   112
	rm -rf dist/$(DIST_NAME)
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   113
	mkdir -p dist/$(DIST_NAME)
118
dc77a9f66f59 fix up dist
Tero Marttila <terom@fixme.fi>
parents: 116
diff changeset
   114
	cp -rv Makefile $(DIST_RESOURCES) src/ include/  dist/$(DIST_NAME)/
dc77a9f66f59 fix up dist
Tero Marttila <terom@fixme.fi>
parents: 116
diff changeset
   115
	make -C dist/$(DIST_NAME) dist-clean
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   116
	tar -C dist -czvf dist/$(DIST_NAME).tar.gz $(DIST_NAME)
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   117
	@echo "*** Output at dist/$(DIST_NAME).tar.gz"
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   118