9c79b369d6
For now only latest release and custom git repository was supported. This patch adds support for custom tarball URL. It also adds configuration verification for custom git repository and tarball URL. Signed-off-by: Kory Maincent <kory.maincent@bootlin.com> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.rog> for the v2. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
156 lines
5.0 KiB
Makefile
156 lines
5.0 KiB
Makefile
################################################################################
|
|
#
|
|
# optee-os
|
|
#
|
|
################################################################################
|
|
|
|
OPTEE_OS_VERSION = $(call qstrip,$(BR2_TARGET_OPTEE_OS_VERSION))
|
|
OPTEE_OS_LICENSE = BSD-2-Clause
|
|
ifeq ($(BR2_TARGET_OPTEE_OS_LATEST),y)
|
|
OPTEE_OS_LICENSE_FILES = LICENSE
|
|
endif
|
|
|
|
OPTEE_OS_INSTALL_STAGING = YES
|
|
OPTEE_OS_INSTALL_IMAGES = YES
|
|
|
|
ifeq ($(BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL),y)
|
|
OPTEE_OS_TARBALL = $(call qstrip,$(BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL_LOCATION))
|
|
OPTEE_OS_SITE = $(patsubst %/,%,$(dir $(OPTEE_OS_TARBALL)))
|
|
OPTEE_OS_SOURCE = $(notdir $(OPTEE_OS_TARBALL))
|
|
else ifeq ($(BR2_TARGET_OPTEE_OS_CUSTOM_GIT),y)
|
|
OPTEE_OS_SITE = $(call qstrip,$(BR2_TARGET_OPTEE_OS_CUSTOM_REPO_URL))
|
|
OPTEE_OS_SITE_METHOD = git
|
|
else
|
|
OPTEE_OS_SITE = $(call github,OP-TEE,optee_os,$(OPTEE_OS_VERSION))
|
|
endif
|
|
|
|
ifeq ($(BR2_TARGET_OPTEE_OS):$(BR2_TARGET_OPTEE_OS_LATEST_VERSION),y:)
|
|
BR_NO_CHECK_HASH_FOR += $(OPTEE_OS_SOURCE)
|
|
endif
|
|
|
|
OPTEE_OS_DEPENDENCIES = host-openssl host-python3 host-python-pyelftools
|
|
|
|
ifeq ($(BR2_TARGET_OPTEE_OS_NEEDS_PYTHON_CRYPTOGRAPHY),y)
|
|
OPTEE_OS_DEPENDENCIES += host-python-cryptography
|
|
else
|
|
OPTEE_OS_DEPENDENCIES += host-python-pycryptodomex
|
|
endif
|
|
|
|
ifeq ($(BR2_TARGET_OPTEE_OS_NEEDS_PYTHON_PILLOW),y)
|
|
OPTEE_OS_DEPENDENCIES += host-python-pillow
|
|
endif
|
|
|
|
ifeq ($(BR2_TARGET_OPTEE_OS_NEEDS_DTC),y)
|
|
OPTEE_OS_DEPENDENCIES += host-dtc
|
|
endif
|
|
|
|
# On 64bit targets, OP-TEE OS can be built in 32bit mode, or
|
|
# can be built in 64bit mode and support 32bit and 64bit
|
|
# trusted applications. Since buildroot currently references
|
|
# a single cross compiler, build exclusively in 32bit
|
|
# or 64bit mode.
|
|
OPTEE_OS_MAKE_OPTS = \
|
|
CROSS_COMPILE="$(TARGET_CROSS)" \
|
|
CROSS_COMPILE_core="$(TARGET_CROSS)" \
|
|
CROSS_COMPILE_ta_arm64="$(TARGET_CROSS)" \
|
|
CROSS_COMPILE_ta_arm32="$(TARGET_CROSS)" \
|
|
PYTHON3="$(HOST_DIR)/bin/python3"
|
|
|
|
ifeq ($(BR2_aarch64),y)
|
|
OPTEE_OS_MAKE_OPTS += \
|
|
CFG_ARM64_core=y \
|
|
CFG_USER_TA_TARGETS=ta_arm64
|
|
else
|
|
OPTEE_OS_MAKE_OPTS += \
|
|
CFG_ARM32_core=y
|
|
endif
|
|
|
|
# Get mandatory PLAFORM and optional PLATFORM_FLAVOR and additional
|
|
# variables
|
|
OPTEE_OS_MAKE_OPTS += PLATFORM=$(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM))
|
|
ifneq ($(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM_FLAVOR)),)
|
|
OPTEE_OS_MAKE_OPTS += PLATFORM_FLAVOR=$(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM_FLAVOR))
|
|
endif
|
|
OPTEE_OS_MAKE_OPTS += $(call qstrip,$(BR2_TARGET_OPTEE_OS_ADDITIONAL_VARIABLES))
|
|
|
|
# Requests OP-TEE OS to build from subdirectory out/ of its sourcetree
|
|
# root path otherwise the output directory path depends on the target
|
|
# platform name.
|
|
OPTEE_OS_BUILDDIR_OUT = out
|
|
ifeq ($(BR2_aarch64),y)
|
|
OPTEE_OS_LOCAL_SDK = $(OPTEE_OS_BUILDDIR_OUT)/export-ta_arm64
|
|
OPTEE_OS_SDK = $(STAGING_DIR)/lib/optee/export-ta_arm64
|
|
endif
|
|
ifeq ($(BR2_arm),y)
|
|
OPTEE_OS_LOCAL_SDK = $(OPTEE_OS_BUILDDIR_OUT)/export-ta_arm32
|
|
OPTEE_OS_SDK = $(STAGING_DIR)/lib/optee/export-ta_arm32
|
|
endif
|
|
|
|
OPTEE_OS_IMAGE_FILES = $(call qstrip,$(BR2_TARGET_OPTEE_OS_CORE_IMAGES))
|
|
|
|
ifeq ($(BR2_TARGET_OPTEE_OS_CORE),y)
|
|
define OPTEE_OS_BUILD_CORE
|
|
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) O=$(OPTEE_OS_BUILDDIR_OUT) \
|
|
$(TARGET_CONFIGURE_OPTS) $(OPTEE_OS_MAKE_OPTS) all
|
|
endef
|
|
define OPTEE_OS_INSTALL_IMAGES_CORE
|
|
mkdir -p $(BINARIES_DIR)
|
|
$(foreach f,$(OPTEE_OS_IMAGE_FILES), \
|
|
cp -dpf $(wildcard $(@D)/$(OPTEE_OS_BUILDDIR_OUT)/core/$(f)) $(BINARIES_DIR)/
|
|
)
|
|
endef
|
|
endif # BR2_TARGET_OPTEE_OS_CORE
|
|
|
|
ifeq ($(BR2_TARGET_OPTEE_OS_SERVICES),y)
|
|
define OPTEE_OS_INSTALL_TARGET_CMDS
|
|
$(if $(wildcard $(@D)/$(OPTEE_OS_BUILDDIR_OUT)/ta/*/*.ta),
|
|
$(INSTALL) -D -m 444 -t $(TARGET_DIR)/lib/optee_armtz \
|
|
$(@D)/$(OPTEE_OS_BUILDDIR_OUT)/ta/*/*.ta)
|
|
$(if $(wildcard $(@D)/$(OPTEE_OS_LOCAL_SDK)/lib/*.ta),
|
|
$(INSTALL) -D -m 444 -t $(TARGET_DIR)/lib/optee_armtz \
|
|
$(@D)/$(OPTEE_OS_LOCAL_SDK)/lib/*.ta)
|
|
endef
|
|
endif # BR2_TARGET_OPTEE_OS_SERVICES
|
|
|
|
ifeq ($(BR2_TARGET_OPTEE_OS_SDK),y)
|
|
define OPTEE_OS_BUILD_SDK
|
|
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) O=$(OPTEE_OS_BUILDDIR_OUT) \
|
|
$(TARGET_CONFIGURE_OPTS) $(OPTEE_OS_MAKE_OPTS) ta_dev_kit
|
|
endef
|
|
define OPTEE_OS_INSTALL_STAGING_CMDS
|
|
mkdir -p $(OPTEE_OS_SDK)
|
|
cp -ardpf $(@D)/$(OPTEE_OS_LOCAL_SDK)/* $(OPTEE_OS_SDK)
|
|
endef
|
|
endif # BR2_TARGET_OPTEE_OS_SDK
|
|
|
|
define OPTEE_OS_BUILD_CMDS
|
|
$(OPTEE_OS_BUILD_CORE)
|
|
$(OPTEE_OS_BUILD_SDK)
|
|
endef
|
|
|
|
define OPTEE_OS_INSTALL_IMAGES_CMDS
|
|
$(OPTEE_OS_INSTALL_IMAGES_CORE)
|
|
$(OPTEE_OS_INSTALL_IMAGES_SERVICES)
|
|
endef
|
|
|
|
ifeq ($(BR2_TARGET_OPTEE_OS)$(BR_BUILDING),yy)
|
|
ifeq ($(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM)),)
|
|
$(error No OP-TEE OS platform set. Check your BR2_TARGET_OPTEE_OS_PLATFORM setting)
|
|
endif
|
|
|
|
ifeq ($(BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL),y)
|
|
ifeq ($(call qstrip,$(BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL_LOCATION)),)
|
|
$(error No tarball location specified. Please check BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL_LOCATION)
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(BR2_TARGET_OPTEE_OS_CUSTOM_GIT),y)
|
|
ifeq ($(call qstrip,$(BR2_TARGET_OPTEE_OS_CUSTOM_REPO_URL)),)
|
|
$(error No repository specified. Please check BR2_TARGET_OPTEE_OS_CUSTOM_REPO_URL)
|
|
endif
|
|
endif
|
|
|
|
endif # BR2_TARGET_OPTEE_OS && BR2_BUILDING
|
|
|
|
$(eval $(generic-package))
|