Makefile
author Tero Marttila <terom@qmsk.net>
Fri, 03 Oct 2014 21:34:08 +0300
changeset 155 cda90b8d94b8
parent 132 0260aeca943c
child 156 01a05c807e82
permissions -rw-r--r--
Makefile: cleanup
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
     1
# debug
35
314aa047a910 compile with -O2 sometimes?
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
     2
CFLAGS_DBG = -g
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
     3
LDFLAGS_DBG = 
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
     4
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
     5
# profile
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
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
     9
# release
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    10
CFLAGS_REL = -O2
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    11
LDFLAGS_REL =
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
# preprocessor flags
16
6e781cf3d459 move public headers to include/, python stuff to python/ sub-dir
Tero Marttila <terom@fixme.fi>
parents: 4
diff changeset
    14
CPPFLAGS = -Iinclude -Isrc/
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    15
CFLAGS = -Wall -std=gnu99 -fPIC -pthread ${CFLAGS_REL}
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    16
LDFLAGS = ${LDFLAGS_ALL} ${LDFLAGS_REL}
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    17
LDLIBS = -lpng -lpthread
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    19
all: build lib bin lib/libpngtile.so bin/pngtile
1
f3cde3db1fef basic image/cache code compiles
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    20
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    21
# binary deps
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    22
lib/libpngtile.so : \
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    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 \
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    24
	build/shared/util.o build/shared/log.o
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    25
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    26
lib/libpngtile.a : \
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
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    30
bin/pngtile : \
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    31
	build/pngtile/main.o \
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    32
	lib/libpngtile.so build/shared/log.o
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    33
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    34
bin/pngtile-static : \
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    35
	build/pngtile/main.o \
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    36
	lib/libpngtile.a
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    37
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    38
SRC_PATHS = $(wildcard src/*/*.c)
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    39
SRC_DIRS = $(dir $(SRC_PATHS))
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    40
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    41
build:
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    42
	mkdir -p $(SRC_DIRS:src/%=build/%)
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    43
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    44
lib: 
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    45
	mkdir -p lib 
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    46
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    47
bin: 
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    48
	mkdir -p bin
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    49
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    50
# build obj files from src, with header deps
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    51
build/%.o: src/%.c
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    52
	$(CC) -c $(CPPFLAGS) $(CFLAGS) src/$*.c -o build/$*.o
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    53
	$(CC) -MM $(CPPFLAGS) src/$*.c -MT build/$*.o -MF build/$*.d
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
-include $(wildcard build/*/*.d)
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    56
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    57
# output libraries
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    58
lib/lib%.so:
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    59
	$(CC) -shared $(LDFLAGS) $+ $(LDLIBS) -o $@
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    60
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    61
lib/lib%.a:
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    62
	$(AR) rc $@ $+
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    63
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    64
# output binaries
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    65
bin/%:
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    66
	$(CC) $(LDFLAGS) $+ -o $@ $(LDLIBS)
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    67
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    68
clean:
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    69
	rm -f build/*/*.o build/*/*.d
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    70
	rm -f bin/pngtile bin/pngtile-static lib/*.so lib/*.a
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    71
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    72
# dist builds
119
56cf0a330b5b use hg id for DIST_NAME
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
    73
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
    74
DIST_DEPS = 
0260aeca943c cleanup readme, drop pypngtile bits from Makefile, fixup setup.py for pypngtile
Tero Marttila <terom@paivola.fi>
parents: 122
diff changeset
    75
DIST_RESOURCES = README pngtile/ static/ bin/
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    77
dist-clean: clean dirs
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    79
dist: dist-clean $(DIST_DEPS)
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    80
	mkdir -p dist
118
dc77a9f66f59 fix up dist
Tero Marttila <terom@fixme.fi>
parents: 116
diff changeset
    81
	rm -rf dist/$(DIST_NAME)
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    82
	mkdir -p dist/$(DIST_NAME)
118
dc77a9f66f59 fix up dist
Tero Marttila <terom@fixme.fi>
parents: 116
diff changeset
    83
	cp -rv Makefile $(DIST_RESOURCES) src/ include/  dist/$(DIST_NAME)/
dc77a9f66f59 fix up dist
Tero Marttila <terom@fixme.fi>
parents: 116
diff changeset
    84
	make -C dist/$(DIST_NAME) dist-clean
0
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
	tar -C dist -czvf dist/$(DIST_NAME).tar.gz $(DIST_NAME)
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
	@echo "*** Output at dist/$(DIST_NAME).tar.gz"
cff7fac35cc2 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
155
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    88
cda90b8d94b8 Makefile: cleanup
Tero Marttila <terom@qmsk.net>
parents: 132
diff changeset
    89
.PHONY : dirs clean depend dist-clean dist