Mercurial > molko
comparison Makefile @ 90:a6d6497adb60
make: cleanup a bit and add appropriate dependencies
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 12 Mar 2020 20:31:50 +0100 |
parents | 30baadb6f6a2 |
children | d4a72fa16225 |
comparison
equal
deleted
inserted
replaced
89:30baadb6f6a2 | 90:a6d6497adb60 |
---|---|
17 # | 17 # |
18 | 18 |
19 .POSIX: | 19 .POSIX: |
20 | 20 |
21 CC= cc | 21 CC= cc |
22 CFLAGS= -O0 -std=c11 -Wall -Wextra -g -ggdb | 22 AR= ar |
23 CFLAGS= -O0 -std=c11 -g | |
23 # Use this instead to build a release. | 24 # Use this instead to build a release. |
24 # CFLAGS= -O3 -DNDEBUG -std=c11 -Wall -Wextra | 25 # CFLAGS= -O3 -DNDEBUG -std=c11 -Wall -Wextra |
25 PROG= molko | 26 PROG= molko |
26 LIB= libmolko.a | 27 LIB= libmolko.a |
27 | 28 |
31 SQLITE_FLAGS= -DSQLITE_THREADSAFE=0 \ | 32 SQLITE_FLAGS= -DSQLITE_THREADSAFE=0 \ |
32 -DSQLITE_OMIT_LOAD_EXTENSION \ | 33 -DSQLITE_OMIT_LOAD_EXTENSION \ |
33 -DSQLITE_OMIT_DEPRECATED \ | 34 -DSQLITE_OMIT_DEPRECATED \ |
34 -DSQLITE_DEFAULT_FOREIGN_KEYS=1 | 35 -DSQLITE_DEFAULT_FOREIGN_KEYS=1 |
35 | 36 |
36 CORE_SRCS= src/core/animation.c \ | 37 CORE_SRCS= src/core/animation.c \ |
37 src/core/clock.c \ | 38 src/core/clock.c \ |
38 src/core/debug.c \ | 39 src/core/debug.c \ |
39 src/core/error.c \ | 40 src/core/error.c \ |
40 src/core/event.c \ | 41 src/core/event.c \ |
41 src/core/font.c \ | 42 src/core/font.c \ |
42 src/core/game.c \ | 43 src/core/game.c \ |
43 src/core/image.c \ | 44 src/core/image.c \ |
44 src/core/inhibit.c \ | 45 src/core/inhibit.c \ |
45 src/core/inventory.c \ | 46 src/core/inventory.c \ |
46 src/core/map.c \ | 47 src/core/map.c \ |
47 src/core/map_state.c \ | 48 src/core/map_state.c \ |
48 src/core/message.c \ | 49 src/core/message.c \ |
49 src/core/painter.c \ | 50 src/core/painter.c \ |
50 src/core/panic.c \ | 51 src/core/panic.c \ |
51 src/core/save.c \ | 52 src/core/save.c \ |
52 src/core/script.c \ | 53 src/core/script.c \ |
53 src/core/sprite.c \ | 54 src/core/sprite.c \ |
54 src/core/sys.c \ | 55 src/core/sys.c \ |
55 src/core/texture.c \ | 56 src/core/texture.c \ |
56 src/core/util.c \ | 57 src/core/util.c \ |
57 src/core/walksprite.c \ | 58 src/core/walksprite.c \ |
58 src/core/wait.c \ | 59 src/core/wait.c \ |
59 src/core/window.c | 60 src/core/window.c |
60 CORE_OBJS= ${CORE_SRCS:.c=.o} | 61 CORE_OBJS= ${CORE_SRCS:.c=.o} |
61 CORE_DEPS= ${CORE_SRCS:.c=.d} | 62 CORE_DEPS= ${CORE_SRCS:.c=.d} |
62 | 63 |
63 ADV_SRCS= src/adventure/main.c \ | 64 ADV_SRCS= src/adventure/main.c \ |
64 src/adventure/panic_state.c \ | 65 src/adventure/panic_state.c \ |
65 src/adventure/splashscreen_state.c \ | 66 src/adventure/splashscreen_state.c \ |
66 src/adventure/mainmenu_state.c | 67 src/adventure/mainmenu_state.c |
67 ADV_OBJS= ${ADV_SRCS:.c=.o} | 68 ADV_OBJS= ${ADV_SRCS:.c=.o} |
68 ADV_DEPS= ${ADV_SRCS:.c=.d} | 69 ADV_DEPS= ${ADV_SRCS:.c=.d} |
69 | 70 |
70 PREFIX= /usr/local | 71 PREFIX= /usr/local |
75 SDL_LDFLAGS= `pkg-config --libs sdl2 SDL2_image SDL2_mixer SDL2_ttf` | 76 SDL_LDFLAGS= `pkg-config --libs sdl2 SDL2_image SDL2_mixer SDL2_ttf` |
76 | 77 |
77 JANSSON_CFLAGS= `pkg-config --cflags jansson` | 78 JANSSON_CFLAGS= `pkg-config --cflags jansson` |
78 JANSSON_LDFLAGS=`pkg-config --libs jansson` | 79 JANSSON_LDFLAGS=`pkg-config --libs jansson` |
79 | 80 |
80 TESTS= tests/test-color.c \ | 81 TESTS= tests/test-color.c \ |
81 tests/test-error.c \ | 82 tests/test-error.c \ |
82 tests/test-inventory.c \ | 83 tests/test-inventory.c \ |
83 tests/test-map.c \ | 84 tests/test-map.c \ |
84 tests/test-panic.c \ | 85 tests/test-panic.c \ |
85 tests/test-save.c \ | 86 tests/test-save.c \ |
86 tests/test-script.c | 87 tests/test-script.c |
87 TESTS_INCS= -I extern/libgreatest -I src/core ${SDL_CFLAGS} | 88 TESTS_INCS= -I extern/libgreatest -I src/core ${SDL_CFLAGS} |
88 TESTS_LIBS= ${LIB} ${SDL_LDFLAGS} ${LDFLAGS} | 89 TESTS_PRGS= ${TESTS:.c=} |
89 TESTS_OBJS= ${TESTS:.c=} | 90 TESTS_OBJS= ${TESTS:.c=.o} |
90 TESTS_DEPS= ${TESTS:.c=.d} | 91 TESTS_DEPS= ${TESTS:.c=.d} |
91 | 92 |
92 TOOLS= tools/molko-map.c | 93 TOOLS= tools/molko-map.c |
93 TOOLS_OBJS= ${TOOLS:.c=} | 94 TOOLS_PRGS= ${TOOLS:.c=} |
94 TOOLS_DEPS= ${TOOLS:.c=.d} | 95 TOOLS_DEPS= ${TOOLS:.c=.d} |
95 | 96 |
96 FLAGS= -MMD -D_XOPEN_SOURCE=700 | 97 MY_CFLAGS= -D_XOPEN_SOURCE=700 \ |
97 DEFINES= -DPREFIX=\""${PREFIX}"\" \ | 98 -DPREFIX=\""${PREFIX}"\" \ |
98 -DBINDIR=\""${BINDIR}"\" \ | 99 -DBINDIR=\""${BINDIR}"\" \ |
99 -DSHAREDIR=\""${SHAREDIR}"\" | 100 -DSHAREDIR=\""${SHAREDIR}"\" \ |
100 INCLUDES= -I extern/libsqlite -I src/core -I src/adventure | 101 -Iextern/libsqlite \ |
102 -Iextern/libgreatest \ | |
103 -Isrc/core \ | |
104 -Isrc/adventure | |
101 | 105 |
102 .SUFFIXES: | 106 .SUFFIXES: |
103 .SUFFIXES: .c .o | 107 .SUFFIXES: .o .c |
104 | 108 |
105 all: ${PROG} | 109 all: ${PROG} |
106 | 110 |
107 -include ${CORE_DEPS} ${ADV_DEPS} ${TESTS_DEPS} ${TOOLS_DEPS} | 111 -include ${CORE_DEPS} ${ADV_DEPS} ${TESTS_DEPS} ${TOOLS_DEPS} |
108 | 112 |
109 .c.o: | 113 .c.o: |
110 ${CC} ${FLAGS} ${DEFINES} ${INCLUDES} ${SDL_CFLAGS} ${CFLAGS} -MMD -c $< -o $@ | 114 ${CC} ${MY_CFLAGS} ${SDL_CFLAGS} ${CFLAGS} -MMD -c $< -o $@ |
111 | 115 |
112 .c: | 116 .c: |
113 ${CC} ${FLAGS} ${TESTS_INCS} -o $@ ${CFLAGS} $< ${TESTS_LIBS} ${SQLITE_LIB} | 117 ${CC} ${MY_CFLAGS} -o $@ ${CFLAGS} $< ${LIB} ${SQLITE_LIB} ${SDL_LDFLAGS} ${LDFLAGS} |
118 | |
119 .o: | |
120 ${CC} -o $@ $< ${LIB} ${SQLITE_LIB} ${SDL_LDFLAGS} ${LDFLAGS} | |
114 | 121 |
115 ${SQLITE_OBJ}: ${SQLITE_SRC} | 122 ${SQLITE_OBJ}: ${SQLITE_SRC} |
116 ${CC} ${CFLAGS} ${SQLITE_FLAGS} -c ${SQLITE_SRC} -o $@ | 123 ${CC} ${CFLAGS} ${SQLITE_FLAGS} -c ${SQLITE_SRC} -o $@ |
117 | 124 |
118 ${SQLITE_LIB}: ${SQLITE_OBJ} | 125 ${SQLITE_LIB}: ${SQLITE_OBJ} |
119 ${AR} -rc $@ ${SQLITE_OBJ} | 126 ${AR} -rc $@ ${SQLITE_OBJ} |
120 | 127 |
121 ${LIB}: ${CORE_OBJS} | 128 ${LIB}: ${CORE_OBJS} ${SQLITE_LIB} |
122 ${AR} -rc $@ ${CORE_OBJS} | 129 ${AR} -rc $@ ${CORE_OBJS} |
123 | 130 |
124 ${PROG}: ${LIB} ${ADV_OBJS} ${SQLITE_LIB} | 131 ${PROG}: ${LIB} ${ADV_OBJS} |
125 ${CC} -o $@ ${ADV_OBJS} ${LIB} ${SQLITE_LIB} ${SDL_LDFLAGS} ${LDFLAGS} | 132 ${CC} -o $@ ${ADV_OBJS} ${LIB} ${SQLITE_LIB} ${SDL_LDFLAGS} ${LDFLAGS} |
126 | 133 |
127 ${TESTS_OBJS}: ${LIB} ${SQLITE_LIB} | 134 ${TESTS_OBJS}: ${LIB} |
128 | 135 |
129 tests: ${TESTS_OBJS} | 136 tests: ${TESTS_PRGS} |
130 for t in $?; do ./$$t; done | 137 for t in ${TESTS_PRGS}; do ./$$t; done |
131 | 138 |
132 tools: ${TOOLS_OBJS} | 139 tools: ${TOOLS_PRGS} |
133 | 140 |
141 # Custom rule: does not depend on anything else than jansson. | |
134 tools/molko-map: tools/molko-map.c | 142 tools/molko-map: tools/molko-map.c |
135 ${CC} -o $@ $< ${CFLAGS} ${JANSSON_CFLAGS} ${JANSSON_LDFLAGS} | 143 ${CC} ${MY_CFLAGS} -o $@ $< ${CFLAGS} ${JANSSON_CFLAGS} ${JANSSON_LDFLAGS} |
136 | 144 |
137 doxygen: | 145 doxygen: |
138 doxygen doxygen/Doxyfile | 146 doxygen doxygen/Doxyfile |
147 | |
148 everything: ${PROG} ${TOOLS_PRGS} ${TESTS_PRGS} | |
139 | 149 |
140 install: | 150 install: |
141 mkdir -p ${DESTDIR}${BINDIR} | 151 mkdir -p ${DESTDIR}${BINDIR} |
142 cp molko ${DESTDIR}${BINDIR} | 152 cp molko ${DESTDIR}${BINDIR} |
143 chmod 755 ${DESTDIR}${BINDIR}/molko | 153 chmod 755 ${DESTDIR}${BINDIR}/molko |
148 rm -rf doxygen/html doxygen/man | 158 rm -rf doxygen/html doxygen/man |
149 rm -f ${SQLITE_OBJ} ${SQLITE_LIB} | 159 rm -f ${SQLITE_OBJ} ${SQLITE_LIB} |
150 rm -f ${LIB} ${PROG} | 160 rm -f ${LIB} ${PROG} |
151 rm -f ${CORE_OBJS} ${CORE_DEPS} | 161 rm -f ${CORE_OBJS} ${CORE_DEPS} |
152 rm -f ${ADV_OBJS} ${ADV_DEPS} | 162 rm -f ${ADV_OBJS} ${ADV_DEPS} |
153 rm -f ${TESTS_OBJS} ${TESTS_DEPS} | 163 rm -f ${TESTS_PRGS} ${TESTS_OBJS} ${TESTS_DEPS} |
154 rm -f ${TOOLS_OBJS} ${TOOLS_DEPS} | 164 rm -f ${TOOLS_PRGS} ${TOOLS_DEPS} |
155 | 165 |
156 .PHONY: all clean doxygen tests tools | 166 .PHONY: all clean doxygen everything tests tools |