mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
fix cryptic 'no rule' error when a prerequisite is missing
at the cost of scan_includes running before the rules are actually evaluated
This commit is contained in:
parent
7a2a205281
commit
ea8aaeb8e3
36
Makefile
36
Makefile
@ -41,11 +41,6 @@ all: crystal
|
|||||||
crystal: pokecrystal.gbc
|
crystal: pokecrystal.gbc
|
||||||
crystal11: pokecrystal11.gbc
|
crystal11: pokecrystal11.gbc
|
||||||
|
|
||||||
# Build tools when building the rom
|
|
||||||
ifeq (,$(filter clean tools,$(MAKECMDGOALS)))
|
|
||||||
Makefile: tools ;
|
|
||||||
endif
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(roms) $(crystal_obj) $(crystal11_obj) $(roms:.gbc=.map) $(roms:.gbc=.sym)
|
rm -f $(roms) $(crystal_obj) $(crystal11_obj) $(roms:.gbc=.map) $(roms:.gbc=.sym)
|
||||||
$(MAKE) clean -C tools/
|
$(MAKE) clean -C tools/
|
||||||
@ -56,14 +51,37 @@ compare: $(roms)
|
|||||||
tools:
|
tools:
|
||||||
$(MAKE) -C tools/
|
$(MAKE) -C tools/
|
||||||
|
|
||||||
%11.o: dep = $(shell tools/scan_includes $(@D)/$*.asm)
|
|
||||||
%11.o: %.asm $$(dep)
|
# Prevents $(shell) from filtering out newlines.
|
||||||
|
define shell2 =
|
||||||
|
$(foreach line,\
|
||||||
|
$(shell $1 | sed "s/ /{space}/g"),\
|
||||||
|
$(info $(shell echo $(line) | sed "s/{space}/ /g")))
|
||||||
|
endef
|
||||||
|
|
||||||
|
# Build tools when building the rom.
|
||||||
|
# This has to happen before the rules are processed, since that's when scan_includes is run.
|
||||||
|
ifeq (,$(filter clean tools,$(MAKECMDGOALS)))
|
||||||
|
$(call shell2, $(MAKE) -C tools/)
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
# The dep rules have to be explicit or else missing files won't be reported.
|
||||||
|
# As a side effect, they're evaluated immediately instead of when the rule is invoked.
|
||||||
|
# It doesn't look like $(shell) can be deferred so there might not be a better way.
|
||||||
|
define DEP =
|
||||||
|
$1: $$(shell tools/scan_includes $2)
|
||||||
|
endef
|
||||||
|
$(foreach obj, $(crystal11_obj), $(eval $(call DEP,$(obj),$(obj:11.o=.asm))))
|
||||||
|
$(foreach obj, $(crystal_obj), $(eval $(call DEP,$(obj),$(obj:.o=.asm))))
|
||||||
|
|
||||||
|
%11.o: %.asm
|
||||||
$(RGBASM) -D CRYSTAL11 -o $@ $<
|
$(RGBASM) -D CRYSTAL11 -o $@ $<
|
||||||
|
|
||||||
%.o: dep = $(shell tools/scan_includes $(@D)/$*.asm)
|
%.o: %.asm
|
||||||
%.o: %.asm $$(dep)
|
|
||||||
$(RGBASM) -o $@ $<
|
$(RGBASM) -o $@ $<
|
||||||
|
|
||||||
|
|
||||||
pokecrystal11.gbc: $(crystal11_obj) pokecrystal.link
|
pokecrystal11.gbc: $(crystal11_obj) pokecrystal.link
|
||||||
$(RGBLINK) -n pokecrystal11.sym -m pokecrystal11.map -l pokecrystal.link -o $@ $(crystal11_obj)
|
$(RGBLINK) -n pokecrystal11.sym -m pokecrystal11.map -l pokecrystal.link -o $@ $(crystal11_obj)
|
||||||
$(RGBFIX) -Cjv -i BYTE -k 01 -l 0x33 -m 0x10 -n 1 -p 0 -r 3 -t PM_CRYSTAL $@
|
$(RGBFIX) -Cjv -i BYTE -k 01 -l 0x33 -m 0x10 -n 1 -p 0 -r 3 -t PM_CRYSTAL $@
|
||||||
|
Loading…
Reference in New Issue
Block a user