build: Extract trusted-firmware-a.mk

The include/trusted-firmware-a.mk file is based on the
include/u-boot.mk file and should be used to build a Trusted Firmware-A
(TFA) which was previously named Arm trusted firmware.

This is useful for targets where the TFA is board specific like for
Marvell SoCs and probably also NXP Layerscape SoCs.

This also makes use of this abstraction in the
arm-trusted-firmware-mvebu package to build board specific ATF binaries.

The ATF binaries will be automatically activated and build when the
board is selected in the normal build or all boards are selected. This
should also activate the build when build bot creates images.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
Hauke Mehrtens 2020-09-23 03:25:30 +02:00
parent a44a2f9e93
commit d346beb08c
2 changed files with 164 additions and 87 deletions

View File

@ -0,0 +1,93 @@
PKG_NAME ?= trusted-firmware-a
ifndef PKG_SOURCE_PROTO
PKG_SOURCE = trusted-firmware-a-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/snapshot
endif
PKG_BUILD_DIR = $(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
PKG_TARGETS := bin
PKG_FLAGS:=nonshared
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=docs/license.rst
PKG_BUILD_PARALLEL:=1
export GCC_HONOUR_COPTS=s
define Package/trusted-firmware-a/install/default
$(CP) $(patsubst %,$(PKG_BUILD_DIR)/build/$(PLAT)/release/%,$(TFA_IMAGE)) $(1)/
endef
Package/trusted-firmware-a/install = $(Package/trusted-firmware-a/install/default)
define Trusted-Firmware-A/Init
BUILD_TARGET:=
BUILD_SUBTARGET:=
BUILD_DEVICES:=
NAME:=
DEPENDS:=
HIDDEN:=
DEFAULT:=
PLAT:=
VARIANT:=$(1)
TFA_IMAGE:=
endef
TARGET_DEP = TARGET_$(BUILD_TARGET)$(if $(BUILD_SUBTARGET),_$(BUILD_SUBTARGET))
define Build/Trusted-Firmware-A/Target
$(eval $(call Trusted-Firmware-A/Init,$(1)))
$(eval $(call Trusted-Firmware-A/Default,$(1)))
$(eval $(call Trusted-Firmware-A/$(1),$(1)))
define Package/trusted-firmware-a-$(1)
SECTION:=boot
CATEGORY:=Boot Loaders
TITLE:=Trusted-Firmware-A for $(NAME)
VARIANT:=$(VARIANT)
DEPENDS:=@!IN_SDK $(DEPENDS)
HIDDEN:=$(HIDDEN)
ifneq ($(BUILD_TARGET),)
DEPENDS += @$(TARGET_DEP)
ifneq ($(BUILD_DEVICES),)
DEFAULT := y if ($(TARGET_DEP)_Default \
$(patsubst %,|| $(TARGET_DEP)_DEVICE_%,$(BUILD_DEVICES)) \
$(patsubst %,|| $(patsubst TARGET_%,TARGET_DEVICE_%,$(TARGET_DEP))_DEVICE_%,$(BUILD_DEVICES)))
endif
endif
$(if $(DEFAULT),DEFAULT:=$(DEFAULT))
URL:=https://www.trustedfirmware.org/projects/tf-a/
endef
define Package/trusted-firmware-a-$(1)/install
$$(Package/trusted-firmware-a/install)
endef
endef
define Build/Compile/Trusted-Firmware-A
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
CROSS_COMPILE=$(TARGET_CROSS) \
OPENSSL_DIR=$(STAGING_DIR_HOST) \
PLAT=$(PLAT) \
$(TFA_MAKE_FLAGS)
endef
define BuildPackage/Trusted-Firmware-A/Defaults
Build/Configure/Default = $$$$(Build/Configure/Trusted-Firmware-A)
Build/Compile/Default = $$$$(Build/Compile/Trusted-Firmware-A)
endef
define BuildPackage/Trusted-Firmware-A
$(eval $(call BuildPackage/Trusted-Firmware-A/Defaults))
$(foreach type,$(if $(DUMP),$(TFA_TARGETS),$(BUILD_VARIANT)), \
$(eval $(call Build/Trusted-Firmware-A/Target,$(type)))
)
$(eval $(call Build/DefaultTargets))
$(foreach type,$(if $(DUMP),$(TFA_TARGETS),$(BUILD_VARIANT)), \
$(call BuildPackage,trusted-firmware-a-$(type))
)
endef

View File

@ -7,149 +7,170 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=arm-trusted-firmware-mvebu
PKG_VERSION:=2.3 PKG_VERSION:=2.3
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_SOURCE:=trusted-firmware-a-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/snapshot
PKG_HASH:=37f917922bcef181164908c470a2f941006791c0113d738c498d39d95d543b21 PKG_HASH:=37f917922bcef181164908c470a2f941006791c0113d738c498d39d95d543b21
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/trusted-firmware-a-$(PKG_VERSION)
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=docs/license.rst
PKG_MAINTAINER:=Vladimir Vid <vladimir.vid@sartura.hr> PKG_MAINTAINER:=Vladimir Vid <vladimir.vid@sartura.hr>
include $(INCLUDE_DIR)/trusted-firmware-a.mk
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
define Package/arm-trusted-firmware-mvebu define Trusted-Firmware-A/Default
SECTION:=boot BUILD_TARGET:=mvebu
CATEGORY:=Boot Loaders BUILD_SUBTARGET:=cortexa53
DEPENDS:=@TARGET_mvebu_cortexa53 TFA_IMAGE:=flash-image.bin uart-images.tgz
VARIANT:=$(subst arm-trusted-firmware-mvebu-,,$(1)) UBOOT:=
DDR_TOPOLOGY:=
CLOCKSPRESET:=
endef endef
define Package/arm-trusted-firmware-mvebu-espressobin-512mb
$(Package/arm-trusted-firmware-mvebu) define Trusted-Firmware-A/espressobin-512mb
TITLE:=ARM Trusted Firmware for Marvell ESPRESSObin (512MB) NAME:=Marvell ESPRESSObin (512MB)
DEPENDS:=+u-boot-espressobin DEPENDS:=+u-boot-espressobin
BUILD_DEVICES:=globalscale_espressobin
UBOOT:=espressobin UBOOT:=espressobin
DDR_TOPOLOGY:=0 DDR_TOPOLOGY:=0
CLOCKSPRESET:=CPU_800_DDR_800 CLOCKSPRESET:=CPU_800_DDR_800
PLAT:=a3700 PLAT:=a3700
endef endef
define Package/arm-trusted-firmware-mvebu-espressobin-v3-v5-1gb-1cs define Trusted-Firmware-A/espressobin-v3-v5-1gb-1cs
$(Package/arm-trusted-firmware-mvebu) NAME:=Marvell ESPRESSObin V3-V5 (1GB 1CS)
TITLE:=ARM Trusted Firmware for Marvell ESPRESSObin V3-V5 (1GB 1CS)
DEPENDS:=+u-boot-espressobin DEPENDS:=+u-boot-espressobin
BUILD_DEVICES:=globalscale_espressobin
UBOOT:=espressobin UBOOT:=espressobin
DDR_TOPOLOGY:=4 DDR_TOPOLOGY:=4
CLOCKSPRESET:=CPU_800_DDR_800 CLOCKSPRESET:=CPU_800_DDR_800
PLAT:=a3700 PLAT:=a3700
endef endef
define Package/arm-trusted-firmware-mvebu-espressobin-v3-v5-1gb-1cs-emmc define Trusted-Firmware-A/espressobin-v3-v5-1gb-1cs-emmc
$(Package/arm-trusted-firmware-mvebu) NAME:=Marvell ESPRESSObin V3-V5 (1GB 1CS, eMMC)
TITLE:=ARM Trusted Firmware for Marvell ESPRESSObin V3-V5 (1GB 1CS, eMMC)
DEPENDS:=+u-boot-espressobin-emmc DEPENDS:=+u-boot-espressobin-emmc
BUILD_DEVICES:=globalscale_espressobin-emmc
UBOOT:=espressobin-emmc UBOOT:=espressobin-emmc
DDR_TOPOLOGY:=4 DDR_TOPOLOGY:=4
CLOCKSPRESET:=CPU_800_DDR_800 CLOCKSPRESET:=CPU_800_DDR_800
PLAT:=a3700 PLAT:=a3700
endef endef
define Package/arm-trusted-firmware-mvebu-espressobin-v3-v5-1gb-2cs define Trusted-Firmware-A/espressobin-v3-v5-1gb-2cs
$(Package/arm-trusted-firmware-mvebu) NAME:=Marvell ESPRESSObin V3-V5 (1GB, 2CS)
TITLE:=ARM Trusted Firmware for Marvell ESPRESSObin V3-V5 (1GB, 2CS)
DEPENDS:=+u-boot-espressobin DEPENDS:=+u-boot-espressobin
BUILD_DEVICES:=globalscale_espressobin
UBOOT:=espressobin UBOOT:=espressobin
DDR_TOPOLOGY:=2 DDR_TOPOLOGY:=2
CLOCKSPRESET:=CPU_800_DDR_800 CLOCKSPRESET:=CPU_800_DDR_800
PLAT:=a3700 PLAT:=a3700
endef endef
define Package/arm-trusted-firmware-mvebu-espressobin-v3-v5-1gb-2cs-emmc define Trusted-Firmware-A/espressobin-v3-v5-1gb-2cs-emmc
$(Package/arm-trusted-firmware-mvebu) NAME:=Marvell ESPRESSObin V3-V5 (1GB 2CS, eMMC)
TITLE:=ARM Trusted Firmware for Marvell ESPRESSObin V3-V5 (1GB 2CS, eMMC)
DEPENDS:=+u-boot-espressobin-emmc DEPENDS:=+u-boot-espressobin-emmc
BUILD_DEVICES:=globalscale_espressobin-emmc
UBOOT:=espressobin-emmc UBOOT:=espressobin-emmc
DDR_TOPOLOGY:=2 DDR_TOPOLOGY:=2
CLOCKSPRESET:=CPU_800_DDR_800 CLOCKSPRESET:=CPU_800_DDR_800
PLAT:=a3700 PLAT:=a3700
endef endef
define Package/arm-trusted-firmware-mvebu-espressobin-v3-v5-2gb define Trusted-Firmware-A/espressobin-v3-v5-2gb
$(Package/arm-trusted-firmware-mvebu) NAME:=Marvell ESPRESSObin V3-V5 (2GB)
TITLE:=ARM Trusted Firmware for Marvell ESPRESSObin V3-V5 (2GB)
DEPENDS:=+u-boot-espressobin DEPENDS:=+u-boot-espressobin
BUILD_DEVICES:=globalscale_espressobin
UBOOT:=espressobin UBOOT:=espressobin
DDR_TOPOLOGY:=7 DDR_TOPOLOGY:=7
CLOCKSPRESET:=CPU_800_DDR_800 CLOCKSPRESET:=CPU_800_DDR_800
PLAT:=a3700 PLAT:=a3700
endef endef
define Package/arm-trusted-firmware-mvebu-espressobin-v3-v5-2gb-emmc define Trusted-Firmware-A/espressobin-v3-v5-2gb-emmc
$(Package/arm-trusted-firmware-mvebu) NAME:=Marvell ESPRESSObin V3-V5 (2GB, eMMC)
TITLE:=ARM Trusted Firmware for Marvell ESPRESSObin V3-V5 (2GB, eMMC)
DEPENDS:=+u-boot-espressobin-emmc DEPENDS:=+u-boot-espressobin-emmc
BUILD_DEVICES:=globalscale_espressobin-emmc
UBOOT:=espressobin-emmc UBOOT:=espressobin-emmc
DDR_TOPOLOGY:=7 DDR_TOPOLOGY:=7
CLOCKSPRESET:=CPU_800_DDR_800 CLOCKSPRESET:=CPU_800_DDR_800
PLAT:=a3700 PLAT:=a3700
endef endef
define Package/arm-trusted-firmware-mvebu-espressobin-v7-1gb define Trusted-Firmware-A/espressobin-v7-1gb
$(Package/arm-trusted-firmware-mvebu) NAME:=Marvell ESPRESSObin V7 (1GB)
TITLE:=ARM Trusted Firmware for Marvell ESPRESSObin V7 (1GB)
DEPENDS:=+u-boot-espressobin DEPENDS:=+u-boot-espressobin
BUILD_DEVICES:=globalscale_espressobin-v7
UBOOT:=espressobin UBOOT:=espressobin
DDR_TOPOLOGY:=5 DDR_TOPOLOGY:=5
CLOCKSPRESET:=CPU_800_DDR_800 CLOCKSPRESET:=CPU_800_DDR_800
PLAT:=a3700 PLAT:=a3700
endef endef
define Package/arm-trusted-firmware-mvebu-espressobin-v7-1gb-emmc define Trusted-Firmware-A/espressobin-v7-1gb-emmc
$(Package/arm-trusted-firmware-mvebu) NAME:=Marvell ESPRESSObin V7 (1GB, eMMC)
TITLE:=ARM Trusted Firmware for Marvell ESPRESSObin V7 (1GB, eMMC)
DEPENDS:=+u-boot-espressobin DEPENDS:=+u-boot-espressobin
BUILD_DEVICES:=globalscale_espressobin-v7-emmc
UBOOT:=espressobin-emmc UBOOT:=espressobin-emmc
DDR_TOPOLOGY:=5 DDR_TOPOLOGY:=5
CLOCKSPRESET:=CPU_800_DDR_800 CLOCKSPRESET:=CPU_800_DDR_800
PLAT:=a3700 PLAT:=a3700
endef endef
define Package/arm-trusted-firmware-mvebu-espressobin-v7-2gb define Trusted-Firmware-A/espressobin-v7-2gb
$(Package/arm-trusted-firmware-mvebu) NAME:=Marvell ESPRESSObin V7 (2GB)
TITLE:=ARM Trusted Firmware for Marvell ESPRESSObin V7 (2GB)
DEPENDS:=+u-boot-espressobin DEPENDS:=+u-boot-espressobin
BUILD_DEVICES:=globalscale_espressobin-v7
UBOOT:=espressobin UBOOT:=espressobin
DDR_TOPOLOGY:=6 DDR_TOPOLOGY:=6
CLOCKSPRESET:=CPU_800_DDR_800 CLOCKSPRESET:=CPU_800_DDR_800
PLAT:=a3700 PLAT:=a3700
endef endef
define Package/arm-trusted-firmware-mvebu-espressobin-v7-2gb-emmc define Trusted-Firmware-A/espressobin-v7-2gb-emmc
$(Package/arm-trusted-firmware-mvebu) NAME:=Marvell ESPRESSObin V7 (2GB, eMMC)
TITLE:=ARM Trusted Firmware for Marvell ESPRESSObin V7 (2GB, eMMC)
DEPENDS:=+u-boot-espressobin DEPENDS:=+u-boot-espressobin
BUILD_DEVICES:=globalscale_espressobin-v7-emmc
UBOOT:=espressobin-emmc UBOOT:=espressobin-emmc
DDR_TOPOLOGY:=6 DDR_TOPOLOGY:=6
CLOCKSPRESET:=CPU_800_DDR_800 CLOCKSPRESET:=CPU_800_DDR_800
PLAT:=a3700 PLAT:=a3700
endef endef
define Package/arm-trusted-firmware-mvebu-udpu define Trusted-Firmware-A/udpu
$(Package/arm-trusted-firmware-mvebu) NAME:=Methode uDPU
TITLE:=ARM Trusted Firmware for Methode uDPU
DEPENDS:=+u-boot-uDPU DEPENDS:=+u-boot-uDPU
BUILD_DEVICES:=methode_udpu
UBOOT:=uDPU UBOOT:=uDPU
DDR_TOPOLOGY:=0 DDR_TOPOLOGY:=0
CLOCKSPRESET:=CPU_1000_DDR_800 CLOCKSPRESET:=CPU_1000_DDR_800
PLAT:=a3700 PLAT:=a3700
endef endef
TFA_TARGETS:= \
espressobin-512mb \
espressobin-v3-v5-1gb-1cs \
espressobin-v3-v5-1gb-1cs-emmc \
espressobin-v3-v5-1gb-2cs \
espressobin-v3-v5-1gb-2cs-emmc \
espressobin-v3-v5-2gb \
espressobin-v3-v5-2gb-emmc \
espressobin-v7-1gb \
espressobin-v7-1gb-emmc \
espressobin-v7-2gb \
espressobin-v7-2gb-emmc \
udpu
TFA_MAKE_FLAGS += \
CROSS_CM3=$(STAGING_DIR_IMAGE)/$(LINARO_NAME)-$(LINARO_RELEASE).$(LINARO_VERSION)/bin/arm-linux-gnueabi- \
BL33=$(STAGING_DIR_IMAGE)/$(UBOOT)-u-boot.bin \
MV_DDR_PATH=$(STAGING_DIR_IMAGE)/$(MV_DDR_NAME) \
WTP=$(STAGING_DIR_IMAGE)/$(A3700_UTILS_NAME) \
DDR_TOPOLOGY=$(DDR_TOPOLOGY) \
CLOCKSPRESET=$(CLOCKSPRESET) \
all \
fip
A3700_UTILS_NAME:=a3700-utils A3700_UTILS_NAME:=a3700-utils
A3700_UTILS_RELEASE:=09679790 A3700_UTILS_RELEASE:=09679790
A3700_UTILS_SOURCE=$(A3700_UTILS_NAME)-$(A3700_UTILS_RELEASE).tar.bz2 A3700_UTILS_SOURCE=$(A3700_UTILS_NAME)-$(A3700_UTILS_RELEASE).tar.bz2
@ -201,41 +222,4 @@ define Build/Prepare
$(TAR) -C $(STAGING_DIR_IMAGE) -xf $(DL_DIR)/$(LINARO_SOURCE) $(TAR) -C $(STAGING_DIR_IMAGE) -xf $(DL_DIR)/$(LINARO_SOURCE)
endef endef
export GCC_HONOUR_COPTS=s $(eval $(call BuildPackage/Trusted-Firmware-A))
TARGET_CFLAGS = ""
define Build/Compile
$(eval $(Package/arm-trusted-firmware-mvebu-$(BUILD_VARIANT))) \
$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
CROSS_COMPILE=$(TARGET_CROSS) \
OPENSSL_DIR=$(STAGING_DIR_HOST) \
CROSS_CM3=$(STAGING_DIR_IMAGE)/$(LINARO_NAME)-$(LINARO_RELEASE).$(LINARO_VERSION)/bin/arm-linux-gnueabi- \
BL33=$(STAGING_DIR_IMAGE)/$(UBOOT)-u-boot.bin \
MV_DDR_PATH=$(STAGING_DIR_IMAGE)/$(MV_DDR_NAME) \
WTP=$(STAGING_DIR_IMAGE)/$(A3700_UTILS_NAME) \
DDR_TOPOLOGY=$(DDR_TOPOLOGY) \
CLOCKSPRESET=$(CLOCKSPRESET) \
PLAT=$(PLAT) \
all \
fip
endef
define Build/InstallDev
$(INSTALL_DIR) $(BIN_DIR)/flash-image-$(BUILD_VARIANT)
$(CP) $(PKG_BUILD_DIR)/build/$(PLAT)/release/flash-image.bin $(BIN_DIR)/flash-image-$(BUILD_VARIANT)/
$(CP) $(PKG_BUILD_DIR)/build/$(PLAT)/release/uart-images.tgz $(BIN_DIR)/flash-image-$(BUILD_VARIANT)/
endef
$(eval $(call BuildPackage,arm-trusted-firmware-mvebu-espressobin-512mb))
$(eval $(call BuildPackage,arm-trusted-firmware-mvebu-espressobin-v3-v5-1gb-1cs))
$(eval $(call BuildPackage,arm-trusted-firmware-mvebu-espressobin-v3-v5-1gb-1cs-emmc))
$(eval $(call BuildPackage,arm-trusted-firmware-mvebu-espressobin-v3-v5-1gb-2cs))
$(eval $(call BuildPackage,arm-trusted-firmware-mvebu-espressobin-v3-v5-1gb-2cs-emmc))
$(eval $(call BuildPackage,arm-trusted-firmware-mvebu-espressobin-v3-v5-2gb))
$(eval $(call BuildPackage,arm-trusted-firmware-mvebu-espressobin-v3-v5-2gb-emmc))
$(eval $(call BuildPackage,arm-trusted-firmware-mvebu-espressobin-v7-1gb))
$(eval $(call BuildPackage,arm-trusted-firmware-mvebu-espressobin-v7-1gb-emmc))
$(eval $(call BuildPackage,arm-trusted-firmware-mvebu-espressobin-v7-2gb))
$(eval $(call BuildPackage,arm-trusted-firmware-mvebu-espressobin-v7-2gb-emmc))
$(eval $(call BuildPackage,arm-trusted-firmware-mvebu-udpu))