diff --git a/rules.mk b/rules.mk index 9ec98961ce3..0ce75f55c0c 100644 --- a/rules.mk +++ b/rules.mk @@ -131,27 +131,6 @@ $(call shvar,$(1))=$$(call $(1)) export $(call shvar,$(1)) endef -# Default targets for subdirectory calls -# Parameters: -# 1: dependencies for the prepare step -define default_subtargets - %-download: FORCE - $$(MAKE) -C $$(patsubst %-download,%,$$@) download - - %-prepare: $(1) FORCE - $$(MAKE) -C $$(patsubst %-prepare,%,$$@) prepare - - %-compile: %-prepare - $$(MAKE) -C $$(patsubst %-compile,%,$$@) compile - - %-install: - $$(MAKE) -C $$(patsubst %-install,%,$$@) install - - %-clean: FORCE - @$$(MAKE) -C $$(patsubst %-clean,%,$$@) clean -endef - - all: FORCE: ; .PHONY: FORCE diff --git a/target/Makefile b/target/Makefile index 1b6cbb54ee1..9a7dff2a78d 100644 --- a/target/Makefile +++ b/target/Makefile @@ -51,4 +51,5 @@ image_install: image_compile imagebuilder_install: image_install $(MAKE) -C imagebuilder install -$(eval $(call default_subtargets,)) +%-prereq %-prepare %-download %-clean %-compile %-install: FORCE + $(MAKE) -C $* $(patsubst $*-%,%,$@) diff --git a/toolchain/Makefile b/toolchain/Makefile index a8bf7d6068d..673fec2bc6d 100644 --- a/toolchain/Makefile +++ b/toolchain/Makefile @@ -15,6 +15,7 @@ ifeq ($(CONFIG_NATIVE_TOOLCHAIN),) endif TARGETS_DOWNLOAD:=$(patsubst %,%-download,$(TARGETS-y)) +TARGETS_PREPARE:=$(patsubst %,%-prepare,$(TARGETS-y)) TARGETS_COMPILE:=$(patsubst %,%-compile,$(TARGETS-y)) TARGETS_INSTALL:=$(patsubst %,%-install,$(TARGETS-y)) TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS-y)) @@ -49,5 +50,14 @@ $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME): $(TOOLCHAIN_BUILD_DIR): @mkdir -p $@ -$(eval $(call default_subtargets,$(STAGING_DIR)/$(REAL_GNU_TARGET_NAME) $(TOOLCHAIN_BUILD_DIR))) +%-prereq %-download %-clean: FORCE + $(MAKE) -C $* $(patsubst $*-%,%,$@) +%-prepare: $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME) $(TOOLCHAIN_BUILD_DIR) + $(MAKE) -C $* $(patsubst $*-%,%,$@) + +%-compile: %-prepare FORCE + $(MAKE) -C $* $(patsubst $*-%,%,$@) + +%-install: %-compile FORCE + $(MAKE) -C $* $(patsubst $*-%,%,$@) diff --git a/tools/Makefile b/tools/Makefile index 9c315549e5d..31b0becc38e 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -40,9 +40,17 @@ $(STAGING_DIR)/include-host: $(TOOL_BUILD_DIR): @mkdir -p $@ -$(TARGETS_COMPILE) $(TARGETS_INSTALL): $(STAGING_DIR)/include-host $(TOOL_BUILD_DIR) +%-prereq %-download %-clean: FORCE + $(MAKE) -C $* $(patsubst $*-%,%,$@) -$(eval $(call default_subtargets,)) +%-prepare: $(STAGING_DIR)/include-host $(TOOL_BUILD_DIR) FORCE + $(MAKE) -C $* $(patsubst $*-%,%,$@) + +%-compile: %-prepare FORCE + $(MAKE) -C $* $(patsubst $*-%,%,$@) + +%-install: %-compile FORCE + $(MAKE) -C $* $(patsubst $*-%,%,$@) ifeq ($(MAKECMDGOALS),install-targets) MAKEFLAGS:=$(MAKEFLAGS) -j$(CONFIG_JLEVEL)