pokemon/Makefile

98 lines
1.9 KiB
Makefile

CFLAGS = -Isaturn
OPT ?= -O3
LIB = ./saturn
GEN_PYTHON_SOURCE = $(wildcard tools/source/*.py) $(wildcard tools/generate/*.py)
GEN_SRC =
GEN_SRC += gen/maps.cpp
GEN_SRC += gen/map_objects.cpp
GEN_SRC += gen/sprites.cpp
GEN_SRC += gen/tilesets.cpp
GEN_SRC += gen/collision_tile_ids.cpp
SRC =
SRC += $(GEN_SRC)
SRC += main.cpp
SRC += input.cpp
DEP = $(patsubst %.cpp,%.cpp.d,$(SRC))
res = $(subst pokered/,res/,$(patsubst %.$(1),%.$(1).o,$(wildcard $(2)*.$(1))))
res_png = $(subst pokered/,res/,$(patsubst %.png,%.$(1).o,$(wildcard $(2)*.png)))
GFX_TILESETS = $(call res_png,2bpp,pokered/gfx/tilesets/)
GFX_BLOCKSETS = $(call res,bst,pokered/gfx/blocksets/)
GFX_SPRITES = $(call res_png,2bpp,pokered/gfx/sprites/)
MAPS_BLOCKS = $(call res,blk,pokered/maps/)
GENERATED = $(GFX_TILESETS) $(GFX_BLOCKSETS) $(GFX_SPRITES) $(MAPS_BLOCKS) $(GEN_SRC)
OBJ = $(patsubst %.cpp,%.o,$(SRC) $(GENERATED))
all: main.cue
include $(LIB)/common.mk
-include $(DEP)
define LINK_BINARY
@mkdir -p $(dir $@)
ln -sf $(shell realpath --relative-to="$(dir $@)" $<) $@
endef
define RUN_GENERATE
@mkdir -p ./gen
PYTHONPATH=./tools python -m generate ./pokered ./gen ./res
endef
gen/%.hpp: $(GEN_PYTHON_SOURCE)
$(RUN_GENERATE) $@
gen/%.cpp: gen/%.hpp $(GEN_PYTHON_SOURCE)
$(RUN_GENERATE) $@
res/%.2bpp: pokered/%.png
@mkdir -p $(dir $@)
python tools/png_to_nbpp.py 2 $@ $<
res/gfx/sprites/%.2bpp: pokered/gfx/sprites/%.png
@mkdir -p $(dir $@)
python tools/png_to_nbpp_sprite.py 2 $@ $<
%.2bpp.h:
$(BUILD_BINARY_H)
%.2bpp.o: %.2bpp %.2bpp.h
$(BUILD_BINARY_O)
res/%.blk: pokered/%.blk
$(LINK_BINARY)
%.blk.h:
$(BUILD_BINARY_H)
%.blk.o: %.blk %.blk.h
$(BUILD_BINARY_O)
res/%.bst: pokered/%.bst
$(LINK_BINARY)
%.bst.h:
$(BUILD_BINARY_H)
%.bst.o: %.bst %.bst.h
$(BUILD_BINARY_O)
%.o: | $(GFX_TILESETS)
main.elf: $(OBJ) $(LIBGCC)
clean: clean-sh
clean-sh:
rm -rf res gen
generated: $(GENERATED)
PHONY: generated