Mirai's Miscellaneous Misadventures

M6 / Makefile

.PHONY: build clean

engine ?= sdl2

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

src = game.c
src += engines/$(engine).c

exe = mimimi

ifeq ($(engine),wasm)
build: $(exe).wasm
else
build: $(exe)
endif

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

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

$(exe).wasm: $(src:.c=.wasm)
	$(CC) $(LDFLAGS) --target=wasm32 -nostdlib -Wl,--no-entry \
		-Wl,--export=mirai_game_size \
		-Wl,--export=mirai_width \
		-Wl,--export=mirai_height \
		-Wl,--export=mirai_start \
		-Wl,--export=mirai_step \
		-Wl,--export=mirai_assets \
		-Wl,--export=mirai_wasm_stamp \
		-Wl,--export=__heap_base \
		-Wl,--allow-undefined \
		-Wl,--export-table,--growable-table \
		-o $@ $^ $(libs)

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

%.d: %.c
	$(CC) -MM -MP -MT '$(@:.d=.o) $@' -MF $@ engines/sdl2.c

include $(src:.c=.d)