1################################################################################ 2# 3# optee-os 4# 5################################################################################ 6 7OPTEE_OS_VERSION = $(call qstrip,$(BR2_TARGET_OPTEE_OS_VERSION)) 8OPTEE_OS_LICENSE = BSD-2-Clause 9ifeq ($(BR2_TARGET_OPTEE_OS_LATEST),y) 10OPTEE_OS_LICENSE_FILES = LICENSE 11endif 12 13OPTEE_OS_INSTALL_STAGING = YES 14OPTEE_OS_INSTALL_IMAGES = YES 15 16ifeq ($(BR2_TARGET_OPTEE_OS_CUSTOM_GIT),y) 17OPTEE_OS_SITE = $(call qstrip,$(BR2_TARGET_OPTEE_OS_CUSTOM_REPO_URL)) 18OPTEE_OS_SITE_METHOD = git 19BR_NO_CHECK_HASH_FOR += $(OPTEE_OS_SOURCE) 20else 21OPTEE_OS_SITE = $(call github,OP-TEE,optee_os,$(OPTEE_OS_VERSION)) 22endif 23 24OPTEE_OS_DEPENDENCIES = host-openssl host-python3 host-python3-pycryptodomex host-python3-pyelftools 25 26# On 64bit targets, OP-TEE OS can be built in 32bit mode, or 27# can be built in 64bit mode and support 32bit and 64bit 28# trusted applications. Since buildroot currently references 29# a single cross compiler, build exclusively in 32bit 30# or 64bit mode. 31OPTEE_OS_MAKE_OPTS = \ 32 CROSS_COMPILE="$(TARGET_CROSS)" \ 33 CROSS_COMPILE_core="$(TARGET_CROSS)" \ 34 CROSS_COMPILE_ta_arm64="$(TARGET_CROSS)" \ 35 CROSS_COMPILE_ta_arm32="$(TARGET_CROSS)" \ 36 PYTHON3="$(HOST_DIR)/bin/python3" 37 38ifeq ($(BR2_aarch64),y) 39OPTEE_OS_MAKE_OPTS += \ 40 CFG_ARM64_core=y \ 41 CFG_USER_TA_TARGETS=ta_arm64 42else 43OPTEE_OS_MAKE_OPTS += \ 44 CFG_ARM32_core=y 45endif 46 47# Get mandatory PLAFORM and optional PLATFORM_FLAVOR and additional 48# variables 49OPTEE_OS_MAKE_OPTS += PLATFORM=$(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM)) 50ifneq ($(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM_FLAVOR)),) 51OPTEE_OS_MAKE_OPTS += PLATFORM_FLAVOR=$(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM_FLAVOR)) 52endif 53OPTEE_OS_MAKE_OPTS += $(call qstrip,$(BR2_TARGET_OPTEE_OS_ADDITIONAL_VARIABLES)) 54 55# Requests OP-TEE OS to build from subdirectory out/ of its sourcetree 56# root path otherwise the output directory path depends on the target 57# platform name. 58OPTEE_OS_BUILDDIR_OUT = out 59ifeq ($(BR2_aarch64),y) 60OPTEE_OS_LOCAL_SDK = $(OPTEE_OS_BUILDDIR_OUT)/export-ta_arm64 61OPTEE_OS_SDK = $(STAGING_DIR)/lib/optee/export-ta_arm64 62endif 63ifeq ($(BR2_arm),y) 64OPTEE_OS_LOCAL_SDK = $(OPTEE_OS_BUILDDIR_OUT)/export-ta_arm32 65OPTEE_OS_SDK = $(STAGING_DIR)/lib/optee/export-ta_arm32 66endif 67 68OPTEE_OS_IMAGE_FILES = $(call qstrip,$(BR2_TARGET_OPTEE_OS_CORE_IMAGES)) 69 70ifeq ($(BR2_TARGET_OPTEE_OS_CORE),y) 71define OPTEE_OS_BUILD_CORE 72 $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) O=$(OPTEE_OS_BUILDDIR_OUT) \ 73 $(TARGET_CONFIGURE_OPTS) $(OPTEE_OS_MAKE_OPTS) all 74endef 75define OPTEE_OS_INSTALL_IMAGES_CORE 76 mkdir -p $(BINARIES_DIR) 77 $(foreach f,$(OPTEE_OS_IMAGE_FILES), \ 78 cp -dpf $(wildcard $(@D)/$(OPTEE_OS_BUILDDIR_OUT)/core/$(f)) $(BINARIES_DIR)/ 79 ) 80endef 81endif # BR2_TARGET_OPTEE_OS_CORE 82 83ifeq ($(BR2_TARGET_OPTEE_OS_SERVICES),y) 84define OPTEE_OS_INSTALL_TARGET_CMDS 85 $(if $(wildcard $(@D)/$(OPTEE_OS_BUILDDIR_OUT)/ta/*/*.ta), 86 $(INSTALL) -D -m 444 -t $(TARGET_DIR)/lib/optee_armtz \ 87 $(@D)/$(OPTEE_OS_BUILDDIR_OUT)/ta/*/*.ta) 88 $(if $(wildcard $(@D)/$(OPTEE_OS_LOCAL_SDK)/lib/*.ta), 89 $(INSTALL) -D -m 444 -t $(TARGET_DIR)/lib/optee_armtz \ 90 $(@D)/$(OPTEE_OS_LOCAL_SDK)/lib/*.ta) 91endef 92endif # BR2_TARGET_OPTEE_OS_SERVICES 93 94ifeq ($(BR2_TARGET_OPTEE_OS_SDK),y) 95define OPTEE_OS_BUILD_SDK 96 $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) O=$(OPTEE_OS_BUILDDIR_OUT) \ 97 $(TARGET_CONFIGURE_OPTS) $(OPTEE_OS_MAKE_OPTS) ta_dev_kit 98endef 99define OPTEE_OS_INSTALL_STAGING_CMDS 100 mkdir -p $(OPTEE_OS_SDK) 101 cp -ardpf $(@D)/$(OPTEE_OS_LOCAL_SDK)/* $(OPTEE_OS_SDK) 102endef 103endif # BR2_TARGET_OPTEE_OS_SDK 104 105define OPTEE_OS_BUILD_CMDS 106 $(OPTEE_OS_BUILD_CORE) 107 $(OPTEE_OS_BUILD_SDK) 108endef 109 110define OPTEE_OS_INSTALL_IMAGES_CMDS 111 $(OPTEE_OS_INSTALL_IMAGES_CORE) 112 $(OPTEE_OS_INSTALL_IMAGES_SERVICES) 113endef 114 115ifeq ($(BR2_TARGET_OPTEE_OS)$(BR_BUILDING),yy) 116ifeq ($(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM)),) 117$(error No OP-TEE OS platform set. Check your BR2_TARGET_OPTEE_OS_PLATFORM setting) 118endif 119endif # BR2_TARGET_OPTEE_OS && BR2_BUILDING 120 121$(eval $(generic-package)) 122