Provide two KConfig files to allow inclusion of OP-TEE for userspace libraries and applications.
Signed-off-by: Rouven Czerwinski <r.czerwin...@pengutronix.de> --- platforms/optee.in | 54 ++++++++++++++++++++++- rules/optee.in | 7 +++- rules/optee.make | 113 ++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 174 insertions(+) create mode 100644 platforms/optee.in create mode 100644 rules/optee.in create mode 100644 rules/optee.make diff --git a/platforms/optee.in b/platforms/optee.in new file mode 100644 index 0000000..b750774 --- /dev/null +++ b/platforms/optee.in @@ -0,0 +1,54 @@ +## SECTION=bootloader + +menuconfig OPTEE + select BOOTLOADER + prompt "OPTEE" + bool + help + OP-TEE is an open source project which contains a full implementation + to make up a complete Trusted Execution Environment. The project has + roots in a proprietary solution, initially created by ST-Ericsson and + then owned and maintained by STMicroelectronics. In 2014, Linaro + started working with STMicroelectronics to transform the proprietary + TEE solution into an open source TEE solution instead. + +if OPTEE + +config OPTEE_VERSION + string + prompt "OPTEE version" + help + Enter the OPTEE version you want to build. Usally something like + "3.1.0" + +config OPTEE_MD5 + string + prompt "OPTEE source md5" + +config OPTEE_PLATFORM + string + prompt "OPTEE Platform" + help + Platform to use for OP-TEE. + i.e. imx for the NXP imx platform or vexpress for versatile express + platforms. + +config OPTEE_PLATFORM_FLAVOUR + string + prompt "OPTEE Platform Flavour" + help + Platform Flavour for the selected platform, i.e. mx6qsabresd for the + imx platform. + +config OPTEE_CFG + string + prompt "OP-TEE CFG Flags" + help + Refer to the following file for the CFG_FLAGS: + https://github.com/OP-TEE/optee_os/blob/master/mk/config.mk + +config OPTEE_IMAGES + bool + prompt "copy optee to images directory" + +endif diff --git a/rules/optee.in b/rules/optee.in new file mode 100644 index 0000000..77f112f --- /dev/null +++ b/rules/optee.in @@ -0,0 +1,7 @@ +## SECTION=security + +menuconfig OPTEE + prompt "OP-TEE" + bool + help + OP-TEE Secure Operating System diff --git a/rules/optee.make b/rules/optee.make new file mode 100644 index 0000000..2865c92 --- /dev/null +++ b/rules/optee.make @@ -0,0 +1,113 @@ +# -*-makefile-*- +# +# Copyright (C) 2018 by Rouven Czerwinski <rou...@czerwinskis.de> +# +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXdist project and license conditions +# see the README file. +# + +# +# We provide this package +# +ifdef PTXCONF_ARCH_ARM64 +ifneq ($(shell test -h $(PTXDIST_WORKSPACE)/selected_toolchain_optee_aarch32 && echo ok),ok) + $(warning *** selected_toolchain_optee_aarch32 must point to a valid optee_aarch32 toolchain) + $(error ) +endif +ifneq ($(shell test -x $(PTXDIST_WORKSPACE)/selected_toolchain_optee_aarch32/$(PTXCONF_OPTEE_AARCH32_CC_PREFIX)gcc && echo ok),ok) + $(warning *** $(PTXDIST_WORKSPACE)/selected_toolchain_optee_aarch32/$(PTXCONF_OPTEE_AARCH32_CC_PREFIX)gcc not found) + $(error ) +endif +endif + +PACKAGES-$(PTXCONF_OPTEE) += optee + +# +# Paths and names +# +OPTEE_VERSION := $(call remove_quotes,$(PTXCONF_OPTEE_VERSION)) +OPTEE_MD5 := $(call remove_quotes,$(PTXCONF_OPTEE_MD5)) +OPTEE := optee-$(OPTEE_VERSION) +OPTEE_SUFFIX := tar.gz +OPTEE_URL := https://github.com/OP-TEE/optee_os/archive/$(OPTEE_VERSION).$(OPTEE_SUFFIX) +OPTEE_SOURCE := $(SRCDIR)/$(OPTEE).$(OPTEE_SUFFIX) +OPTEE_DIR := $(BUILDDIR)/$(OPTEE) +OPTEE_LICENSE := BSD-2-Clause AND BSD-3-Clause + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +OPTEE_WRAPPER_BLACKLIST := \ + TARGET_HARDEN_RELRO \ + TARGET_HARDEN_BINDNOW \ + TARGET_HARDEN_PIE \ + TARGET_DEBUG \ + TARGET_BUILD_ID + +OPTEE_CONF_TOOL := NO + +$(STATEDIR)/optee.prepare: + @$(call targetinfo) + @$(call touch) + + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +ifdef PTXCONF_ARCH_ARM64 +OPTEE_CROSS_COMPILE32= $(PTXDIST_WORKSPACE)/selected_toolchain_optee_aarch32/$(call remove_quotes,$(PTXCONF_OPTEE_AARCH32_CC_PREFIX)) +OPTEE_MAKE_ENV += CROSS_COMPILE32=$(OPTEE_CROSS_COMPILE32) +OPTEE_MAKE_OPT += CFG_ARM64_core=y +OPTEE_MAKE_ENV += CROSS_COMPILE64=$(call remove_quotes,$(PTXCONF_COMPILER_PREFIX)) +endif + +OPTEE_MAKE_OPT += PLATFORM=$(call remove_quotes,$(PTXCONF_OPTEE_PLATFORM))-$(call remove_quotes,$(PTXCONF_OPTEE_PLATFORM_FLAVOUR)) +OPTEE_MAKE_OPT += $(call remove_quotes,$(PTXCONF_OPTEE_CFG)) + +$(STATEDIR)/optee.compile: + @$(call targetinfo) + @$(call world/compile, OPTEE) + @$(call touch) + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- +ifdef PTXCONF_ARCH_ARM64 +OPTEE_LIB_DIR = export-ta_arm64 +else +OPTEE_LIB_DIR = export-ta_arm32 +endif + +OPTEE_OUT_DIR := \ + $(OPTEE_DIR)/out/arm-plat-$(PTXCONF_OPTEE_PLATFORM) + +$(STATEDIR)/optee.install: + @$(call targetinfo) + @rm -rf $(OPTEES_PKGDIR) + @install -d -m755 $(OPTEE_PKGDIR)/usr/lib/optee-os + @cp -av $(OPTEE_OUT_DIR)/$(OPTEE_LIB_DIR)/* $(OPTEE_PKGDIR)/usr/lib/optee-os +ifdef PTXCONF_OPTEE_IMAGES + @install -D -m644 $(OPTEE_OUT_DIR)/core/tee.bin $(IMAGEDIR)/tee.bin + @install -D -m644 $(OPTEE_OUT_DIR)/core/tee-header_v2.bin $(IMAGEDIR)/tee-header_v2.bin + @install -D -m644 $(OPTEE_OUT_DIR)/core/tee-pager_v2.bin $(IMAGEDIR)/tee-pager_v2.bin + @install -D -m644 $(OPTEE_OUT_DIR)/core/tee-pageable_v2.bin $(IMAGEDIR)/tee-pageable_v2.bin + @install -D -m644 $(OPTEE_OUT_DIR)/core/tee.elf $(IMAGEDIR)/tee.elf +endif + @$(call touch) + +# ---------------------------------------------------------------------------- +# Clean +# ---------------------------------------------------------------------------- + +$(STATEDIR)/optee.clean: + @$(call targetinfo) + @rm -f $(IMAGEDIR)/tee.bin $(IMAGEDIR)/tee-header_v2.bin + @rm -f $(IMAGEDIR)/tee-pager_v2.bin $(IMAGEDIR)/tee-pageable_v2.bin + @rm -f $(IMAGEDIR)/tee-pager_v2.bin $(IMAGEDIR)/tee.elf + @$(call clean_pkg, OPTEE) + +# vim: syntax=make -- git-series 0.9.1 _______________________________________________ ptxdist mailing list ptxdist@pengutronix.de