242 lines
8.6 KiB
PHP
242 lines
8.6 KiB
PHP
#
|
|
# Archiver Configuration
|
|
#
|
|
SRC_URI:append = " file://README.HOW_TO.txt "
|
|
|
|
inherit archiver
|
|
ARCHIVER_MODE[src] = "original"
|
|
COPYLEFT_LICENSE_INCLUDE:append = " BSD-3* "
|
|
|
|
inherit archiver_stm32mp_clean
|
|
|
|
archiver_create_makefile_for_sdk() {
|
|
mkdir -p ${ARCHIVER_OUTDIR}
|
|
cat << EOF > ${ARCHIVER_OUTDIR}/Makefile.sdk
|
|
# Set default path
|
|
SRC_PATH ?= \$(PWD)
|
|
BLD_PATH ?= \$(SRC_PATH)/../build
|
|
DEPLOYDIR ?= \$(SRC_PATH)/../deploy
|
|
|
|
BL32_DEPLOYDIR ?= \$(DEPLOYDIR)/bl32
|
|
FWCONFIG_DEPLOYDIR ?= \$(DEPLOYDIR)/fwconfig
|
|
|
|
# Configure default TF-A features
|
|
TF_A_ENABLE_DEBUG_WRAPPER ?= ${TF_A_ENABLE_DEBUG_WRAPPER}
|
|
|
|
# Configure FIP
|
|
ENABLE_FIP ?= ${@bb.utils.contains('MACHINE_FEATURES', 'fip', '1', '', d)}
|
|
|
|
# Set default TF-A config
|
|
ifeq (\$(ENABLE_FIP), 1)
|
|
TF_A_CONFIG ?= ${TF_A_CONFIG}
|
|
else
|
|
TF_A_CONFIG ?= ${BOOTSCHEME_LABELS} ${TF_A_CONFIG_4LEGACY}
|
|
endif
|
|
|
|
# Default TF-A overall settings to null
|
|
TF_A_BINARY ?=
|
|
TF_A_DEVICETREE ?=
|
|
TF_A_MAKE_TARGET ?=
|
|
TF_A_EXTRA_OPTFLAGS ?=
|
|
|
|
ifeq (\$(ENABLE_FIP), 1)
|
|
|
|
EOF
|
|
unset i
|
|
for config in ${TF_A_CONFIG}; do
|
|
i=$(expr $i + 1)
|
|
cat << EOF >> ${ARCHIVER_OUTDIR}/Makefile.sdk
|
|
# Init default config settings
|
|
TF_A_DEVICETREE_$config ?= $(echo ${TF_A_DEVICETREE} | cut -d',' -f${i})
|
|
TF_A_EXTRA_OPTFLAGS_$config ?= $(echo ${TF_A_EXTRA_OPTFLAGS} | cut -d',' -f${i})
|
|
TF_A_BINARY_$config ?= $(echo ${TF_A_BINARIES} | cut -d',' -f${i})
|
|
TF_A_MAKE_TARGET_$config ?= $(echo ${TF_A_MAKE_TARGET} | cut -d',' -f${i})
|
|
|
|
EOF
|
|
done
|
|
cat << EOF >> ${ARCHIVER_OUTDIR}/Makefile.sdk
|
|
else
|
|
|
|
EOF
|
|
for bootscheme in ${BOOTSCHEME_LABELS}; do
|
|
unset i
|
|
for config in ${TF_A_CONFIG}; do
|
|
i=$(expr $i + 1)
|
|
if [ "$bootscheme" = "$config" ]; then
|
|
cat << EOF >> ${ARCHIVER_OUTDIR}/Makefile.sdk
|
|
# Init default config settings
|
|
TF_A_DEVICETREE_$config ?= $(echo ${TF_A_DEVICETREE} | cut -d',' -f${i})
|
|
TF_A_EXTRA_OPTFLAGS_$config ?= $(echo ${TF_A_EXTRA_OPTFLAGS} | cut -d',' -f${i}) ${TF_A_EXTRACONF_LEGACY}
|
|
TF_A_BINARY_$config ?= $(echo ${TF_A_BINARIES} | cut -d',' -f${i})
|
|
TF_A_MAKE_TARGET_$config ?=
|
|
|
|
EOF
|
|
fi
|
|
done
|
|
done
|
|
|
|
cat << EOF >> ${ARCHIVER_OUTDIR}/Makefile.sdk
|
|
TF_A_DEVICETREE_$(echo ${TF_A_CONFIG_4LEGACY} | xargs) ?=
|
|
TF_A_EXTRA_OPTFLAGS_$(echo ${TF_A_CONFIG_4LEGACY} | xargs) ?=
|
|
TF_A_BINARY_$(echo ${TF_A_CONFIG_4LEGACY} | xargs) ?=
|
|
TF_A_MAKE_TARGET_$(echo ${TF_A_CONFIG_4LEGACY} | xargs) ?=
|
|
|
|
ifeq (\$(TF_A_DEVICETREE_$(echo ${TF_A_CONFIG_4LEGACY} | xargs)),)
|
|
\$(error "Please, define the variable TF_A_DEVICETREE_$(echo ${TF_A_CONFIG_4LEGACY} | xargs)")
|
|
endif
|
|
|
|
ifeq (\$(TF_A_EXTRA_OPTFLAGS_$(echo ${TF_A_CONFIG_4LEGACY} | xargs)),)
|
|
\$(error "Please, define the variable TF_A_EXTRA_OPTFLAGS_$(echo ${TF_A_CONFIG_4LEGACY} | xargs)")
|
|
endif
|
|
|
|
ifeq (\$(TF_A_BINARY_$(echo ${TF_A_CONFIG_4LEGACY} | xargs)),)
|
|
\$(error "Please, define the variable TF_A_BINARY_$(echo ${TF_A_CONFIG_4LEGACY} | xargs)")
|
|
endif
|
|
|
|
endif
|
|
|
|
# Reset default variables
|
|
LDFLAGS =
|
|
CFLAGS =
|
|
CPPFLAGS =
|
|
CC =
|
|
CPP =
|
|
AS =
|
|
AR =
|
|
LD =
|
|
NM =
|
|
# Define default make options
|
|
EXTRA_OEMAKE ?= ${EXTRA_OEMAKE}
|
|
|
|
# Configure overall devicetree list for FIP
|
|
TF_A_DEVICETREE_ALL = $(echo "${TF_A_DEVICETREE}" | sed 's/,/ /g' | xargs -n1 | sort -u | xargs)
|
|
|
|
# Display TF-A config details
|
|
define tf-configs
|
|
echo " \$(1)" ; \\
|
|
echo " with device tree : \$(if \$(TF_A_DEVICETREE),\$(TF_A_DEVICETREE),\$(TF_A_DEVICETREE_\$(1)))" ; \\
|
|
echo " extra optionflags: \$(if \$(TF_A_EXTRA_OPTFLAGS),\$(TF_A_EXTRA_OPTFLAGS),\$(TF_A_EXTRA_OPTFLAGS_\$(1)))" ; \\
|
|
echo " binary basename : \$(if \$(TF_A_BINARY),\$(TF_A_BINARY),\$(TF_A_BINARY_\$(1)) (TF_A_BINARY_\$(1)))" ; \\
|
|
echo " tf-a build target: \$(if \$(TF_A_MAKE_TARGET),\$(TF_A_MAKE_TARGET),\$(TF_A_MAKE_TARGET_\$(1)))" ;
|
|
endef
|
|
|
|
# Configure TF-A make rules
|
|
define tf-rules
|
|
tf-\$(1): \$2
|
|
@mkdir -p \$(BLD_PATH)/\$(1)
|
|
@\$(foreach dt, \$(if \$(TF_A_DEVICETREE),\$(TF_A_DEVICETREE),\$(TF_A_DEVICETREE_\$(1))), \\
|
|
\$(MAKE) \$(EXTRA_OEMAKE) -C \$(SRC_PATH) \\
|
|
BUILD_PLAT=\$(BLD_PATH)/\$(1) \\
|
|
DTB_FILE_NAME=\$(dt).dtb \\
|
|
\$(if \$(TF_A_EXTRA_OPTFLAGS),\$(TF_A_EXTRA_OPTFLAGS),\$(TF_A_EXTRA_OPTFLAGS_\$(1))) \\
|
|
\$(if \$(TF_A_MAKE_TARGET),\$(TF_A_MAKE_TARGET),\$(TF_A_MAKE_TARGET_\$(1))) \\
|
|
\$(foreach soc,${STM32MP_SOC_NAME},\$(if \$(findstring \$(soc),\$(dt)),\$(shell echo \$(soc) | tr a-z A-Z)=1,)) ; \\
|
|
)
|
|
endef
|
|
|
|
# Configure TF-A deploy rules
|
|
define deploy-rules
|
|
deploy-\$(1): tf-\$(1)
|
|
@mkdir -p \$(DEPLOYDIR)
|
|
@mkdir -p \$(DEPLOYDIR)/debug
|
|
@\$(foreach dt, \$(if \$(TF_A_DEVICETREE),\$(TF_A_DEVICETREE),\$(TF_A_DEVICETREE_\$(1))), \\
|
|
if [ -f \$(BLD_PATH)/\$(1)/\$(2)-\$(dt).${TF_A_SUFFIX} ]; then \\
|
|
cp -f \$(BLD_PATH)/\$(1)/\$(2)-\$(dt).${TF_A_SUFFIX} \$(DEPLOYDIR)/\$(2)-\$(dt)-\$(1).${TF_A_SUFFIX} ; \\
|
|
if [ "\$(TF_A_ENABLE_DEBUG_WRAPPER)" = "1" ] ; then \\
|
|
stm32wrapper4dbg -s \$(BLD_PATH)/\$(1)/\$(2)-\$(dt).${TF_A_SUFFIX} -d \$(DEPLOYDIR)/debug/debug-\$(2)-\$(dt)-\$(1).${TF_A_SUFFIX} ; \\
|
|
fi ; \\
|
|
fi ; \\
|
|
if [ -f \$(BLD_PATH)/\$(1)/${BL32_BASENAME}.${BL32_SUFFIX} ] ; then \\
|
|
mkdir -p \$(BL32_DEPLOYDIR) ; \\
|
|
cp -f \$(BLD_PATH)/\$(1)/${BL32_BASENAME}.${BL32_SUFFIX} \$(BL32_DEPLOYDIR)/\$(2)-${BL32_BASENAME}\$(strip \$(foreach soc,${STM32MP_SOC_NAME},\$(if \$(findstring \$(soc),\$(dt)),-\$(soc),))).${BL32_SUFFIX} ; \\
|
|
if [ -f \$(BLD_PATH)/\$(1)/fdts/\$(dt)-${BL32_BASENAME}.${DT_SUFFIX} ]; then \\
|
|
cp -f \$(BLD_PATH)/\$(1)/fdts/\$(dt)-${BL32_BASENAME}.${DT_SUFFIX} \$(BL32_DEPLOYDIR)/ ; \\
|
|
fi ; \\
|
|
if [ -f \$(BLD_PATH)/\$(1)/${BL32_ELF} ]; then \\
|
|
mkdir -p \$(BL32_DEPLOYDIR)/debug ; \\
|
|
mv -f \$(BLD_PATH)/\$(1)/${BL32_ELF} \$(BL32_DEPLOYDIR)/debug/\$(2)-${BL32_BASENAME}\$(strip \$(foreach soc,${STM32MP_SOC_NAME},\$(if \$(findstring \$(soc),\$(dt)),-\$(soc),))).${TF_A_ELF_SUFFIX} ; \\
|
|
fi ; \\
|
|
fi ; \\
|
|
if [ -f \$(BLD_PATH)/\$(1)/fdts/\$(dt)-${FWCONFIG_NAME}.${DT_SUFFIX} ]; then \\
|
|
mkdir -p \$(FWCONFIG_DEPLOYDIR) ; \\
|
|
cp -f \$(BLD_PATH)/\$(1)/fdts/\$(dt)-${FWCONFIG_NAME}.${DT_SUFFIX} \$(FWCONFIG_DEPLOYDIR)/\$(dt)-${FWCONFIG_NAME}-\$(1).${DT_SUFFIX} ; \\
|
|
fi ; \\
|
|
if [ -f \$(BLD_PATH)/\$(1)/${BL2_ELF} ] ; then \\
|
|
cp -f \$(BLD_PATH)/\$(1)/${BL2_ELF} \$(DEPLOYDIR)/debug/\$(2)-${BL2_BASENAME}-\$(1).${TF_A_ELF_SUFFIX} ; \\
|
|
fi ; \\
|
|
if [ -f \$(BLD_PATH)/\$(1)/${BL32_ELF} ] ; then \\
|
|
cp -f \$(BLD_PATH)/\$(1)/${BL32_ELF} \$(DEPLOYDIR)/debug/\$(2)-${BL32_BASENAME}-\$(1).${TF_A_ELF_SUFFIX} ; \\
|
|
fi ; \\
|
|
)
|
|
endef
|
|
|
|
# Set dependencies list for building all
|
|
DEPS = \$(addprefix deploy-,\$(TF_A_CONFIG))
|
|
ifeq (\$(ENABLE_FIP), 1)
|
|
DEPS += fip
|
|
endif
|
|
|
|
help:
|
|
@echo
|
|
@echo "TF-A configuration:"
|
|
@echo " TF_A_CONFIG = \$(TF_A_CONFIG)"
|
|
@echo "Config details:"
|
|
@\$(foreach config, \$(TF_A_CONFIG), \$(call tf-configs,\$(config)))
|
|
@echo
|
|
@echo "Note that each TF-A configuration settings can be updated through overall or specific config var:"
|
|
@echo " TF_A_DEVICETREE"
|
|
@echo " TF_A_EXTRA_OPTFLAGS"
|
|
@echo " TF_A_BINARY"
|
|
@echo " TF_A_MAKE_TARGET"
|
|
@echo
|
|
@echo "TF-A features configuration:"
|
|
@echo " TF_A_ENABLE_DEBUG_WRAPPER = \$(TF_A_ENABLE_DEBUG_WRAPPER) ('1' to generate tf-a for debugging)"
|
|
@echo
|
|
@echo "TF-A folder configuration:"
|
|
@echo " SRC_PATH = \$(SRC_PATH)"
|
|
@echo " BLD_PATH = \$(BLD_PATH)"
|
|
@echo " DEPLOYDIR = \$(DEPLOYDIR)"
|
|
@echo " BL32_DEPLOYDIR = \$(DEPLOYDIR)/bl32"
|
|
@echo " FWCONFIG_DEPLOYDIR = \$(DEPLOYDIR)/fwconfig"
|
|
@echo
|
|
@echo "FIP configuration:"
|
|
@echo " ENABLE_FIP = \$(ENABLE_FIP) ('1' to generate fip binary)"
|
|
ifeq (\$(ENABLE_FIP),1)
|
|
@echo " Do not forget to set FIP deploydir folders (such as FIP_DEPLOYDIR_ROOT) to provide path to needed binaries"
|
|
endif
|
|
@echo
|
|
@echo "Available targets:"
|
|
@echo " all : build TF-A binaries for defined config(s)"
|
|
@echo " fip : build FIP binaries"
|
|
@echo " stm32 : build TF-A stm32 binaries"
|
|
@echo " clean : clean build directories from generated files"
|
|
@echo
|
|
|
|
all: \$(DEPS)
|
|
|
|
host_tools:
|
|
@\$(MAKE) --no-print-directory -C \$(SRC_PATH)/tools/stm32image
|
|
|
|
# Set TF-A make rules
|
|
\$(foreach config, \$(TF_A_CONFIG), \$(eval \$(call tf-rules,\$(config),host_tools)))
|
|
|
|
# Set TF-A deploy rules
|
|
\$(foreach config, \$(TF_A_CONFIG), \$(eval \$(call deploy-rules,\$(config),\$(if \$(TF_A_BINARY),\$(TF_A_BINARY),\$(TF_A_BINARY_\$(config))))))
|
|
|
|
fip: \$(addprefix deploy-,\$(TF_A_CONFIG))
|
|
FIP_DEPLOYDIR_TFA=\$(BL32_DEPLOYDIR) FIP_DEPLOYDIR_FWCONF=\$(FWCONFIG_DEPLOYDIR) FIP_DEVICETREE="\$(if \$(TF_A_DEVICETREE),\$(TF_A_DEVICETREE),\$(TF_A_DEVICETREE_ALL))" fiptool-stm32mp
|
|
|
|
stm32: \$(addprefix deploy-,\$(TF_A_CONFIG))
|
|
|
|
clean:
|
|
@for config in \$(TF_A_CONFIG) ; do \\
|
|
echo "Removing \$(BLD_PATH)/\$\$config ..." ; \\
|
|
rm -rf \$(BLD_PATH)/\$\$config ; \\
|
|
done
|
|
@echo "Removing \$(DEPLOYDIR) ..."
|
|
@rm -rf \$(DEPLOYDIR)
|
|
@echo
|
|
EOF
|
|
}
|
|
do_ar_original[prefuncs] += "archiver_create_makefile_for_sdk"
|