mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-08 05:43:53 +00:00
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 <chris.kay@arm.com>
This commit is contained in:
parent
309cd9bbb3
commit
f4dd18c270
19 changed files with 65 additions and 146 deletions
4
Makefile
4
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
|
||||
|
|
|
@ -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) $<
|
||||
|
||||
|
|
18
make_helpers/build-rules.mk
Normal file
18
make_helpers/build-rules.mk
Normal file
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}))
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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}))
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}"' >> $@
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue