Makefile
changeset 156 01a05c807e82
parent 155 cda90b8d94b8
child 158 bf220c415cc0
equal deleted inserted replaced
155:cda90b8d94b8 156:01a05c807e82
       
     1 PREFIX = opt
       
     2 
     1 # debug
     3 # debug
     2 CFLAGS_DBG = -g
     4 CFLAGS_DEV = -g
     3 LDFLAGS_DBG = 
     5 LDFLAGS_DEV = -Wl,-Rlib
     4 
     6 
     5 # profile
     7 # profile
     6 CFLAGS_PRF = -g -O2 -pg
     8 CFLAGS_PRF = -g -O2 -pg
     7 LDFLAGS_PRF = -pg
     9 LDFLAGS_PRF = -pg
     8 
    10 
     9 # release
    11 # release
    10 CFLAGS_REL = -O2
    12 CFLAGS_REL = -O2
    11 LDFLAGS_REL =
    13 LDFLAGS_REL = -Wl,-R${PREFIX}/lib
    12 
    14 
    13 # preprocessor flags
    15 # preprocessor flags
    14 CPPFLAGS = -Iinclude -Isrc/
    16 CPPFLAGS = -Iinclude -Isrc
    15 CFLAGS = -Wall -std=gnu99 -fPIC -pthread ${CFLAGS_REL}
    17 CFLAGS = -Wall -std=gnu99 -fPIC -pthread ${CFLAGS_REL}
    16 LDFLAGS = ${LDFLAGS_ALL} ${LDFLAGS_REL}
    18 LDFLAGS = -Llib ${LDFLAGS_REL}
    17 LDLIBS = -lpng -lpthread
    19 LDLIBS_LIB = -lpng -lpthread
       
    20 LDLIBS_BIN = -lpngtile
    18 
    21 
    19 all: build lib bin lib/libpngtile.so bin/pngtile
    22 all: build lib bin lib/libpngtile.so bin/pngtile
    20 
    23 
    21 # binary deps
    24 # binary deps
    22 lib/libpngtile.so : \
    25 lib/libpngtile.so: \
    23 	build/lib/ctx.o build/lib/image.o build/lib/cache.o build/lib/tile.o build/lib/png.o build/lib/error.o \
    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 \
    24 	build/shared/util.o build/shared/log.o
    27 	build/shared/util.o build/shared/log.o
    25 
    28 
    26 lib/libpngtile.a : \
    29 lib/libpngtile.a: \
    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 \
    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 \
    28 	build/shared/util.o build/shared/log.o
    31 	build/shared/util.o build/shared/log.o
    29 
    32 
    30 bin/pngtile : \
    33 bin/pngtile: \
    31 	build/pngtile/main.o \
    34 	build/pngtile/main.o \
    32 	lib/libpngtile.so build/shared/log.o
    35 	lib/libpngtile.so build/shared/log.o
    33 
    36 
    34 bin/pngtile-static : \
    37 bin/pngtile-static: \
    35 	build/pngtile/main.o \
    38 	build/pngtile/main.o \
    36 	lib/libpngtile.a
    39 	lib/libpngtile.a
    37 
    40 
    38 SRC_PATHS = $(wildcard src/*/*.c)
    41 SRC_PATHS = $(wildcard src/*/*.c)
    39 SRC_DIRS = $(dir $(SRC_PATHS))
    42 SRC_DIRS = $(dir $(SRC_PATHS))
    54 
    57 
    55 -include $(wildcard build/*/*.d)
    58 -include $(wildcard build/*/*.d)
    56 
    59 
    57 # output libraries
    60 # output libraries
    58 lib/lib%.so:
    61 lib/lib%.so:
    59 	$(CC) -shared $(LDFLAGS) $+ $(LDLIBS) -o $@
    62 	$(CC) -shared $(LDFLAGS) $+ $(LDLIBS_LIB) -o $@
    60 
    63 
    61 lib/lib%.a:
    64 lib/lib%.a:
    62 	$(AR) rc $@ $+
    65 	$(AR) rc $@ $+
    63 
    66 
    64 # output binaries
    67 # output binaries
    65 bin/%:
    68 bin/%:
    66 	$(CC) $(LDFLAGS) $+ -o $@ $(LDLIBS)
    69 	$(CC) $(LDFLAGS) $+ -o $@ $(LDLIBS_BIN)
    67 
    70 
    68 clean:
    71 clean:
    69 	rm -f build/*/*.o build/*/*.d
    72 	rm -f build/*/*.o build/*/*.d
    70 	rm -f bin/pngtile bin/pngtile-static lib/*.so lib/*.a
    73 	rm -f bin/pngtile bin/pngtile-static lib/*.so lib/*.a
       
    74 
       
    75 # install
       
    76 INSTALL_INCLUDE = include/pngtile.h
       
    77 INSTALL_LIB = lib/libpngtile.so
       
    78 INSTALL_BIN = bin/pngtile
       
    79 
       
    80 install: $(INSTALL_INCLUDE) $(INSTALL_LIB) $(INSTALL_BIN)
       
    81 	install -d $(PREFIX)/bin $(PREFIX)/lib $(PREFIX)/include
       
    82 	install -t $(PREFIX)/include $(INSTALL_INCLUDE)
       
    83 	install -t $(PREFIX)/lib $(INSTALL_LIB)
       
    84 	install -t $(PREFIX)/bin $(INSTALL_BIN)
    71 
    85 
    72 # dist builds
    86 # dist builds
    73 DIST_NAME = pngtile-${shell hg id -i}
    87 DIST_NAME = pngtile-${shell hg id -i}
    74 DIST_DEPS = 
    88 DIST_DEPS = 
    75 DIST_RESOURCES = README pngtile/ static/ bin/
    89 DIST_RESOURCES = README pngtile/ static/ bin/
    83 	cp -rv Makefile $(DIST_RESOURCES) src/ include/  dist/$(DIST_NAME)/
    97 	cp -rv Makefile $(DIST_RESOURCES) src/ include/  dist/$(DIST_NAME)/
    84 	make -C dist/$(DIST_NAME) dist-clean
    98 	make -C dist/$(DIST_NAME) dist-clean
    85 	tar -C dist -czvf dist/$(DIST_NAME).tar.gz $(DIST_NAME)
    99 	tar -C dist -czvf dist/$(DIST_NAME).tar.gz $(DIST_NAME)
    86 	@echo "*** Output at dist/$(DIST_NAME).tar.gz"
   100 	@echo "*** Output at dist/$(DIST_NAME).tar.gz"
    87 
   101 
    88 
       
    89 .PHONY : dirs clean depend dist-clean dist
   102 .PHONY : dirs clean depend dist-clean dist