2
1

optee-os.mk 5.5 KB

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