Mercurial > molko
diff 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 |
line wrap: on
line diff
--- a/GNUmakefile Fri Oct 07 15:25:32 2022 +0200 +++ b/GNUmakefile Sun Oct 09 13:51:03 2022 +0200 @@ -3,7 +3,7 @@ # Toolchain options. CC ?= clang CFLAGS ?= -g -O0 -BCC ?= bcc +BCC ?= src/tools/bcc/mlk-bcc BCC_OPTS ?= -cs MD ?= -MD @@ -26,6 +26,9 @@ SNDFILE_INCS ?= $(shell pkg-config --cflags sndfile) SNDFILE_LIBS ?= $(shell pkg-config --libs sndfile) +JANSSON_INCS ?= $(shell pkg-config --cflags jansson) +JANSSON_LIBS ?= $(shell pkg-config --libs jansson) + ifeq ($(WITH_ZSTD),yes) ZSTD_INCS ?= $(shell pkg-config --cflags libzstd) ZSTD_LIBS ?= $(shell pkg-config --libs libzstd) @@ -67,7 +70,7 @@ INCS += $(ZIP_INCS) endif -OPTS := -Wall -Wextra -Wno-format-truncation -pipe +OPTS := -Wall -Wextra -pipe ifeq ($(OS),Darwin) OPTS += -Wno-deprecated-declarations @@ -79,18 +82,39 @@ OPTS += -DNDEBUG -O3 endif +# Meta variable that contains all libraries, used for executables and tests. +LIBMLK = $(LIBMLK_RPG) \ + $(LIBMLK_UI) \ + $(LIBMLK_CORE) \ + $(LIBMLK_PORT) \ + $(LIBMLK_SQLITE) \ + $(MATH_LIBS) \ + $(SDL2_LIBS) \ + $(SDL2_IMAGE_LIBS) \ + $(SDL2_TTF_LIBS) \ + $(OPENAL_LIBS) \ + $(SNDFILE_LIBS) + +ifeq ($(WITH_ZSTD),yes) +LIBMLK += $(ZSTD_LIBS) +endif + +ifeq ($(WITH_ZIP),yes) +LIBMLK += $(LIBZIP_LIBS) +endif + .DEFAULT_GOAL := all .SUFFIXES: -.SUFFIXES: .c .h .o .sql .ttf +.SUFFIXES: .c .h .o .ogg .png .sql .ttf .wav .c.o: $(CC) $(OPTS) $(INCS) $(DEFS) $(CFLAGS) $(MD) -c $< -o $@ .c: - $(CC) $(OPTS) $(INCS) $(DEFS) $(CFLAGS) $< -o $@ $(LIBS) $(LDFLAGS) + $(CC) $(OPTS) $(INCS) $(DEFS) $(CFLAGS) $< -o $@ $(OBJS) $(LIBS) $(LDFLAGS) -.ttf.h .sql.h: +.ogg.h .png.h .ttf.h .sql.h .wav.h: $(BCC) $(BCC_OPTS) $< assets_$(basename $(<F)) > $@ %.a: @@ -132,6 +156,39 @@ # }}} +# {{{ mlk-bcc + +MLK_BCC := src/tools/bcc/mlk-bcc + +$(MLK_BCC): INCS := + +all: $(MLK_BCC) + +# }}} + +# {{{ mlk-tileset + +MLK_TILESET := src/tools/tileset/mlk-tileset + +$(MLK_TILESET): INCS := $(JANSSON_INCS) +$(MLK_TILESET): LIBS := $(JANSSON_LIBS) + +all: $(MLK_TILESET) + +# }}} + +# {{{ mlk-map + +MLK_MAP := src/tools/map/mlk-map + +$(MLK_MAP): INCS := -Isrc/libmlk-port $(JANSSON_INCS) +$(MLK_MAP): LIBS := $(LIBMLK_PORT) $(JANSSON_LIBS) +$(MLK_MAP): $(LIBMLK_PORT) + +all: $(MLK_MAP) + +# }}} + # {{{ libmlk-sqlite LIBMLK_SQLITE := libmlk-sqlite.a @@ -141,8 +198,8 @@ -include $(LIBMLK_SQLITE_DEPS) -$(LIBMLK_SQLITE): INCS := -$(LIBMLK_SQLITE): OBJS := $(LIBMLK_SQLITE_OBJS) +$(LIBMLK_SQLITE): private INCS := +$(LIBMLK_SQLITE): private OBJS := $(LIBMLK_SQLITE_OBJS) $(LIBMLK_SQLITE): $(LIBMLK_SQLITE_OBJS) all: $(LIBMLK_SQLITE) @@ -189,7 +246,7 @@ -include $(LIBMLK_CORE_DEPS) $(LIBMLK_CORE_OBJS): config.h -$(LIBMLK_CORE): OBJS := $(LIBMLK_CORE_OBJS) +$(LIBMLK_CORE): private OBJS := $(LIBMLK_CORE_OBJS) $(LIBMLK_CORE): $(LIBMLK_CORE_OBJS) all: $(LIBMLK_CORE) @@ -217,9 +274,12 @@ src/libmlk-ui/assets/fonts/opensans-regular.ttf LIBMLK_UI_DATA_OBJS := $(addsuffix .h,$(basename $(LIBMLK_UI_DATA_SRCS))) +$(LIBMLK_UI_DATA_OBJS): $(MLK_BCC) + $(LIBMLK_UI_OBJS): $(LIBMLK_UI_DATA_OBJS) + $(LIBMLK_UI): $(LIBMLK_UI_OBJS) -$(LIBMLK_UI): OBJS := $(LIBMLK_UI_OBJS) +$(LIBMLK_UI): private OBJS := $(LIBMLK_UI_OBJS) all: $(LIBMLK_UI) @@ -268,9 +328,9 @@ src/libmlk-rpg/rpg/tileset-file.c \ src/libmlk-rpg/rpg/tileset.c \ src/libmlk-rpg/rpg/walksprite.c - LIBMLK_RPG_OBJS := $(LIBMLK_RPG_SRCS:.c=.o) LIBMLK_RPG_DEPS := $(LIBMLK_RPG_SRCS:.c=.d) + LIBMLK_RPG_DATA_SRCS := src/libmlk-rpg/assets/sql/character-load.sql \ src/libmlk-rpg/assets/sql/character-save.sql \ src/libmlk-rpg/assets/sql/init.sql \ @@ -284,34 +344,82 @@ LIBMLK_RPG_DATA_OBJS := $(addsuffix .h,$(basename $(LIBMLK_RPG_DATA_SRCS))) $(LIBMLK_RPG_DATA_OBJS): BCC_OPTS := -cs0 +$(LIBMLK_RPG_DATA_OBJS): $(MLK_BCC) + $(LIBMLK_RPG_OBJS): $(LIBMLK_RPG_DATA_OBJS) + $(LIBMLK_RPG): $(LIBMLK_RPG_OBJS) -$(LIBMLK_RPG): OBJS := $(LIBMLK_RPG_OBJS) +$(LIBMLK_RPG): private OBJS := $(LIBMLK_RPG_OBJS) all: $(LIBMLK_RPG) # }}} -# Meta variable that contains all libraries, used for executables and tests. -LIBMLK := $(LIBMLK_RPG) \ - $(LIBMLK_UI) \ - $(LIBMLK_CORE) \ - $(LIBMLK_PORT) \ - $(LIBMLK_SQLITE) \ - $(MATH_LIBS) \ - $(SDL2_LIBS) \ - $(SDL2_IMAGE_LIBS) \ - $(SDL2_TTF_LIBS) \ - $(OPENAL_LIBS) \ - $(SNDFILE_LIBS) +# {{{ libmlk-example + +LIBMLK_EXAMPLE := libmlk-example.a +LIBMLK_EXAMPLE_SRCS := examples/example/character-john.c \ + examples/example/registry.c \ + examples/example/spell-fire.c \ + examples/example/trace_hud.c + +LIBMLK_EXAMPLE_DATA_SRCS := examples/assets/images/battle-background.png \ + examples/assets/images/black-cat.png \ + examples/assets/images/haunted-wood.png \ + examples/assets/images/sword.png \ + examples/assets/music/vabsounds-romance.ogg \ + examples/assets/sounds/fire.wav \ + examples/assets/sprites/chest.png \ + examples/assets/sprites/explosion.png \ + examples/assets/sprites/john-sword.png \ + examples/assets/sprites/john-walk.png \ + examples/assets/sprites/numbers.png \ + examples/assets/sprites/people.png \ + examples/assets/sprites/ui-cursor.png +LIBMLK_EXAMPLE_DATA_OBJS := $(addsuffix .h,$(basename $(LIBMLK_EXAMPLE_DATA_SRCS))) + +LIBMLK_EXAMPLE_OBJS := $(LIBMLK_EXAMPLE_SRCS:.c=.o) +LIBMLK_EXAMPLE_DEPS := $(LIBMLK_EXAMPLE_SRCS:.c=.d) + +-include $(LIBMLK_EXAMPLE_DEPS) + +$(LIBMLK_EXAMPLE_DATA_OBJS): $(MLK_BCC) + +$(LIBMLK_EXAMPLE_OBJS): private INCS += -Iexamples +$(LIBMLK_EXAMPLE_OBJS): $(LIBMLK_EXAMPLE_DATA_OBJS) -ifeq ($(WITH_ZSTD),yes) -LIBMLK += $(ZSTD_LIBS) -endif +$(LIBMLK_EXAMPLE): private OBJS := $(LIBMLK_EXAMPLE_OBJS) +$(LIBMLK_EXAMPLE): $(LIBMLK_EXAMPLE_OBJS) + +# }}} + +# {{{ examples -ifeq ($(WITH_ZIP),yes) -LIBMLK += $(LIBZIP_LIBS) -endif +EXAMPLES := examples/example-action/example-action.c \ + examples/example-animation/example-animation.c \ + examples/example-audio/example-audio.c \ + examples/example-cursor/example-cursor.c \ + examples/example-debug/example-debug.c \ + examples/example-drawable/example-drawable.c \ + examples/example-font/example-font.c \ + examples/example-gridmenu/example-gridmenu.c \ + examples/example-label/example-label.c \ + examples/example-message/example-message.c \ + examples/example-notify/example-notify.c \ + examples/example-sprite/example-sprite.c \ + examples/example-ui/example-ui.c +EXAMPLES_EXE := $(EXAMPLES:.c=) +EXAMPLES_OBJS := $(EXAMPLES_EXE) + +$(EXAMPLES_EXE): private LIBS += $(LIBMLK) $(LIBMLK_EXAMPLE) +$(EXAMPLES_EXE): private INCS += -Iexamples +$(EXAMPLES_EXE): $(LIBMLK_RPG) $(LIBMLK_UI) $(LIBMLK_CORE) $(LIBMLK_PORT) $(LIBMLK_SQLITE) $(LIBMLK_EXAMPLE) + +examples: $(EXAMPLES_EXE) + +# }}} + +# {{{ tests TESTS := tests/test-action-script.c \ tests/test-action.c \ @@ -341,13 +449,17 @@ tests: $(TESTS_EXE) for t in $(TESTS_EXE); do ./$$t; done +# }}} + clean: rm -f config.h + rm -f $(MLK_BCC) $(MLK_MAP) $(MLK_TILESET) rm -f $(LIBMLK_SQLITE) $(LIBMLK_SQLITE_DEPS) $(LIBMLK_SQLITE_OBJS) rm -f $(LIBMLK_PORT) $(LIBMLK_PORT_DEPS) $(LIBMLK_PORT_OBJS) rm -f $(LIBMLK_CORE) $(LIBMLK_CORE_DEPS) $(LIBMLK_CORE_OBJS) rm -f $(LIBMLK_UI) $(LIBMLK_UI_DEPS) $(LIBMLK_UI_OBJS) $(LIBMLK_UI_DATA_OBJS) rm -f $(LIBMLK_RPG) $(LIBMLK_RPG_DEPS) $(LIBMLK_RPG_OBJS) $(LIBMLK_RPG_DATA_OBJS) - rm -f $(TESTS_EXE) + rm -f $(LIBMLK_EXAMPLE) $(LIBMLK_EXAMPLE_DEPS) $(LIBMLK_EXAMPLE_OBJS) $(LIBMLK_EXAMPLE_DATA_OBJS) + rm -f $(TESTS_EXE) $(EXAMPLES_EXE) -.PHONY: all clean tests +.PHONY: all clean examples tests