From f4dd18c270c0a171c1c4a04b1c7e886516ccd235 Mon Sep 17 00:00:00 2001 From: Chris Kay Date: Tue, 4 Jun 2024 00:04:48 +0000 Subject: [PATCH] build: consolidate directory creation rules This commit streamlines directory creation by introducing a single pattern rule to automatically make directories for which there is a dependency. We currently use several macros to generate rules to create directories upon dependence, which is a significant amount of code and a lot of redundancy. The rule introduced by this change represents a catch-all: any rule dependency on a path ending in a forward slash is automatically created. Now, rules can rely on an unordered dependency (`|`) on `$$(@D)/` which, when secondary expansion is enabled, expands to the directory of the target being built, e.g.: build/main.o: main.c | $$(@D)/ # automatically creates `build/` Change-Id: I7e554efa2ac850e779bb302fd9c7fbb239886c9f Signed-off-by: Chris Kay --- Makefile | 4 +- lib/romlib/Makefile | 23 +++--- make_helpers/build-rules.mk | 18 +++++ make_helpers/build_env.mk | 5 -- make_helpers/build_macros.mk | 78 ++++--------------- make_helpers/unix.mk | 12 --- make_helpers/windows.mk | 13 ---- plat/imx/imx7/common/imx7.mk | 1 - plat/imx/imx8m/imx8mm/platform.mk | 1 - plat/imx/imx8m/imx8mp/platform.mk | 1 - .../marvell/armada/a3k/common/a3700_common.mk | 3 +- .../build_helpers/mtk_build_helpers.mk | 9 --- plat/nxp/soc-lx2160a/ddr_fip.mk | 2 - plat/nxp/soc-lx2160a/ddr_tbbr.mk | 2 - plat/rockchip/rk3399/platform.mk | 3 +- plat/st/common/common_rules.mk | 2 +- plat/st/stm32mp1/platform.mk | 4 +- tools/renesas/rcar_layout_create/makefile | 15 ++-- tools/renesas/rzg_layout_create/makefile | 15 ++-- 19 files changed, 65 insertions(+), 146 deletions(-) create mode 100644 make_helpers/build-rules.mk diff --git a/Makefile b/Makefile index bbde1a7a0..7cfbbe213 100644 --- a/Makefile +++ b/Makefile @@ -24,6 +24,7 @@ MAKEOVERRIDES = MAKE_HELPERS_DIRECTORY := make_helpers/ include ${MAKE_HELPERS_DIRECTORY}build_macros.mk include ${MAKE_HELPERS_DIRECTORY}build_env.mk +include ${MAKE_HELPERS_DIRECTORY}build-rules.mk include ${MAKE_HELPERS_DIRECTORY}common.mk ################################################################################ @@ -690,8 +691,6 @@ else FFH_SUPPORT := 0 endif -$(eval $(call MAKE_PREREQ_DIR,${BUILD_PLAT})) - ifeq (${ARM_ARCH_MAJOR},7) include make_helpers/armv7-a-cpus.mk endif @@ -1476,7 +1475,6 @@ else endif endif #(!ERROR_DEPRECATED) -$(eval $(call MAKE_LIB_DIRS)) $(eval $(call MAKE_LIB,c)) # Expand build macros for the different images diff --git a/lib/romlib/Makefile b/lib/romlib/Makefile index 9ade331d0..9859ce1c8 100644 --- a/lib/romlib/Makefile +++ b/lib/romlib/Makefile @@ -10,6 +10,7 @@ else toolchains := aarch64 endif +include ../../make_helpers/build-rules.mk include ../../make_helpers/common.mk include ../../make_helpers/toolchain.mk @@ -46,45 +47,45 @@ endif all: $(BUILD_DIR)/romlib.bin $(LIB_DIR)/libwrappers.a -%.o: %.s +%.o: %.s | $$(@D)/ $(s)echo " AS $@" $(q)$(aarch64-as) -c $(ASFLAGS) -o $@ $< -$(BUILD_DIR)/%.o: %.s +$(BUILD_DIR)/%.o: %.s | $$(@D)/ $(s)echo " AS $@" $(q)$(aarch64-as) -c $(ASFLAGS) -o $@ $< -$(BUILD_DIR)/romlib.ld: romlib.ld.S +$(BUILD_DIR)/romlib.ld: romlib.ld.S | $$(@D)/ $(s)echo " PP $@" $(q)$(aarch64-cpp) -E $(PPFLAGS) -o $@ romlib.ld.S -$(BUILD_DIR)/romlib.elf: $(OBJS) $(BUILD_DIR)/romlib.ld +$(BUILD_DIR)/romlib.elf: $(OBJS) $(BUILD_DIR)/romlib.ld | $$(@D)/ $(s)echo " LD $@" $(q)$(aarch64-ld) -T $(BUILD_DIR)/romlib.ld -L$(LIB_DIR) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) -$(BUILD_DIR)/romlib.bin: $(BUILD_DIR)/romlib.elf +$(BUILD_DIR)/romlib.bin: $(BUILD_DIR)/romlib.elf | $$(@D)/ $(s)echo " BIN $@" $(q)$(aarch64-oc) -O binary $(BUILD_DIR)/romlib.elf $@ -$(WRAPPER_DIR)/jmpvar.s: $(BUILD_DIR)/romlib.elf +$(WRAPPER_DIR)/jmpvar.s: $(BUILD_DIR)/romlib.elf | $$(@D)/ $(s)echo " VAR $@" $(q)$(ROMLIB_GEN) genvar --output $@ $< -$(LIB_DIR)/libwrappers.a: $(WRAPPER_DIR)/jmpvar.o $(WRAPPER_OBJS) +$(LIB_DIR)/libwrappers.a: $(WRAPPER_DIR)/jmpvar.o $(WRAPPER_OBJS) | $$(@D)/ $(s)echo " AR $@" $(q)$(aarch64-ar) -rc $@ $(WRAPPER_DIR)/jmpvar.o $(WRAPPER_OBJS) -$(BUILD_DIR)/jmptbl.i: ../../$(PLAT_DIR)/jmptbl.i +$(BUILD_DIR)/jmptbl.i: ../../$(PLAT_DIR)/jmptbl.i | $$(@D)/ $(s)echo " PRE $@" $(q)$(ROMLIB_GEN) pre --output $@ --deps $(BUILD_DIR)/jmptbl.d $< -$(WRAPPER_SOURCES) &: $(BUILD_DIR)/jmptbl.i +$(WRAPPER_SOURCES) &: $(BUILD_DIR)/jmptbl.i | $$(@D)/ $(s)echo " WRP $<" $(q)$(ROMLIB_GEN) genwrappers --bti=$(ENABLE_BTI) -b $(WRAPPER_DIR) $< -$(WRAPPER_OBJS): $(WRAPPER_DIR)/%.o: $(WRAPPER_DIR)/%.s +$(WRAPPER_OBJS): $(WRAPPER_DIR)/%.o: $(WRAPPER_DIR)/%.s | $$(@D)/ -$(BUILD_DIR)/jmptbl.s: $(BUILD_DIR)/jmptbl.i +$(BUILD_DIR)/jmptbl.s: $(BUILD_DIR)/jmptbl.i | $$(@D)/ $(s)echo " TBL $@" $(q)$(ROMLIB_GEN) gentbl --output $@ --bti=$(ENABLE_BTI) $< diff --git a/make_helpers/build-rules.mk b/make_helpers/build-rules.mk new file mode 100644 index 000000000..d325b3a81 --- /dev/null +++ b/make_helpers/build-rules.mk @@ -0,0 +1,18 @@ +# +# Copyright (c) 2024, Arm Limited and Contributors. All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +ifndef build-rules-mk + build-rules-mk := $(lastword $(MAKEFILE_LIST)) + + include $(dir $(build-rules-mk))common.mk + include $(dir $(build-rules-mk))utilities.mk + + .SECONDEXPANSION: + + %/: + $(s)echo ' MD '$(call escape-shell,$(abspath $@)) + $(q)mkdir -p $(call escape-shell,$@) +endif diff --git a/make_helpers/build_env.mk b/make_helpers/build_env.mk index a545cd095..13acaae4a 100644 --- a/make_helpers/build_env.mk +++ b/make_helpers/build_env.mk @@ -15,8 +15,6 @@ ifndef BUILD_ENV_MK COPY := $$(error "Replace COPY with call to SHELL_COPY or SHELL_COPY_TREE.") CP := $$(error "Replace CP with call to SHELL_COPY or SHELL_COPY_TREE.") DEL := $$(error "Replace DEL with call to SHELL_DELETE.") - MD := $$(error "Replace MD with call to MAKE_PREREQ_DIR.") - MKDIR := $$(error "Replace MKDIR with call to MAKE_PREREQ_DIR.") RD := $$(error "Replace RD with call to SHELL_REMOVE_DIR.") RM := $$(error "Replace RM with call to SHELL_DELETE.") RMDIR := $$(error "Replace RMDIR with call to SHELL_REMOVE_DIR.") @@ -62,9 +60,6 @@ ifndef BUILD_ENV_MK ifndef SHELL_DELETE $(error "SHELL_DELETE not defined for build environment.") endif - ifndef MAKE_PREREQ_DIR - $(error "MAKE_PREREQ_DIR not defined for build environment.") - endif ifndef SHELL_REMOVE_DIR $(error "SHELL_REMOVE_DIR not defined for build environment.") endif diff --git a/make_helpers/build_macros.mk b/make_helpers/build_macros.mk index d27408c50..705091669 100644 --- a/make_helpers/build_macros.mk +++ b/make_helpers/build_macros.mk @@ -289,7 +289,7 @@ $(eval OBJ := $(1)/$(patsubst %.c,%.o,$(notdir $(2)))) $(eval DEP := $(patsubst %.o,%.d,$(OBJ))) $(eval LIB := $(call uppercase, $(notdir $(1)))) -$(OBJ): $(2) $(filter-out %.d,$(MAKEFILE_LIST)) | lib$(3)_dirs +$(OBJ): $(2) $(filter-out %.d,$(MAKEFILE_LIST)) | $$$$(@D)/ $$(s)echo " CC $$<" $$(q)$($(ARCH)-cc) $$($(LIB)_CFLAGS) $$(TF_CFLAGS) $$(CFLAGS) $(MAKE_DEP) -c $$< -o $$@ @@ -305,7 +305,7 @@ define MAKE_S_LIB $(eval OBJ := $(1)/$(patsubst %.S,%.o,$(notdir $(2)))) $(eval DEP := $(patsubst %.o,%.d,$(OBJ))) -$(OBJ): $(2) $(filter-out %.d,$(MAKEFILE_LIST)) | lib$(3)_dirs +$(OBJ): $(2) $(filter-out %.d,$(MAKEFILE_LIST)) | $$$$(@D)/ $$(s)echo " AS $$<" $$(q)$($(ARCH)-as) -x assembler-with-cpp $$(TF_CFLAGS_$(ARCH)) $$(ASFLAGS) $(MAKE_DEP) -c $$< -o $$@ @@ -328,7 +328,7 @@ $(eval BL_INCLUDE_DIRS := $($(call uppercase,$(3))_INCLUDE_DIRS) $(PLAT_BL_COMMO $(eval BL_CPPFLAGS := $($(call uppercase,$(3))_CPPFLAGS) $(addprefix -D,$(BL_DEFINES)) $(addprefix -I,$(BL_INCLUDE_DIRS)) $(PLAT_BL_COMMON_CPPFLAGS)) $(eval BL_CFLAGS := $($(call uppercase,$(3))_CFLAGS) $(PLAT_BL_COMMON_CFLAGS)) -$(OBJ): $(2) $(filter-out %.d,$(MAKEFILE_LIST)) | $(3)_dirs +$(OBJ): $(2) $(filter-out %.d,$(MAKEFILE_LIST)) | $$$$(@D)/ $$(s)echo " CC $$<" $$(q)$($(ARCH)-cc) $$(LTO_CFLAGS) $$(TF_CFLAGS) $$(CFLAGS) $(BL_CPPFLAGS) $(BL_CFLAGS) $(MAKE_DEP) -c $$< -o $$@ @@ -351,7 +351,7 @@ $(eval BL_INCLUDE_DIRS := $($(call uppercase,$(3))_INCLUDE_DIRS) $(PLAT_BL_COMMO $(eval BL_CPPFLAGS := $($(call uppercase,$(3))_CPPFLAGS) $(addprefix -D,$(BL_DEFINES)) $(addprefix -I,$(BL_INCLUDE_DIRS)) $(PLAT_BL_COMMON_CPPFLAGS)) $(eval BL_ASFLAGS := $($(call uppercase,$(3))_ASFLAGS) $(PLAT_BL_COMMON_ASFLAGS)) -$(OBJ): $(2) $(filter-out %.d,$(MAKEFILE_LIST)) | $(3)_dirs +$(OBJ): $(2) $(filter-out %.d,$(MAKEFILE_LIST)) | $$$$(@D)/ $$(s)echo " AS $$<" $$(q)$($(ARCH)-as) -x assembler-with-cpp $$(TF_CFLAGS_$(ARCH)) $$(ASFLAGS) $(BL_CPPFLAGS) $(BL_ASFLAGS) $(MAKE_DEP) -c $$< -o $$@ @@ -372,7 +372,7 @@ $(eval BL_DEFINES := IMAGE_$(call uppercase,$(3)) $($(call uppercase,$(3))_DEFIN $(eval BL_INCLUDE_DIRS := $($(call uppercase,$(3))_INCLUDE_DIRS) $(PLAT_BL_COMMON_INCLUDE_DIRS)) $(eval BL_CPPFLAGS := $($(call uppercase,$(3))_CPPFLAGS) $(addprefix -D,$(BL_DEFINES)) $(addprefix -I,$(BL_INCLUDE_DIRS)) $(PLAT_BL_COMMON_CPPFLAGS)) -$(1): $(2) $(filter-out %.d,$(MAKEFILE_LIST)) | $(3)_dirs +$(1): $(2) $(filter-out %.d,$(MAKEFILE_LIST)) | $$$$(@D)/ $$(s)echo " PP $$<" $$(q)$($(ARCH)-cpp) -E $$(CPPFLAGS) $(BL_CPPFLAGS) $(TF_CFLAGS_$(ARCH)) -P -x assembler-with-cpp -D__LINKER__ $(MAKE_DEP) -o $$@ $$< @@ -424,17 +424,6 @@ endef .PHONY: libraries -# MAKE_LIB_DIRS macro defines the target for the directory where -# libraries are created -define MAKE_LIB_DIRS - $(eval LIB_DIR := ${BUILD_PLAT}/lib) - $(eval ROMLIB_DIR := ${BUILD_PLAT}/romlib) - $(eval LIBWRAPPER_DIR := ${BUILD_PLAT}/libwrapper) - $(eval $(call MAKE_PREREQ_DIR,${LIB_DIR},${BUILD_PLAT})) - $(eval $(call MAKE_PREREQ_DIR,${ROMLIB_DIR},${BUILD_PLAT})) - $(eval $(call MAKE_PREREQ_DIR,${LIBWRAPPER_DIR},${BUILD_PLAT})) -endef - # MAKE_LIB macro defines the targets and options to build each BL image. # Arguments: # $(1) = Library name @@ -445,11 +434,8 @@ define MAKE_LIB $(eval SOURCES := $(LIB$(call uppercase,$(1))_SRCS)) $(eval OBJS := $(addprefix $(BUILD_DIR)/,$(call SOURCES_TO_OBJS,$(SOURCES)))) -$(eval $(call MAKE_PREREQ_DIR,${BUILD_DIR},${BUILD_PLAT})) $(eval $(call MAKE_LIB_OBJS,$(BUILD_DIR),$(SOURCES),$(1))) -.PHONY : lib${1}_dirs -lib${1}_dirs: | ${BUILD_DIR} ${LIB_DIR} ${ROMLIB_DIR} ${LIBWRAPPER_DIR} libraries: ${LIB_DIR}/lib$(1).a ifeq ($($(ARCH)-ld-id),arm-link) LDPATHS = --userlibpath=${LIB_DIR} @@ -465,7 +451,7 @@ endif all: ${LIB_DIR}/lib$(1).a -${LIB_DIR}/lib$(1).a: $(OBJS) +${LIB_DIR}/lib$(1).a: $(OBJS) | $$$$(@D)/ $$(s)echo " AR $$@" $$(q)$($(ARCH)-ar) cr $$@ $$? endef @@ -503,26 +489,6 @@ define MAKE_BL $(eval LINKER_SCRIPT_SOURCES := $($(call uppercase,$(1))_LINKER_SCRIPT_SOURCES)) $(eval LINKER_SCRIPTS := $(call linker_script_path,$(LINKER_SCRIPT_SOURCES))) - # We use sort only to get a list of unique object directory names. - # ordering is not relevant but sort removes duplicates. - $(eval TEMP_OBJ_DIRS := $(sort $(dir ${OBJS} ${DEFAULT_LINKER_SCRIPT} ${LINKER_SCRIPTS}))) - # The $(dir ) function leaves a trailing / on the directory names - # Rip off the / to match directory names with make rule targets. - $(eval OBJ_DIRS := $(patsubst %/,%,$(TEMP_OBJ_DIRS))) - -# Create generators for object directory structure - -$(eval $(call MAKE_PREREQ_DIR,${BUILD_DIR},${BUILD_PLAT})) - -$(eval $(foreach objd,${OBJ_DIRS}, - $(call MAKE_PREREQ_DIR,${objd},${BUILD_DIR}))) - -.PHONY : ${1}_dirs - -# We use order-only prerequisites to ensure that directories are created, -# but do not cause re-builds every time a file is written. -${1}_dirs: | ${OBJ_DIRS} - $(eval $(call MAKE_OBJS,$(BUILD_DIR),$(SOURCES),$(1))) # Generate targets to preprocess each required linker script @@ -532,14 +498,14 @@ $(eval $(foreach source,$(DEFAULT_LINKER_SCRIPT_SOURCE) $(LINKER_SCRIPT_SOURCES) $(eval BL_LDFLAGS := $($(call uppercase,$(1))_LDFLAGS)) ifeq ($(USE_ROMLIB),1) -$(ELF): romlib.bin +$(ELF): romlib.bin | $$$$(@D)/ endif # MODULE_OBJS can be assigned by vendors with different compiled # object file path, and prebuilt object file path. $(eval OBJS += $(MODULE_OBJS)) -$(ELF): $(OBJS) $(DEFAULT_LINKER_SCRIPT) $(LINKER_SCRIPTS) | $(1)_dirs libraries $(BL_LIBS) +$(ELF): $(OBJS) $(DEFAULT_LINKER_SCRIPT) $(LINKER_SCRIPTS) | $$$$(@D)/ libraries $(BL_LIBS) $$(s)echo " LD $$@" ifeq ($($(ARCH)-ld-id),arm-link) $$(q)$($(ARCH)-ld) -o $$@ $$(TF_LDFLAGS) $$(LDFLAGS) $(BL_LDFLAGS) --entry=${1}_entrypoint \ @@ -562,11 +528,11 @@ ifeq ($(DISABLE_BIN_GENERATION),1) $(s)echo endif -$(DUMP): $(ELF) +$(DUMP): $(ELF) | $$$$(@D)/ $$(s)echo " OD $$@" $$(q)$($(ARCH)-od) -dx $$< > $$@ -$(BIN): $(ELF) +$(BIN): $(ELF) | $$$$(@D)/ $$(s)echo " BIN $$@" $$(q)$($(ARCH)-oc) -O binary $$< $$@ $(s)echo @@ -598,22 +564,6 @@ define SOURCES_TO_DTBS $(notdir $(patsubst %.dts,%.dtb,$(filter %.dts,$(1)))) endef -# MAKE_FDT_DIRS macro creates the prerequisite directories that host the -# FDT binaries -# $(1) = output directory -# $(2) = input dts -define MAKE_FDT_DIRS - $(eval DTBS := $(addprefix $(1)/,$(call SOURCES_TO_DTBS,$(2)))) - $(eval TEMP_DTB_DIRS := $(sort $(dir ${DTBS}))) - # The $(dir ) function leaves a trailing / on the directory names - # Rip off the / to match directory names with make rule targets. - $(eval DTB_DIRS := $(patsubst %/,%,$(TEMP_DTB_DIRS))) - -$(eval $(foreach objd,${DTB_DIRS},$(call MAKE_PREREQ_DIR,${objd},${BUILD_DIR}))) - -fdt_dirs: ${DTB_DIRS} -endef - # MAKE_DTB generate the Flattened device tree binary # $(1) = output directory # $(2) = input dts @@ -628,12 +578,12 @@ $(eval DTSDEP := $(patsubst %.dtb,%.o.d,$(DOBJ))) # Dependencies of the DT compilation on its pre-compiled DTS $(eval DTBDEP := $(patsubst %.dtb,%.d,$(DOBJ))) -$(DPRE): $(2) | fdt_dirs +$(DPRE): $(2) | $$$$(@D)/ $$(s)echo " CPP $$<" $(eval DTBS := $(addprefix $(1)/,$(call SOURCES_TO_DTBS,$(2)))) $$(q)$($(ARCH)-cpp) -E $$(TF_CFLAGS_$(ARCH)) $$(DTC_CPPFLAGS) -MT $(DTBS) -MMD -MF $(DTSDEP) -o $(DPRE) $$< -$(DOBJ): $(DPRE) $(filter-out %.d,$(MAKEFILE_LIST)) | fdt_dirs +$(DOBJ): $(DPRE) $(filter-out %.d,$(MAKEFILE_LIST)) | $$$$(@D)/ $$(s)echo " DTC $$<" $$(q)$($(ARCH)-dtc) $$(DTC_FLAGS) -d $(DTBDEP) -o $$@ $$< @@ -651,8 +601,6 @@ define MAKE_DTBS $(and $(REMAIN),$(error FDT_SOURCES contain non-DTS files: $(REMAIN))) $(eval $(foreach obj,$(DOBJS),$(call MAKE_DTB,$(1),$(obj)))) - $(eval $(call MAKE_FDT_DIRS,$(1),$(2))) - -dtbs: $(DTBS) +dtbs: $(addprefix $(1)/,$(call SOURCES_TO_DTBS,$(2))) all: dtbs endef diff --git a/make_helpers/unix.mk b/make_helpers/unix.mk index 4fd819a54..fa7722a6c 100644 --- a/make_helpers/unix.mk +++ b/make_helpers/unix.mk @@ -38,18 +38,6 @@ ifndef UNIX_MK -$(q)rm -rf ${1} endef - # ${1} is the directory to be generated. - # ${2} is optional, and allows a prerequisite to be specified. - # Do nothing if $1 == $2, to ignore self dependencies. - define MAKE_PREREQ_DIR - ifneq (${1},${2}) - -${1} : ${2} - $(q)mkdir -p "${1}" - - endif - endef - define SHELL_REMOVE_DIR -$(q)rm -rf "${1}" endef diff --git a/make_helpers/windows.mk b/make_helpers/windows.mk index 2f5d51bf1..c24aa0843 100644 --- a/make_helpers/windows.mk +++ b/make_helpers/windows.mk @@ -47,19 +47,6 @@ ifndef WINDOWS_MK $(eval $(foreach filename,$(wildcard ${1}),$(call DELETE_IF_THERE,${filename}))) endef - # ${1} is the directory to be generated. - # ${2} is optional, and allows prerequisites to be specified. - # Do nothing if $1 == $2, to ignore self dependencies. - define MAKE_PREREQ_DIR - ifneq (${1},${2}) - -${1} : ${2} - $(eval tmp_dir:=$(subst /,\,${1})) - -@if not exist "$(tmp_dir)" mkdir "${tmp_dir}" - - endif - endef - # ${1} is the directory to be removed. define SHELL_REMOVE_DIR $(eval tmp_dir:=$(subst /,\,${1})) diff --git a/plat/imx/imx7/common/imx7.mk b/plat/imx/imx7/common/imx7.mk index 950d8fd2e..2bda3a5d0 100644 --- a/plat/imx/imx7/common/imx7.mk +++ b/plat/imx/imx7/common/imx7.mk @@ -71,7 +71,6 @@ ROT_KEY = $(BUILD_PLAT)/rot_key.pem ROTPK_HASH = $(BUILD_PLAT)/rotpk_sha256.bin $(eval $(call add_define_val,ROTPK_HASH,'"$(ROTPK_HASH)"')) -$(eval $(call MAKE_LIB_DIRS)) $(BUILD_PLAT)/bl2/imx7_rotpk.o: $(ROTPK_HASH) diff --git a/plat/imx/imx8m/imx8mm/platform.mk b/plat/imx/imx8m/imx8mm/platform.mk index 40554c3fc..f0cdb3e17 100644 --- a/plat/imx/imx8m/imx8mm/platform.mk +++ b/plat/imx/imx8m/imx8mm/platform.mk @@ -127,7 +127,6 @@ ROT_KEY = $(BUILD_PLAT)/rot_key.pem ROTPK_HASH = $(BUILD_PLAT)/rotpk_sha256.bin $(eval $(call add_define_val,ROTPK_HASH,'"$(ROTPK_HASH)"')) -$(eval $(call MAKE_LIB_DIRS)) $(BUILD_PLAT)/bl2/imx8mm_rotpk.o: $(ROTPK_HASH) diff --git a/plat/imx/imx8m/imx8mp/platform.mk b/plat/imx/imx8m/imx8mp/platform.mk index 5f4ddee42..5df598cf1 100644 --- a/plat/imx/imx8m/imx8mp/platform.mk +++ b/plat/imx/imx8m/imx8mp/platform.mk @@ -124,7 +124,6 @@ ROT_KEY = $(BUILD_PLAT)/rot_key.pem ROTPK_HASH = $(BUILD_PLAT)/rotpk_sha256.bin $(eval $(call add_define_val,ROTPK_HASH,'"$(ROTPK_HASH)"')) -$(eval $(call MAKE_LIB_DIRS)) $(BUILD_PLAT)/bl2/imx8mp_rotpk.o: $(ROTPK_HASH) diff --git a/plat/marvell/armada/a3k/common/a3700_common.mk b/plat/marvell/armada/a3k/common/a3700_common.mk index 18f5430d2..e8f892d2c 100644 --- a/plat/marvell/armada/a3k/common/a3700_common.mk +++ b/plat/marvell/armada/a3k/common/a3700_common.mk @@ -167,10 +167,9 @@ $(TIMDDRTOOL): FORCE $(if $(shell git -C $(value MV_DDR_PATH) rev-parse --show-cdup 2>&1),$(error "'MV_DDR_PATH=$(value MV_DDR_PATH)' was specified, but '$(value MV_DDR_PATH)' does not contain valid mv-ddr-marvell git repository")) $(q)$(MAKE) --no-print-directory -C $(WTP) MV_DDR_PATH=$(MV_DDR_PATH) DDR_TOPOLOGY=$(DDR_TOPOLOGY) mv_ddr -$(BUILD_PLAT)/$(UART_IMAGE): $(BUILD_PLAT)/$(BOOT_IMAGE) $(BUILD_PLAT)/wtmi.bin $(TBB) $(TIMBUILD) $(TIMDDRTOOL) +$(BUILD_PLAT)/$(UART_IMAGE): $(BUILD_PLAT)/$(BOOT_IMAGE) $(BUILD_PLAT)/wtmi.bin $(TBB) $(TIMBUILD) $(TIMDDRTOOL) | $(BUILD_PLAT)/$(BUILD_UART)/ $$(@D)/ $(s)echo $(s)echo "Building uart images" - $(q)mkdir -p $(BUILD_PLAT)/$(BUILD_UART) $(q)cp -a $(BUILD_PLAT)/wtmi.bin $(BUILD_PLAT)/$(BUILD_UART)/wtmi.bin $(q)cp -a $(BUILD_PLAT)/$(BOOT_IMAGE) $(BUILD_PLAT)/$(BUILD_UART)/$(BOOT_IMAGE) $(q)cd $(BUILD_PLAT)/$(BUILD_UART) && $(TIMBUILD) $(TIMBLDUARTARGS) diff --git a/plat/mediatek/build_helpers/mtk_build_helpers.mk b/plat/mediatek/build_helpers/mtk_build_helpers.mk index a4970494e..0cb2014a8 100644 --- a/plat/mediatek/build_helpers/mtk_build_helpers.mk +++ b/plat/mediatek/build_helpers/mtk_build_helpers.mk @@ -71,15 +71,6 @@ define MAKE_MODULE $(eval SOURCES := $(2)) $(eval OBJS_TEMP := $(addprefix $(BUILD_DIR)/$(MODULE)/,$(call SOURCES_TO_OBJS,$(SOURCES)))) $(eval MODULE_OBJS += $(OBJS_TEMP)) - # We use sort only to get a list of unique object directory names. - # ordering is not relevant but sort removes duplicates. - $(eval TEMP_OBJ_DIRS := $(sort $(dir ${OBJS_TEMP} ${LINKERFILE}))) - # The $(dir ) function leaves a trailing / on the directory names - # Rip off the / to match directory names with make rule targets. - $(eval OBJ_DIRS := $(patsubst %/,%,$(TEMP_OBJ_DIRS))) - -$(eval $(foreach objd,${OBJ_DIRS},$(call MAKE_PREREQ_DIR,${objd},${BUILD_DIR}))) -${3}_dirs: | ${OBJ_DIRS} $(eval $(call MAKE_OBJS,$(BUILD_DIR)/$(MODULE),$(SOURCES),${3})) diff --git a/plat/nxp/soc-lx2160a/ddr_fip.mk b/plat/nxp/soc-lx2160a/ddr_fip.mk index e717cbc7d..c303cedb0 100644 --- a/plat/nxp/soc-lx2160a/ddr_fip.mk +++ b/plat/nxp/soc-lx2160a/ddr_fip.mk @@ -38,8 +38,6 @@ ifeq (${DDR_DMEM_RDIMM_2D},) DDR_DMEM_RDIMM_2D := ${DDR_PHY_BIN_PATH}/ddr4_rdimm2d_pmu_train_dmem.bin endif -$(shell mkdir -p '${BUILD_PLAT}') - ifeq (${DDR_FIP_NAME},) ifeq (${TRUSTED_BOARD_BOOT},1) DDR_FIP_NAME := ddr_fip_sec.bin diff --git a/plat/nxp/soc-lx2160a/ddr_tbbr.mk b/plat/nxp/soc-lx2160a/ddr_tbbr.mk index deb475b08..836a431f0 100644 --- a/plat/nxp/soc-lx2160a/ddr_tbbr.mk +++ b/plat/nxp/soc-lx2160a/ddr_tbbr.mk @@ -39,8 +39,6 @@ NTFW_NVCTR_VAL ?= 0 # Pass the non-volatile counters to the cert_create tool $(eval $(call CERT_ADD_CMD_OPT,${TFW_NVCTR_VAL},--tfw-nvctr,DDR_)) -$(shell mkdir -p '${BUILD_PLAT}') - ifeq (${DDR_KEY},) DDR_KEY=${BUILD_PLAT}/ddr.pem endif diff --git a/plat/rockchip/rk3399/platform.mk b/plat/rockchip/rk3399/platform.mk index 2394dcea9..9d0e21579 100644 --- a/plat/rockchip/rk3399/platform.mk +++ b/plat/rockchip/rk3399/platform.mk @@ -104,9 +104,8 @@ export CCACHE_EXTRAFILES ${BUILD_PLAT}/bl31/pmu_fw.o: CCACHE_EXTRAFILES=$(RK3399M0FW):$(RK3399M0PMUFW) ${RK_PLAT_SOC}/drivers/pmu/pmu_fw.S: $(RK3399M0FW) -$(eval $(call MAKE_PREREQ_DIR,${BUILD_M0},${BUILD_PLAT})) .PHONY: $(RK3399M0FW) -$(RK3399M0FW): | ${BUILD_M0} +$(RK3399M0FW): | $$(@D)/ $(MAKE) -C ${RK_PLAT_SOC}/drivers/m0 BUILD=$(abspath ${BUILD_PLAT}/m0) # Do not enable SVE diff --git a/plat/st/common/common_rules.mk b/plat/st/common/common_rules.mk index 8b81c7fab..fba778391 100644 --- a/plat/st/common/common_rules.mk +++ b/plat/st/common/common_rules.mk @@ -41,7 +41,7 @@ check_dtc_version: fi # Create DTB file for BL2 -${BUILD_PLAT}/fdts/%-bl2.dts: fdts/%.dts fdts/${BL2_DTSI} | ${BUILD_PLAT} fdt_dirs +${BUILD_PLAT}/fdts/%-bl2.dts: fdts/%.dts fdts/${BL2_DTSI} | $$(@D)/ $(q)echo '#include "$(patsubst fdts/%,%,$<)"' > $@ $(q)echo '#include "${BL2_DTSI}"' >> $@ diff --git a/plat/st/stm32mp1/platform.mk b/plat/st/stm32mp1/platform.mk index a1f44e8ba..138f16c95 100644 --- a/plat/st/stm32mp1/platform.mk +++ b/plat/st/stm32mp1/platform.mk @@ -255,11 +255,11 @@ BL2_SOURCES += drivers/st/ddr/stm32mp1_ddr.c \ ifeq ($(AARCH32_SP),sp_min) # Create DTB file for BL32 -${BUILD_PLAT}/fdts/%-bl32.dts: fdts/%.dts fdts/${BL32_DTSI} | ${BUILD_PLAT} fdt_dirs +${BUILD_PLAT}/fdts/%-bl32.dts: fdts/%.dts fdts/${BL32_DTSI} | $$(@D)/ $(q)echo '#include "$(patsubst fdts/%,%,$<)"' > $@ $(q)echo '#include "${BL32_DTSI}"' >> $@ -${BUILD_PLAT}/fdts/%-bl32.dtb: ${BUILD_PLAT}/fdts/%-bl32.dts +${BUILD_PLAT}/fdts/%-bl32.dtb: ${BUILD_PLAT}/fdts/%-bl32.dts | $$(@D)/ endif include plat/st/common/common_rules.mk diff --git a/tools/renesas/rcar_layout_create/makefile b/tools/renesas/rcar_layout_create/makefile index 115ca5c63..7a64b1908 100644 --- a/tools/renesas/rcar_layout_create/makefile +++ b/tools/renesas/rcar_layout_create/makefile @@ -7,6 +7,7 @@ toolchains := aarch64 +include ../../../make_helpers/build-rules.mk include ../../../make_helpers/common.mk include ../../../make_helpers/toolchain.mk @@ -94,29 +95,29 @@ all: $(FILE_NAME_SA6).srec $(FILE_NAME_SA6).bin # Linker ################################################### -$(FILE_NAME_SA0).srec: $(OUTPUT_FILE_SA0) +$(FILE_NAME_SA0).srec: $(OUTPUT_FILE_SA0) | $$(@D)/ $(aarch64-oc) -O srec --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA0) $(FILE_NAME_SA0).srec -$(FILE_NAME_SA0).bin: $(OUTPUT_FILE_SA0) +$(FILE_NAME_SA0).bin: $(OUTPUT_FILE_SA0) | $$(@D)/ $(aarch64-oc) -O binary --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA0) $(FILE_NAME_SA0).bin -$(OUTPUT_FILE_SA0): $(MEMORY_DEF_SA0) $(OBJ_FILE_SA0) +$(OUTPUT_FILE_SA0): $(MEMORY_DEF_SA0) $(OBJ_FILE_SA0) | $$(@D)/ $(aarch64-ld) $(OBJ_FILE_SA0) -nostdlib -T $(MEMORY_DEF_SA0) -o $(OUTPUT_FILE_SA0) -Wl,-Map $(FILE_NAME_SA0).map -$(FILE_NAME_SA6).srec: $(OUTPUT_FILE_SA6) +$(FILE_NAME_SA6).srec: $(OUTPUT_FILE_SA6) | $$(@D)/ $(aarch64-oc) -O srec --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA6) $(FILE_NAME_SA6).srec -$(FILE_NAME_SA6).bin: $(OUTPUT_FILE_SA6) +$(FILE_NAME_SA6).bin: $(OUTPUT_FILE_SA6) | $$(@D)/ $(aarch64-oc) -O binary --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA6) $(FILE_NAME_SA6).bin -$(OUTPUT_FILE_SA6): $(MEMORY_DEF_SA6) $(OBJ_FILE_SA6) +$(OUTPUT_FILE_SA6): $(MEMORY_DEF_SA6) $(OBJ_FILE_SA6) | $$(@D)/ $(aarch64-ld) $(OBJ_FILE_SA6) -nostdlib -T $(MEMORY_DEF_SA6) -o $(OUTPUT_FILE_SA6) -Wl,-Map $(FILE_NAME_SA6).map ################################################### # Compile ################################################### -%.o: %.c +%.o: %.c | $$(@D)/ $(aarch64-cc) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< .PHONY: clean diff --git a/tools/renesas/rzg_layout_create/makefile b/tools/renesas/rzg_layout_create/makefile index 1e8f7ff71..936420dbc 100644 --- a/tools/renesas/rzg_layout_create/makefile +++ b/tools/renesas/rzg_layout_create/makefile @@ -7,6 +7,7 @@ toolchains := aarch64 +include ../../../make_helpers/build-rules.mk include ../../../make_helpers/common.mk include ../../../make_helpers/toolchain.mk @@ -91,29 +92,29 @@ all: $(FILE_NAME_SA6).srec $(FILE_NAME_SA6).bin # Linker ################################################### -$(FILE_NAME_SA0).srec: $(OUTPUT_FILE_SA0) +$(FILE_NAME_SA0).srec: $(OUTPUT_FILE_SA0) | $$(@D)/ $(aarch64-oc) -O srec --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA0) $(FILE_NAME_SA0).srec -$(FILE_NAME_SA0).bin: $(OUTPUT_FILE_SA0) +$(FILE_NAME_SA0).bin: $(OUTPUT_FILE_SA0) | $$(@D)/ $(aarch64-oc) -O binary --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA0) $(FILE_NAME_SA0).bin -$(OUTPUT_FILE_SA0): $(MEMORY_DEF_SA0) $(OBJ_FILE_SA0) +$(OUTPUT_FILE_SA0): $(MEMORY_DEF_SA0) $(OBJ_FILE_SA0) | $$(@D)/ $(aarch64-ld) $(OBJ_FILE_SA0) -nostdlib -T $(MEMORY_DEF_SA0) -o $(OUTPUT_FILE_SA0) -Wl,-Map $(FILE_NAME_SA0).map -$(FILE_NAME_SA6).srec: $(OUTPUT_FILE_SA6) +$(FILE_NAME_SA6).srec: $(OUTPUT_FILE_SA6) | $$(@D)/ $(aarch64-oc) -O srec --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA6) $(FILE_NAME_SA6).srec -$(FILE_NAME_SA6).bin: $(OUTPUT_FILE_SA6) +$(FILE_NAME_SA6).bin: $(OUTPUT_FILE_SA6) | $$(@D)/ $(aarch64-oc) -O binary --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA6) $(FILE_NAME_SA6).bin -$(OUTPUT_FILE_SA6): $(MEMORY_DEF_SA6) $(OBJ_FILE_SA6) +$(OUTPUT_FILE_SA6): $(MEMORY_DEF_SA6) $(OBJ_FILE_SA6) | $$(@D)/ $(aarch64-ld) $(OBJ_FILE_SA6) -nostdlib -T $(MEMORY_DEF_SA6) -o $(OUTPUT_FILE_SA6) -Wl,-Map $(FILE_NAME_SA6).map ################################################### # Compile ################################################### -%.o: %.c +%.o: %.c | $$(@D)/ $(aarch64-cc) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< .PHONY: clean