Makefile
changeset 125 66a53ca73e91
parent 122 8e4ff23e33f5
child 132 0260aeca943c
equal deleted inserted replaced
124:a5e66a48b959 125:66a53ca73e91
    18 
    18 
    19 # libraries to use
    19 # libraries to use
    20 LOADLIBES = -lpng -lpthread
    20 LOADLIBES = -lpng -lpthread
    21 
    21 
    22 # output name
    22 # output name
    23 DIST_NAME = pngtile-0.2
    23 DIST_NAME = pngtile-${shell hg id -i}
    24 DIST_RESOURCES = README $(shell "echo python/*.{py,pyx}")
    24 DIST_DEPS = python/pypngtile.c
       
    25 DIST_RESOURCES = README python/ pngtile/ static/ bin/
    25 
    26 
    26 all: depend lib/libpngtile.so bin/pngtile
    27 all: depend lib/libpngtile.so bin/pngtile lib/pypngtile.so
    27 
    28 
    28 lib/libpngtile.so : \
    29 lib/libpngtile.so : \
    29 	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 \
    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 \
    30 	build/obj/shared/util.o build/obj/shared/log.o
    31 	build/obj/shared/util.o build/obj/shared/log.o
    31 
    32 
    48 SRC_NAMES = $(patsubst src/%,%,$(SRC_PATHS))
    49 SRC_NAMES = $(patsubst src/%,%,$(SRC_PATHS))
    49 SRC_DIRS = $(dir $(SRC_NAMES))
    50 SRC_DIRS = $(dir $(SRC_NAMES))
    50 
    51 
    51 .PHONY : dirs clean depend dist
    52 .PHONY : dirs clean depend dist
    52 
    53 
       
    54 dist-clean : clean dirs
       
    55 
    53 dirs: 
    56 dirs: 
    54 	mkdir -p bin lib dist
    57 	mkdir -p bin lib dist
    55 	mkdir -p $(SRC_DIRS:%=build/deps/%)
    58 	mkdir -p $(SRC_DIRS:%=build/deps/%)
    56 	mkdir -p $(SRC_DIRS:%=build/obj/%)
    59 	mkdir -p $(SRC_DIRS:%=build/obj/%) build/obj/python
    57 
    60 
    58 clean:
    61 clean:
    59 	rm -f build/obj/*/*.o build/deps/*/*.d
    62 	rm -f build/obj/*/*.o build/deps/*/*.d
    60 	rm -f bin/{pngtile,pngtile-static} lib/libpngtile.{a,so} run/*
    63 	rm -f bin/pngtile bin/pngtile-static lib/*.so lib/*.a
    61 	rm -rf dist/*
    64 	rm -f pngtile/*.pyc 
       
    65 	rm -f */.*.swp */*/.*.swp
    62 
    66 
    63 # .h dependencies
    67 # .h dependencies
    64 depend: $(SRC_NAMES:%.c=build/deps/%.d)
    68 depend: $(SRC_NAMES:%.c=build/deps/%.d)
    65 
    69 
    66 build/deps/%.d : src/%.c
    70 build/deps/%.d : src/%.c
    93 	$(CC) -shared $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@
    97 	$(CC) -shared $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@
    94 
    98 
    95 lib/lib%.a :
    99 lib/lib%.a :
    96 	$(AR) rc $@ $+
   100 	$(AR) rc $@ $+
    97 
   101 
    98 build/pyx/%.c : src/py/%.pyx
   102 python/%.c : python/%.pyx
    99 	cython -o $@ $<
   103 	cython -o $@ $<
   100 
   104 
   101 build/obj/py/%.o : build/pyx/%.c
   105 build/obj/python/%.o : python/%.c
   102 	$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
   106 	$(CC) -c -fPIC -I/usr/include/python2.5 $(CPPFLAGS) $(CFLAGS) $< -o $@
   103 
   107 
   104 lib/py%.so : build/obj/py/%.o
   108 lib/py%.so : build/obj/python/py%.o
   105 	$(CC) -shared $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@
   109 	$(CC) -shared $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@
   106 
   110 
   107 dist:
   111 dist: $(DIST_DEPS)
       
   112 	rm -rf dist/$(DIST_NAME)
   108 	mkdir -p dist/$(DIST_NAME)
   113 	mkdir -p dist/$(DIST_NAME)
   109 	cp -rv Makefile $(DIST_RESOURCES) src/ include/ dist/$(DIST_NAME)/
   114 	cp -rv Makefile $(DIST_RESOURCES) src/ include/  dist/$(DIST_NAME)/
   110 	rm dist/$(DIST_NAME)/src/*/.*.sw[op]
   115 	make -C dist/$(DIST_NAME) dist-clean
   111 	make -C dist/$(DIST_NAME) dirs
       
   112 	tar -C dist -czvf dist/$(DIST_NAME).tar.gz $(DIST_NAME)
   116 	tar -C dist -czvf dist/$(DIST_NAME).tar.gz $(DIST_NAME)
   113 	@echo "*** Output at dist/$(DIST_NAME).tar.gz"
   117 	@echo "*** Output at dist/$(DIST_NAME).tar.gz"
   114 
   118