Mirai's Miscellaneous Misadventures
M35 / makefile
# copyright 2022 zamfofex
# license: AGPLv3 or later
engine ?= mfb
libs =
ifeq ($(engine),sdl2)
libs += -lSDL2
endif
ifeq ($(engine),mfb)
libs += -lminifb -lX11 -lGL
endif
src = \
core/behaviors.c \
core/sprites.c \
core/controls.c \
core/cameras.c \
core/animations.c \
core/displays.c \
core/font.c \
core/text.c \
core/coroutines.c \
core/collisions.c \
core/allocators.c \
core/video.c \
core/version.c \
core/paths.c \
models/all.c \
test/chapter.c
exe = mimimi
lib = lib$(exe)
ifneq ($(engine),lib)
src += engines/$(engine).c
endif
.PHONY: all clean check
all:
clean:
$(RM) $(exe) *.wasm *.a */*.o */*.wasm */*.d
check:
$(MAKE) engine=check
valgrind --leak-check=full --error-exitcode=1 ./mimimi
ifeq ($(engine),wasm)
all: $(exe).wasm $(lib).a
$(exe).wasm: $(src:.c=.wasm)
@echo ld $@
@$(CC) $(LDFLAGS) -nostdlib -Wl,--no-entry \
-Wl,--export=mimimi_wasm_texture \
-Wl,--export=mimimi_wasm_invalidate \
-Wl,--export=mimimi_wasm_stamp \
-Wl,--export=mimimi_wasm_allocator \
-Wl,--export=mimimi_wasm_allocate \
-Wl,--export=mimimi_test \
-Wl,--allow-undefined \
-Wl,--export-table,--growable-table \
-o $@ $^ $(libs)
$(lib).a: $(src:.c=.wasm)
@echo ar $@
@$(AR) rDsc $@ $^
%.wasm: %.c
@echo cc $<
@$(CC) $(CFLAGS) $(CPPFLAGS) -ffreestanding -MMD -MP -Iinclude -c -o $@ $<
else
all: $(exe) $(lib).a
src += core/malloc.c
$(exe): $(src:.c=.o) main/$(engine).o
@echo ld $@
@$(CC) $(LDFLAGS) -o $@ $^ $(libs)
$(lib).a: $(src:.c=.o)
@echo ar $@
@$(AR) rDsc $@ $^
%.o: %.c
@echo cc $<
@$(CC) $(CFLAGS) $(CPPFLAGS) -MMD -MP -Iinclude -c -o $@ $<
endif
-include $(src:.c=.d)