Makefile
author Tero Marttila <terom@qmsk.net>
Sat, 04 Oct 2014 03:03:17 +0300
changeset 174 58c9e2de0dd4
parent 162 dd922b16220d
permissions -rw-r--r--
pngtile.cache: set last_modified/cache-control in 304 response as well..
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
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
     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
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
     6
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
     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
314aa047a910 compile with -O2 sometimes?
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    10
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    11
# release
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    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
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    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
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    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
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
162
dd922b16220d Makefile: fix make install on dirs
Tero Marttila <terom@qmsk.net>
parents: 158
diff changeset
    22
DIRS = build lib bin
dd922b16220d Makefile: fix make install on dirs
Tero Marttila <terom@qmsk.net>
parents: 158
diff changeset
    23
all: $(DIRS) lib/libpngtile.so bin/pngtile
1
f3cde3db1fef basic image/cache code compiles
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    24
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    25
# 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
    26
lib/libpngtile.so: \
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    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 \
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    28
	build/shared/util.o build/shared/log.o
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    29
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
    30
lib/libpngtile.a: \
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    31
	build/lib/ctx.o build/lib/image.o build/lib/cache.o build/lib/tile.o build/lib/png.o build/lib/error.o \
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    32
	build/shared/util.o build/shared/log.o
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    33
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
    34
bin/pngtile: \
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    35
	build/pngtile/main.o \
158
bf220c415cc0 Makefile: really drop libpngtile.so from bin/pngtile link
Tero Marttila <terom@qmsk.net>
parents: 156
diff changeset
    36
	build/shared/log.o
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    37
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
    38
bin/pngtile-static: \
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    39
	build/pngtile/main.o \
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    40
	lib/libpngtile.a
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    41
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    42
SRC_PATHS = $(wildcard src/*/*.c)
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    43
SRC_DIRS = $(dir $(SRC_PATHS))
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    44
162
dd922b16220d Makefile: fix make install on dirs
Tero Marttila <terom@qmsk.net>
parents: 158
diff changeset
    45
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    46
build:
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    47
	mkdir -p $(SRC_DIRS:src/%=build/%)
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    48
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    49
lib: 
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    50
	mkdir -p lib 
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    51
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    52
bin: 
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    53
	mkdir -p bin
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    54
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    55
# build obj files from src, with header deps
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    56
build/%.o: src/%.c
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    57
	$(CC) -c $(CPPFLAGS) $(CFLAGS) src/$*.c -o build/$*.o
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    58
	$(CC) -MM $(CPPFLAGS) src/$*.c -MT build/$*.o -MF build/$*.d
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    59
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    60
-include $(wildcard build/*/*.d)
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    61
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    62
# output libraries
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    63
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
    64
	$(CC) -shared $(LDFLAGS) $+ $(LDLIBS_LIB) -o $@
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    65
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    66
lib/lib%.a:
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    67
	$(AR) rc $@ $+
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    68
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    69
# output binaries
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    70
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
    71
	$(CC) $(LDFLAGS) $+ -o $@ $(LDLIBS_BIN)
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    72
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    73
clean:
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    74
	rm -f build/*/*.o build/*/*.d
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    75
	rm -f bin/pngtile bin/pngtile-static lib/*.so lib/*.a
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    76
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
    77
# 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
    78
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
    79
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
    80
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
    81
162
dd922b16220d Makefile: fix make install on dirs
Tero Marttila <terom@qmsk.net>
parents: 158
diff changeset
    82
install: $(DIRS) $(INSTALL_INCLUDE) $(INSTALL_LIB) $(INSTALL_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
    83
	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
    84
	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
    85
	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
    86
	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
    87
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    88
# dist builds
119
56cf0a330b5b use hg id for DIST_NAME
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
    89
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
    90
DIST_DEPS = 
0260aeca943c cleanup readme, drop pypngtile bits from Makefile, fixup setup.py for pypngtile
Tero Marttila <terom@paivola.fi>
parents: 122
diff changeset
    91
DIST_RESOURCES = README pngtile/ static/ bin/
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    92
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    93
dist-clean: clean dirs
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    94
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    95
dist: dist-clean $(DIST_DEPS)
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    96
	mkdir -p dist
118
dc77a9f66f59 fix up dist
Tero Marttila <terom@fixme.fi>
parents: 116
diff changeset
    97
	rm -rf dist/$(DIST_NAME)
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    98
	mkdir -p dist/$(DIST_NAME)
118
dc77a9f66f59 fix up dist
Tero Marttila <terom@fixme.fi>
parents: 116
diff changeset
    99
	cp -rv Makefile $(DIST_RESOURCES) src/ include/  dist/$(DIST_NAME)/
dc77a9f66f59 fix up dist
Tero Marttila <terom@fixme.fi>
parents: 116
diff changeset
   100
	make -C dist/$(DIST_NAME) dist-clean
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   101
	tar -C dist -czvf dist/$(DIST_NAME).tar.gz $(DIST_NAME)
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   102
	@echo "*** Output at dist/$(DIST_NAME).tar.gz"
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   103
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
   104
.PHONY : dirs clean depend dist-clean dist