Mirai's Miscellaneous Misadventures

M17 / makefile

# copyright 2022 zamfofex
# license: AGPLv3 or later

.PHONY: build clean

engine ?= sdl2

libs =

ifeq ($(engine),sdl2)
libs += -lSDL2
endif

ifeq ($(engine),mfb)
libs += -lminifb -lX11 -lGL
endif

src = core/game.c core/appearances.c core/behaviors.c core/fonts.c core/font.c models/all.c test/chapter.c engines/$(engine).c

exe = mimimi

CPPFLAGS := $(CPPFLAGS)
CPPFLAGS += -MMD -MP -Iinclude

ifeq ($(engine),wasm)
build: $(exe).wasm
else
build: $(exe)
src += main/$(engine).c
endif

clean:
	$(RM) $(exe) *.o */*.o *.wasm */*.wasm *.d */*.d

ifneq ($(engine),wasm)

$(exe): $(src:.c=.o)
	$(CC) $(LDFLAGS) -o $@ $^ $(libs)

else

$(exe).wasm: $(src:.c=.wasm)
	$(CC) $(LDFLAGS) --target=wasm32 -nostdlib -Wl,--no-entry \
		-Wl,--export=mimimi_game_size \
		-Wl,--export=mimimi_width \
		-Wl,--export=mimimi_height \
		-Wl,--export=mimimi_start \
		-Wl,--export=mimimi_step \
		-Wl,--export=mimimi_wasm_stamp \
		-Wl,--export=mimimi_wasm_allocate \
		-Wl,--export=mimimi_test \
		-Wl,--export=__heap_base \
		-Wl,--allow-undefined \
		-Wl,--export-table,--growable-table \
		-o $@ $^ $(libs)

%.wasm: %.c
	$(CC) $(CFLAGS) $(CPPFLAGS) --target=wasm32 -ffreestanding -c -o $@ $<

endif

-include $(src:.c=.d)