Mercurial > molko
comparison GNUmakefile @ 414:6947c1fefe5c
misc: extreme cleanup
- Remove of Javascript binding for many reasons.
- Put examples and tests in GNU make.
- Create a library with shared example code.
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 09 Oct 2022 13:51:03 +0200 |
parents | 222045c513ec |
children | 2862526f1fc9 |
comparison
equal
deleted
inserted
replaced
413:222045c513ec | 414:6947c1fefe5c |
---|---|
1 -include config.mk | 1 -include config.mk |
2 | 2 |
3 # Toolchain options. | 3 # Toolchain options. |
4 CC ?= clang | 4 CC ?= clang |
5 CFLAGS ?= -g -O0 | 5 CFLAGS ?= -g -O0 |
6 BCC ?= bcc | 6 BCC ?= src/tools/bcc/mlk-bcc |
7 BCC_OPTS ?= -cs | 7 BCC_OPTS ?= -cs |
8 MD ?= -MD | 8 MD ?= -MD |
9 | 9 |
10 # User options. | 10 # User options. |
11 WITH_ZIP := yes | 11 WITH_ZIP := yes |
23 SDL2_TTF_INCS ?= $(shell pkg-config --cflags SDL2_ttf) | 23 SDL2_TTF_INCS ?= $(shell pkg-config --cflags SDL2_ttf) |
24 SDL2_TTF_LIBS ?= $(shell pkg-config --libs SDL2_ttf) | 24 SDL2_TTF_LIBS ?= $(shell pkg-config --libs SDL2_ttf) |
25 | 25 |
26 SNDFILE_INCS ?= $(shell pkg-config --cflags sndfile) | 26 SNDFILE_INCS ?= $(shell pkg-config --cflags sndfile) |
27 SNDFILE_LIBS ?= $(shell pkg-config --libs sndfile) | 27 SNDFILE_LIBS ?= $(shell pkg-config --libs sndfile) |
28 | |
29 JANSSON_INCS ?= $(shell pkg-config --cflags jansson) | |
30 JANSSON_LIBS ?= $(shell pkg-config --libs jansson) | |
28 | 31 |
29 ifeq ($(WITH_ZSTD),yes) | 32 ifeq ($(WITH_ZSTD),yes) |
30 ZSTD_INCS ?= $(shell pkg-config --cflags libzstd) | 33 ZSTD_INCS ?= $(shell pkg-config --cflags libzstd) |
31 ZSTD_LIBS ?= $(shell pkg-config --libs libzstd) | 34 ZSTD_LIBS ?= $(shell pkg-config --libs libzstd) |
32 endif | 35 endif |
65 | 68 |
66 ifeq ($(WITH_ZIP),yes) | 69 ifeq ($(WITH_ZIP),yes) |
67 INCS += $(ZIP_INCS) | 70 INCS += $(ZIP_INCS) |
68 endif | 71 endif |
69 | 72 |
70 OPTS := -Wall -Wextra -Wno-format-truncation -pipe | 73 OPTS := -Wall -Wextra -pipe |
71 | 74 |
72 ifeq ($(OS),Darwin) | 75 ifeq ($(OS),Darwin) |
73 OPTS += -Wno-deprecated-declarations | 76 OPTS += -Wno-deprecated-declarations |
74 endif | 77 endif |
75 | 78 |
77 OPTS += -g -O0 | 80 OPTS += -g -O0 |
78 else | 81 else |
79 OPTS += -DNDEBUG -O3 | 82 OPTS += -DNDEBUG -O3 |
80 endif | 83 endif |
81 | 84 |
85 # Meta variable that contains all libraries, used for executables and tests. | |
86 LIBMLK = $(LIBMLK_RPG) \ | |
87 $(LIBMLK_UI) \ | |
88 $(LIBMLK_CORE) \ | |
89 $(LIBMLK_PORT) \ | |
90 $(LIBMLK_SQLITE) \ | |
91 $(MATH_LIBS) \ | |
92 $(SDL2_LIBS) \ | |
93 $(SDL2_IMAGE_LIBS) \ | |
94 $(SDL2_TTF_LIBS) \ | |
95 $(OPENAL_LIBS) \ | |
96 $(SNDFILE_LIBS) | |
97 | |
98 ifeq ($(WITH_ZSTD),yes) | |
99 LIBMLK += $(ZSTD_LIBS) | |
100 endif | |
101 | |
102 ifeq ($(WITH_ZIP),yes) | |
103 LIBMLK += $(LIBZIP_LIBS) | |
104 endif | |
105 | |
82 .DEFAULT_GOAL := all | 106 .DEFAULT_GOAL := all |
83 | 107 |
84 .SUFFIXES: | 108 .SUFFIXES: |
85 .SUFFIXES: .c .h .o .sql .ttf | 109 .SUFFIXES: .c .h .o .ogg .png .sql .ttf .wav |
86 | 110 |
87 .c.o: | 111 .c.o: |
88 $(CC) $(OPTS) $(INCS) $(DEFS) $(CFLAGS) $(MD) -c $< -o $@ | 112 $(CC) $(OPTS) $(INCS) $(DEFS) $(CFLAGS) $(MD) -c $< -o $@ |
89 | 113 |
90 .c: | 114 .c: |
91 $(CC) $(OPTS) $(INCS) $(DEFS) $(CFLAGS) $< -o $@ $(LIBS) $(LDFLAGS) | 115 $(CC) $(OPTS) $(INCS) $(DEFS) $(CFLAGS) $< -o $@ $(OBJS) $(LIBS) $(LDFLAGS) |
92 | 116 |
93 .ttf.h .sql.h: | 117 .ogg.h .png.h .ttf.h .sql.h .wav.h: |
94 $(BCC) $(BCC_OPTS) $< assets_$(basename $(<F)) > $@ | 118 $(BCC) $(BCC_OPTS) $< assets_$(basename $(<F)) > $@ |
95 | 119 |
96 %.a: | 120 %.a: |
97 $(AR) -rc $@ $(OBJS) | 121 $(AR) -rc $@ $(OBJS) |
98 | 122 |
130 | 154 |
131 all: $(LIBMLK_PORT) | 155 all: $(LIBMLK_PORT) |
132 | 156 |
133 # }}} | 157 # }}} |
134 | 158 |
159 # {{{ mlk-bcc | |
160 | |
161 MLK_BCC := src/tools/bcc/mlk-bcc | |
162 | |
163 $(MLK_BCC): INCS := | |
164 | |
165 all: $(MLK_BCC) | |
166 | |
167 # }}} | |
168 | |
169 # {{{ mlk-tileset | |
170 | |
171 MLK_TILESET := src/tools/tileset/mlk-tileset | |
172 | |
173 $(MLK_TILESET): INCS := $(JANSSON_INCS) | |
174 $(MLK_TILESET): LIBS := $(JANSSON_LIBS) | |
175 | |
176 all: $(MLK_TILESET) | |
177 | |
178 # }}} | |
179 | |
180 # {{{ mlk-map | |
181 | |
182 MLK_MAP := src/tools/map/mlk-map | |
183 | |
184 $(MLK_MAP): INCS := -Isrc/libmlk-port $(JANSSON_INCS) | |
185 $(MLK_MAP): LIBS := $(LIBMLK_PORT) $(JANSSON_LIBS) | |
186 $(MLK_MAP): $(LIBMLK_PORT) | |
187 | |
188 all: $(MLK_MAP) | |
189 | |
190 # }}} | |
191 | |
135 # {{{ libmlk-sqlite | 192 # {{{ libmlk-sqlite |
136 | 193 |
137 LIBMLK_SQLITE := libmlk-sqlite.a | 194 LIBMLK_SQLITE := libmlk-sqlite.a |
138 LIBMLK_SQLITE_SRCS := extern/libsqlite/sqlite3.c | 195 LIBMLK_SQLITE_SRCS := extern/libsqlite/sqlite3.c |
139 LIBMLK_SQLITE_OBJS := $(LIBMLK_SQLITE_SRCS:.c=.o) | 196 LIBMLK_SQLITE_OBJS := $(LIBMLK_SQLITE_SRCS:.c=.o) |
140 LIBMLK_SQLITE_DEPS := $(LIBMLK_SQLITE_SRCS:.c=.d) | 197 LIBMLK_SQLITE_DEPS := $(LIBMLK_SQLITE_SRCS:.c=.d) |
141 | 198 |
142 -include $(LIBMLK_SQLITE_DEPS) | 199 -include $(LIBMLK_SQLITE_DEPS) |
143 | 200 |
144 $(LIBMLK_SQLITE): INCS := | 201 $(LIBMLK_SQLITE): private INCS := |
145 $(LIBMLK_SQLITE): OBJS := $(LIBMLK_SQLITE_OBJS) | 202 $(LIBMLK_SQLITE): private OBJS := $(LIBMLK_SQLITE_OBJS) |
146 $(LIBMLK_SQLITE): $(LIBMLK_SQLITE_OBJS) | 203 $(LIBMLK_SQLITE): $(LIBMLK_SQLITE_OBJS) |
147 | 204 |
148 all: $(LIBMLK_SQLITE) | 205 all: $(LIBMLK_SQLITE) |
149 | 206 |
150 # }}} | 207 # }}} |
187 LIBMLK_CORE_DEPS := $(LIBMLK_CORE_SRCS:.c=.d) | 244 LIBMLK_CORE_DEPS := $(LIBMLK_CORE_SRCS:.c=.d) |
188 | 245 |
189 -include $(LIBMLK_CORE_DEPS) | 246 -include $(LIBMLK_CORE_DEPS) |
190 | 247 |
191 $(LIBMLK_CORE_OBJS): config.h | 248 $(LIBMLK_CORE_OBJS): config.h |
192 $(LIBMLK_CORE): OBJS := $(LIBMLK_CORE_OBJS) | 249 $(LIBMLK_CORE): private OBJS := $(LIBMLK_CORE_OBJS) |
193 $(LIBMLK_CORE): $(LIBMLK_CORE_OBJS) | 250 $(LIBMLK_CORE): $(LIBMLK_CORE_OBJS) |
194 | 251 |
195 all: $(LIBMLK_CORE) | 252 all: $(LIBMLK_CORE) |
196 | 253 |
197 # }}} | 254 # }}} |
215 LIBMLK_UI_DATA_SRCS := src/libmlk-ui/assets/fonts/opensans-light.ttf \ | 272 LIBMLK_UI_DATA_SRCS := src/libmlk-ui/assets/fonts/opensans-light.ttf \ |
216 src/libmlk-ui/assets/fonts/opensans-medium.ttf \ | 273 src/libmlk-ui/assets/fonts/opensans-medium.ttf \ |
217 src/libmlk-ui/assets/fonts/opensans-regular.ttf | 274 src/libmlk-ui/assets/fonts/opensans-regular.ttf |
218 LIBMLK_UI_DATA_OBJS := $(addsuffix .h,$(basename $(LIBMLK_UI_DATA_SRCS))) | 275 LIBMLK_UI_DATA_OBJS := $(addsuffix .h,$(basename $(LIBMLK_UI_DATA_SRCS))) |
219 | 276 |
277 $(LIBMLK_UI_DATA_OBJS): $(MLK_BCC) | |
278 | |
220 $(LIBMLK_UI_OBJS): $(LIBMLK_UI_DATA_OBJS) | 279 $(LIBMLK_UI_OBJS): $(LIBMLK_UI_DATA_OBJS) |
280 | |
221 $(LIBMLK_UI): $(LIBMLK_UI_OBJS) | 281 $(LIBMLK_UI): $(LIBMLK_UI_OBJS) |
222 $(LIBMLK_UI): OBJS := $(LIBMLK_UI_OBJS) | 282 $(LIBMLK_UI): private OBJS := $(LIBMLK_UI_OBJS) |
223 | 283 |
224 all: $(LIBMLK_UI) | 284 all: $(LIBMLK_UI) |
225 | 285 |
226 # }}} | 286 # }}} |
227 | 287 |
266 src/libmlk-rpg/rpg/spell.c \ | 326 src/libmlk-rpg/rpg/spell.c \ |
267 src/libmlk-rpg/rpg/team.c \ | 327 src/libmlk-rpg/rpg/team.c \ |
268 src/libmlk-rpg/rpg/tileset-file.c \ | 328 src/libmlk-rpg/rpg/tileset-file.c \ |
269 src/libmlk-rpg/rpg/tileset.c \ | 329 src/libmlk-rpg/rpg/tileset.c \ |
270 src/libmlk-rpg/rpg/walksprite.c | 330 src/libmlk-rpg/rpg/walksprite.c |
271 | |
272 LIBMLK_RPG_OBJS := $(LIBMLK_RPG_SRCS:.c=.o) | 331 LIBMLK_RPG_OBJS := $(LIBMLK_RPG_SRCS:.c=.o) |
273 LIBMLK_RPG_DEPS := $(LIBMLK_RPG_SRCS:.c=.d) | 332 LIBMLK_RPG_DEPS := $(LIBMLK_RPG_SRCS:.c=.d) |
333 | |
274 LIBMLK_RPG_DATA_SRCS := src/libmlk-rpg/assets/sql/character-load.sql \ | 334 LIBMLK_RPG_DATA_SRCS := src/libmlk-rpg/assets/sql/character-load.sql \ |
275 src/libmlk-rpg/assets/sql/character-save.sql \ | 335 src/libmlk-rpg/assets/sql/character-save.sql \ |
276 src/libmlk-rpg/assets/sql/init.sql \ | 336 src/libmlk-rpg/assets/sql/init.sql \ |
277 src/libmlk-rpg/assets/sql/property-load.sql \ | 337 src/libmlk-rpg/assets/sql/property-load.sql \ |
278 src/libmlk-rpg/assets/sql/property-remove.sql \ | 338 src/libmlk-rpg/assets/sql/property-remove.sql \ |
282 src/libmlk-rpg/assets/sql/quest-step-load.sql \ | 342 src/libmlk-rpg/assets/sql/quest-step-load.sql \ |
283 src/libmlk-rpg/assets/sql/quest-step-save.sql | 343 src/libmlk-rpg/assets/sql/quest-step-save.sql |
284 LIBMLK_RPG_DATA_OBJS := $(addsuffix .h,$(basename $(LIBMLK_RPG_DATA_SRCS))) | 344 LIBMLK_RPG_DATA_OBJS := $(addsuffix .h,$(basename $(LIBMLK_RPG_DATA_SRCS))) |
285 | 345 |
286 $(LIBMLK_RPG_DATA_OBJS): BCC_OPTS := -cs0 | 346 $(LIBMLK_RPG_DATA_OBJS): BCC_OPTS := -cs0 |
347 $(LIBMLK_RPG_DATA_OBJS): $(MLK_BCC) | |
348 | |
287 $(LIBMLK_RPG_OBJS): $(LIBMLK_RPG_DATA_OBJS) | 349 $(LIBMLK_RPG_OBJS): $(LIBMLK_RPG_DATA_OBJS) |
350 | |
288 $(LIBMLK_RPG): $(LIBMLK_RPG_OBJS) | 351 $(LIBMLK_RPG): $(LIBMLK_RPG_OBJS) |
289 $(LIBMLK_RPG): OBJS := $(LIBMLK_RPG_OBJS) | 352 $(LIBMLK_RPG): private OBJS := $(LIBMLK_RPG_OBJS) |
290 | 353 |
291 all: $(LIBMLK_RPG) | 354 all: $(LIBMLK_RPG) |
292 | 355 |
293 # }}} | 356 # }}} |
294 | 357 |
295 # Meta variable that contains all libraries, used for executables and tests. | 358 # {{{ libmlk-example |
296 LIBMLK := $(LIBMLK_RPG) \ | 359 |
297 $(LIBMLK_UI) \ | 360 LIBMLK_EXAMPLE := libmlk-example.a |
298 $(LIBMLK_CORE) \ | 361 LIBMLK_EXAMPLE_SRCS := examples/example/character-john.c \ |
299 $(LIBMLK_PORT) \ | 362 examples/example/registry.c \ |
300 $(LIBMLK_SQLITE) \ | 363 examples/example/spell-fire.c \ |
301 $(MATH_LIBS) \ | 364 examples/example/trace_hud.c |
302 $(SDL2_LIBS) \ | 365 |
303 $(SDL2_IMAGE_LIBS) \ | 366 LIBMLK_EXAMPLE_DATA_SRCS := examples/assets/images/battle-background.png \ |
304 $(SDL2_TTF_LIBS) \ | 367 examples/assets/images/black-cat.png \ |
305 $(OPENAL_LIBS) \ | 368 examples/assets/images/haunted-wood.png \ |
306 $(SNDFILE_LIBS) | 369 examples/assets/images/sword.png \ |
307 | 370 examples/assets/music/vabsounds-romance.ogg \ |
308 ifeq ($(WITH_ZSTD),yes) | 371 examples/assets/sounds/fire.wav \ |
309 LIBMLK += $(ZSTD_LIBS) | 372 examples/assets/sprites/chest.png \ |
310 endif | 373 examples/assets/sprites/explosion.png \ |
311 | 374 examples/assets/sprites/john-sword.png \ |
312 ifeq ($(WITH_ZIP),yes) | 375 examples/assets/sprites/john-walk.png \ |
313 LIBMLK += $(LIBZIP_LIBS) | 376 examples/assets/sprites/numbers.png \ |
314 endif | 377 examples/assets/sprites/people.png \ |
378 examples/assets/sprites/ui-cursor.png | |
379 LIBMLK_EXAMPLE_DATA_OBJS := $(addsuffix .h,$(basename $(LIBMLK_EXAMPLE_DATA_SRCS))) | |
380 | |
381 LIBMLK_EXAMPLE_OBJS := $(LIBMLK_EXAMPLE_SRCS:.c=.o) | |
382 LIBMLK_EXAMPLE_DEPS := $(LIBMLK_EXAMPLE_SRCS:.c=.d) | |
383 | |
384 -include $(LIBMLK_EXAMPLE_DEPS) | |
385 | |
386 $(LIBMLK_EXAMPLE_DATA_OBJS): $(MLK_BCC) | |
387 | |
388 $(LIBMLK_EXAMPLE_OBJS): private INCS += -Iexamples | |
389 $(LIBMLK_EXAMPLE_OBJS): $(LIBMLK_EXAMPLE_DATA_OBJS) | |
390 | |
391 $(LIBMLK_EXAMPLE): private OBJS := $(LIBMLK_EXAMPLE_OBJS) | |
392 $(LIBMLK_EXAMPLE): $(LIBMLK_EXAMPLE_OBJS) | |
393 | |
394 # }}} | |
395 | |
396 # {{{ examples | |
397 | |
398 EXAMPLES := examples/example-action/example-action.c \ | |
399 examples/example-animation/example-animation.c \ | |
400 examples/example-audio/example-audio.c \ | |
401 examples/example-cursor/example-cursor.c \ | |
402 examples/example-debug/example-debug.c \ | |
403 examples/example-drawable/example-drawable.c \ | |
404 examples/example-font/example-font.c \ | |
405 examples/example-gridmenu/example-gridmenu.c \ | |
406 examples/example-label/example-label.c \ | |
407 examples/example-message/example-message.c \ | |
408 examples/example-notify/example-notify.c \ | |
409 examples/example-sprite/example-sprite.c \ | |
410 examples/example-ui/example-ui.c | |
411 EXAMPLES_EXE := $(EXAMPLES:.c=) | |
412 EXAMPLES_OBJS := $(EXAMPLES_EXE) | |
413 | |
414 $(EXAMPLES_EXE): private LIBS += $(LIBMLK) $(LIBMLK_EXAMPLE) | |
415 $(EXAMPLES_EXE): private INCS += -Iexamples | |
416 $(EXAMPLES_EXE): $(LIBMLK_RPG) $(LIBMLK_UI) $(LIBMLK_CORE) $(LIBMLK_PORT) $(LIBMLK_SQLITE) $(LIBMLK_EXAMPLE) | |
417 | |
418 examples: $(EXAMPLES_EXE) | |
419 | |
420 # }}} | |
421 | |
422 # {{{ tests | |
315 | 423 |
316 TESTS := tests/test-action-script.c \ | 424 TESTS := tests/test-action-script.c \ |
317 tests/test-action.c \ | 425 tests/test-action.c \ |
318 tests/test-alloc.c \ | 426 tests/test-alloc.c \ |
319 tests/test-character.c \ | 427 tests/test-character.c \ |
339 $(TESTS_EXE): $(LIBMLK_RPG) $(LIBMLK_UI) $(LIBMLK_CORE) $(LIBMLK_PORT) $(LIBMLK_SQLITE) | 447 $(TESTS_EXE): $(LIBMLK_RPG) $(LIBMLK_UI) $(LIBMLK_CORE) $(LIBMLK_PORT) $(LIBMLK_SQLITE) |
340 | 448 |
341 tests: $(TESTS_EXE) | 449 tests: $(TESTS_EXE) |
342 for t in $(TESTS_EXE); do ./$$t; done | 450 for t in $(TESTS_EXE); do ./$$t; done |
343 | 451 |
452 # }}} | |
453 | |
344 clean: | 454 clean: |
345 rm -f config.h | 455 rm -f config.h |
456 rm -f $(MLK_BCC) $(MLK_MAP) $(MLK_TILESET) | |
346 rm -f $(LIBMLK_SQLITE) $(LIBMLK_SQLITE_DEPS) $(LIBMLK_SQLITE_OBJS) | 457 rm -f $(LIBMLK_SQLITE) $(LIBMLK_SQLITE_DEPS) $(LIBMLK_SQLITE_OBJS) |
347 rm -f $(LIBMLK_PORT) $(LIBMLK_PORT_DEPS) $(LIBMLK_PORT_OBJS) | 458 rm -f $(LIBMLK_PORT) $(LIBMLK_PORT_DEPS) $(LIBMLK_PORT_OBJS) |
348 rm -f $(LIBMLK_CORE) $(LIBMLK_CORE_DEPS) $(LIBMLK_CORE_OBJS) | 459 rm -f $(LIBMLK_CORE) $(LIBMLK_CORE_DEPS) $(LIBMLK_CORE_OBJS) |
349 rm -f $(LIBMLK_UI) $(LIBMLK_UI_DEPS) $(LIBMLK_UI_OBJS) $(LIBMLK_UI_DATA_OBJS) | 460 rm -f $(LIBMLK_UI) $(LIBMLK_UI_DEPS) $(LIBMLK_UI_OBJS) $(LIBMLK_UI_DATA_OBJS) |
350 rm -f $(LIBMLK_RPG) $(LIBMLK_RPG_DEPS) $(LIBMLK_RPG_OBJS) $(LIBMLK_RPG_DATA_OBJS) | 461 rm -f $(LIBMLK_RPG) $(LIBMLK_RPG_DEPS) $(LIBMLK_RPG_OBJS) $(LIBMLK_RPG_DATA_OBJS) |
351 rm -f $(TESTS_EXE) | 462 rm -f $(LIBMLK_EXAMPLE) $(LIBMLK_EXAMPLE_DEPS) $(LIBMLK_EXAMPLE_OBJS) $(LIBMLK_EXAMPLE_DATA_OBJS) |
352 | 463 rm -f $(TESTS_EXE) $(EXAMPLES_EXE) |
353 .PHONY: all clean tests | 464 |
465 .PHONY: all clean examples tests |