ATMOSPHERE_BUILD_CONFIGS := all: release define ATMOSPHERE_ADD_TARGET ATMOSPHERE_BUILD_CONFIGS += $(strip $1) $(strip $1): exosphere$(strip $2).bin check_warmboot_$(strip $1) @cp warmboot/warmboot$(strip $2).bin warmboot$(strip $2).bin exosphere$(strip $2).bin: loader_stub/loader_stub$(strip $2).bin @cp loader_stub/loader_stub$(strip $2).bin exosphere$(strip $2).bin @printf LENY >> exosphere$(strip $2).bin @echo "Built exosphere$(strip $2).bin..." check_program_$(strip $1): @$$(MAKE) -C program $(strip $1) check_warmboot_$(strip $1): @$$(MAKE) -C warmboot $(strip $1) loader_stub/loader_stub$(strip $2).bin: check_program_$(strip $1) @$$(MAKE) -C loader_stub $(strip $1) clean-$(strip $1): clean-program-$(strip $1) clean-loader_stub-$(strip $1) clean-warmboot-$(strip $1) @rm -rf exosphere$(strip $2).bin warmboot$(strip $2).bin clean-program-$(strip $1): @$$(MAKE) -C program clean-$(strip $1) clean-loader_stub-$(strip $1): @$$(MAKE) -C loader_stub clean-$(strip $1) clean-warmboot-$(strip $1): @$$(MAKE) -C warmboot clean-$(strip $1) endef $(eval $(call ATMOSPHERE_ADD_TARGET, release, )) $(eval $(call ATMOSPHERE_ADD_TARGET, debug, _debug)) $(eval $(call ATMOSPHERE_ADD_TARGET, audit, _audit)) clean: clean-program clean-loader_stub clean-warmboot @rm -rf exosphere*.bin warmboot*.bin clean-program: @$(MAKE) -C program clean clean-loader_stub: @$(MAKE) -C loader_stub clean clean-warmboot: @$(MAKE) -C warmboot clean .PHONY: all clean clean-program clean-loader_stub clean-warmboot $(foreach config,$(ATMOSPHERE_BUILD_CONFIGS),check_program_$(config) check_warmboot_$(strip $1) clean-$(config) clean-program-$(config) clean-loader_stub-$(config) clean-warmboot-$(config))