terom@0: # :set noexpandtab terom@35: CFLAGS_ALL = -Wall -std=gnu99 terom@95: LDFLAGS_ALL = terom@35: CFLAGS_DBG = -g terom@35: CFLAGS_REL = -O2 terom@99: CFLAGS_PRF = -g -O2 -pg terom@99: LDFLAGS_PRF = -pg terom@35: terom@99: CFLAGS_SEL = ${CFLAGS_REL} terom@99: LDFLAGS_SEL = ${LDFLAGS_REL} terom@0: terom@0: # warnings, and use C99 with GNU extensions terom@35: CFLAGS = ${CFLAGS_ALL} ${CFLAGS_SEL} terom@95: LDFLAGS = ${LDFLAGS_ALL} ${LDFLAGS_SEL} terom@0: terom@0: # preprocessor flags terom@16: CPPFLAGS = -Iinclude -Isrc/ terom@0: terom@1: # libraries to use terom@19: LOADLIBES = -lpng -lpthread terom@1: terom@0: # output name terom@119: DIST_NAME = pngtile-${shell hg id -i} terom@120: DIST_DEPS = python/pypngtile.c terom@118: DIST_RESOURCES = README python/ pngtile/ static/ bin/ terom@0: terom@120: all: depend lib/libpngtile.so bin/pngtile lib/pypngtile.so terom@0: terom@1: lib/libpngtile.so : \ terom@58: 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 \ terom@16: build/obj/shared/util.o build/obj/shared/log.o terom@16: terom@99: lib/libpngtile.a : \ terom@99: 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 \ terom@99: build/obj/shared/util.o build/obj/shared/log.o terom@99: terom@16: lib/pypngtile.so : \ terom@16: lib/libpngtile.so terom@0: terom@99: bin/pngtile : \ terom@99: build/obj/pngtile/main.o \ terom@99: lib/libpngtile.so build/obj/shared/log.o terom@99: terom@99: bin/pngtile-static : \ terom@99: build/obj/pngtile/main.o \ terom@99: lib/libpngtile.a terom@2: terom@0: SRC_PATHS = $(wildcard src/*/*.c) terom@0: SRC_NAMES = $(patsubst src/%,%,$(SRC_PATHS)) terom@0: SRC_DIRS = $(dir $(SRC_NAMES)) terom@0: terom@0: .PHONY : dirs clean depend dist terom@0: terom@118: dist-clean : clean dirs terom@118: terom@0: dirs: terom@30: mkdir -p bin lib dist terom@0: mkdir -p $(SRC_DIRS:%=build/deps/%) terom@116: mkdir -p $(SRC_DIRS:%=build/obj/%) build/obj/python terom@0: terom@0: clean: terom@118: rm -f build/obj/*/*.o build/deps/*/*.d terom@122: rm -f bin/pngtile bin/pngtile-static lib/*.so lib/*.a terom@118: rm -f pngtile/*.pyc terom@122: rm -f */.*.swp */*/.*.swp terom@0: terom@0: # .h dependencies terom@0: depend: $(SRC_NAMES:%.c=build/deps/%.d) terom@0: terom@0: build/deps/%.d : src/%.c terom@0: @set -e; rm -f $@; \ terom@0: $(CC) -MM -MT __ $(CPPFLAGS) $< > $@.$$$$; \ terom@0: sed 's,__[ :]*,build/obj/$*.o $@ : ,g' < $@.$$$$ > $@; \ terom@0: rm -f $@.$$$$ terom@0: terom@0: include $(wildcard build/deps/*/*.d) terom@0: terom@0: # build (potential) library targets with specific cflags terom@0: # XXX: just build everything with -fPIC? terom@0: build/obj/shared/%.o : src/shared/%.c terom@0: $(CC) -c -fPIC $(CPPFLAGS) $(CFLAGS) $< -o $@ terom@0: terom@19: # XXX: hax in -pthread terom@0: build/obj/lib/%.o : src/lib/%.c terom@19: $(CC) -c -fPIC -pthread $(CPPFLAGS) $(CFLAGS) $< -o $@ terom@0: terom@0: # general binary objects terom@0: build/obj/%.o : src/%.c terom@0: $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ terom@0: terom@0: # output binaries terom@99: bin/% : terom@0: $(CC) $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@ terom@0: terom@0: # output libraries terom@0: lib/lib%.so : terom@0: $(CC) -shared $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@ terom@0: terom@99: lib/lib%.a : terom@99: $(AR) rc $@ $+ terom@99: terom@115: python/%.c : python/%.pyx terom@16: cython -o $@ $< terom@16: terom@116: build/obj/python/%.o : python/%.c terom@115: $(CC) -c -fPIC -I/usr/include/python2.5 $(CPPFLAGS) $(CFLAGS) $< -o $@ terom@16: terom@116: lib/py%.so : build/obj/python/py%.o terom@115: $(CC) -shared $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@ terom@16: terom@120: dist: $(DIST_DEPS) terom@118: rm -rf dist/$(DIST_NAME) terom@0: mkdir -p dist/$(DIST_NAME) terom@118: cp -rv Makefile $(DIST_RESOURCES) src/ include/ dist/$(DIST_NAME)/ terom@118: make -C dist/$(DIST_NAME) dist-clean terom@0: tar -C dist -czvf dist/$(DIST_NAME).tar.gz $(DIST_NAME) terom@0: @echo "*** Output at dist/$(DIST_NAME).tar.gz" terom@0: