meta-st-stm32mp/recipes-bsp/u-boot/u-boot-stm32mp-archiver.inc

194 lines
7.4 KiB
PHP

#
# Archiver Configuration
#
SRC_URI:append = " file://README.HOW_TO.txt "
inherit archiver
ARCHIVER_MODE[src] = "original"
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
# Default U-Boot overall settings to null
UBOOT_CONFIG ?=
UBOOT_DEFCONFIG ?=
UBOOT_BINARY ?=
UBOOT_DEVICETREE ?=
EOF
if [ -n "${UBOOT_CONFIG}" ]; then
unset i j k
for config in ${UBOOT_MACHINE}; do
i=$(expr $i + 1);
for type in ${UBOOT_CONFIG}; do
j=$(expr $j + 1);
if [ $j -eq $i ]; then
for binary in ${UBOOT_BINARIES}; do
k=$(expr $k + 1);
if [ $k -eq $i ]; then
type_suffix=$(echo ${type} | cut -d'_' -f1)
type_filter=$(echo ${type} | cut -d'_' -f2)
[ "${type_suffix}" = "${type_filter}" ] && type_filter=""
if [ -z "${type_filter}" ]; then
devicetree="${UBOOT_DEVICETREE}"
else
devicetree=""
for dt in ${UBOOT_DEVICETREE}; do
[ -z "$(echo ${dt} | grep ${type_filter})" ] || devicetree="${devicetree} ${dt}"
done
fi
cat << EOF >> ${ARCHIVER_OUTDIR}/Makefile.sdk
# Init default config settings
UBOOT_CONFIGS += ${type_suffix}
UBOOT_DEFCONFIG_$type_suffix += ${config}
UBOOT_BINARY_$config ?= ${binary}
UBOOT_DEVICETREE_$config ?= ${devicetree}
EOF
fi
done
unset k
fi
done
unset j
done
unset i
fi
cat << EOF >> ${ARCHIVER_OUTDIR}/Makefile.sdk
# Remove default variables
LDFLAGS =
CFLAGS =
CPPFLAGS =
UBOOT_LOCALVERSION = ${UBOOT_LOCALVERSION}
# Display U-Boot config details
define uboot-configs
echo " \$(1)" ; \\
\$(foreach defconfig, \$(if \$(UBOOT_DEFCONFIG),\$(UBOOT_DEFCONFIG),\$(UBOOT_DEFCONFIG_\$(1))), \\
echo " defconfig : \$(defconfig)" ; \\
echo " for binary : \$(if \$(UBOOT_BINARY),\$(UBOOT_BINARY),\$(UBOOT_BINARY_\$(defconfig)))" ; \\
echo " with devicetree: \$(if \$(DEVICETREE),\$(DEVICETREE),\$(UBOOT_DEVICETREE_\$(defconfig)))" ; \\
)
endef
# Configure U-Boot configure rules (configure-DEFCONFIG)
define configure-rules
configure-\$(1):: version
@mkdir -p \$(BLD_PATH)/\$(1)
@echo \$(UBOOT_LOCALVERSION) > \$(BLD_PATH)/\$(1)/.scmversion
\$(MAKE) -C \$(SRC_PATH) O=\$(BLD_PATH)/\$(1) \$(1) || exit 1
endef
# Configure U-Boot make rules (uboot-DEFCONFIG)
define uboot-rules
uboot-\$(1):: configure-\$(1)
@mkdir -p \$(DEPLOYDIR)
@\$(foreach dt, \$(if \$(DEVICETREE),\$(DEVICETREE),\$(UBOOT_DEVICETREE_\$(1))), \\
\$(MAKE) -C \$(SRC_PATH) ${UBOOT_MAKE_TARGET} \\
O=\$(BLD_PATH)/\$(1) \\
DEVICE_TREE=\$(dt) \\
DEVICE_TREE_EXT=\$(dt).dtb || exit 1 ; \\
cp -f \$(BLD_PATH)/\$(1)/\$(3) \$(DEPLOYDIR)/u-boot-\$(dt).\$(shell echo \$(3) | cut -d'.' -f2) || exit 1 ; \\
if [ -f \$(BLD_PATH)/\$(1)/\$(shell echo \$(3) | cut -d'.' -f1).stm32 ]; then \\
cp -f \$(BLD_PATH)/\$(1)/\$(shell echo \$(3) | cut -d'.' -f1).stm32 \$(DEPLOYDIR)/u-boot-\$(dt).stm32 ; \\
fi ; \\
if [ -f \$(BLD_PATH)/\$(1)/${SPL_BINARY_STM32} ]; then \\
cp -f \$(BLD_PATH)/\$(1)/${SPL_BINARY_STM32} \$(DEPLOYDIR)/${SPL_BINARYNAME}-\$(dt); \\
fi ; \\
)
endef
# Configure U-Boot deploy rules (deploy-DEFCONFIG)
define deploy-rules
deploy-\$(1):: uboot-\$(1)
@mkdir -p \$(DEPLOYDIR)
@mkdir -p \$(DEPLOYDIR)/debug
@\$(foreach dt, \$(if \$(DEVICETREE),\$(DEVICETREE),\$(UBOOT_DEVICETREE_\$(1))), \\
if [ "\$(shell echo \$(3) | cut -d'.' -f2)" = "dtb" ]; then \\
cp -f \$(BLD_PATH)/\$(1)/u-boot-nodtb.bin \$(DEPLOYDIR)/u-boot-nodtb\$(strip \$(foreach soc,${STM32MP_SOC_NAME},\$(if \$(findstring \$(soc),\$(dt)),-\$(soc),))).bin ; \\
fi ; \\
if [ -f \$(BLD_PATH)/\$(1)/${UBOOT_ELF} ]; then \\
cp -f \$(BLD_PATH)/\$(1)/${UBOOT_ELF} \$(DEPLOYDIR)/debug/u-boot\$(strip \$(foreach soc,${STM32MP_SOC_NAME},\$(if \$(findstring \$(soc),\$(dt)),-\$(soc),))).${UBOOT_ELF_SUFFIX} ; \\
fi ; \\
if [ -f \$(BLD_PATH)/\$(1)/${SPL_ELF} ]; then \\
cp -f \$(BLD_PATH)/\$(1)/${SPL_ELF} \$(DEPLOYDIR)/debug/${SPL_ELF_NAME}\$(strip \$(foreach soc,${STM32MP_SOC_NAME},\$(if \$(findstring \$(soc),\$(dt)),-\$(soc),))); \\
fi ; \\
)
endef
# Configure overall deploy rules list
deploy-targets := \$(foreach config, \$(if \$(UBOOT_CONFIG),\$(UBOOT_CONFIG),\$(UBOOT_CONFIGS)), \\
\$(foreach defconfig, \$(if \$(UBOOT_DEFCONFIG),\$(UBOOT_DEFCONFIG),\$(UBOOT_DEFCONFIG_\$(config))), deploy-\$(defconfig)) \\
)
# Set dependencies list for building all
DEPS = \$(deploy-targets)
DEPS += fip
help:
@echo
@echo "U-Boot configuration:"
@echo " UBOOT_CONFIG = \$(if \$(UBOOT_CONFIG),\$(UBOOT_CONFIG),\$(UBOOT_CONFIGS))"
@echo "Config details:"
@\$(foreach config, \$(if \$(UBOOT_CONFIG),\$(UBOOT_CONFIG),\$(UBOOT_CONFIGS)), \$(call uboot-configs,\$(config)))
@echo
@echo "Note that each U-Boot configuration settings can be updated through overall or specific config var:"
@echo " UBOOT_DEFCONFIG"
@echo " UBOOT_BINARY"
@echo " DEVICETREE"
@echo
@echo "U-Boot folder configuration:"
@echo " SRC_PATH = \$(SRC_PATH)"
@echo " BLD_PATH = \$(BLD_PATH)"
@echo " DEPLOYDIR = \$(DEPLOYDIR)"
@echo
@echo "FIP configuration:"
@echo " Do not forget to set FIP deploydir folders (such as FIP_DEPLOYDIR_ROOT) to provide path to needed binaries"
@echo
@echo "Available targets:"
@echo " all : build U-Boot binaries for defined config(s)"
@echo " fip : build FIP binaries"
@echo " clean : clean build directories from generated files"
all: \$(DEPS)
clean:
@for config in \$(UBOOT_CONFIGS); do \\
uboot_type=\$\$(echo \$\$config | cut -d',' -f2) ; \\
echo "Removing \$(BLD_PATH)/\$\$uboot_type ..." ; \\
rm -rf \$(BLD_PATH)/\$\$uboot_type ; \\
done
@echo "Removing \$(DEPLOYDIR) ..."
@rm -rf \$(DEPLOYDIR)
@echo
fip: \$(deploy-targets)
FIP_DEPLOYDIR_UBOOT=\$(DEPLOYDIR) FIP_DEVICETREE="\$(DEVICETREE)" fiptool-stm32mp
version:
@if test ! -e \$(SRC_PATH)/.scmversion ; then echo \$(UBOOT_LOCALVERSION) > \$(SRC_PATH)/.scmversion; fi
# Set U-Boot configure rules
\$(foreach config, \$(if \$(UBOOT_CONFIG),\$(UBOOT_CONFIG),\$(UBOOT_CONFIGS)), \\
\$(foreach defconfig, \$(if \$(UBOOT_DEFCONFIG),\$(UBOOT_DEFCONFIG),\$(UBOOT_DEFCONFIG_\$(config))), \$(eval \$(call configure-rules,\$(defconfig),\$(config)))))
# Set U-Boot make rules
\$(foreach config, \$(if \$(UBOOT_CONFIG),\$(UBOOT_CONFIG),\$(UBOOT_CONFIGS)), \\
\$(foreach defconfig, \$(if \$(UBOOT_DEFCONFIG),\$(UBOOT_DEFCONFIG),\$(UBOOT_DEFCONFIG_\$(config))), \\
\$(eval \$(call uboot-rules,\$(defconfig),\$(config),\$(if \$(UBOOT_BINARY),\$(UBOOT_BINARY),\$(UBOOT_BINARY_\$(defconfig)))))))
# Set U-Boot deploy rules
\$(foreach config, \$(if \$(UBOOT_CONFIG),\$(UBOOT_CONFIG),\$(UBOOT_CONFIGS)), \\
\$(foreach defconfig, \$(if \$(UBOOT_DEFCONFIG),\$(UBOOT_DEFCONFIG),\$(UBOOT_DEFCONFIG_\$(config))), \\
\$(eval \$(call deploy-rules,\$(defconfig),\$(config),\$(if \$(UBOOT_BINARY),\$(UBOOT_BINARY),\$(UBOOT_BINARY_\$(defconfig)))))))
EOF
}
do_ar_original[prefuncs] += "archiver_create_makefile_for_sdk"