optee-os.mk 3.8 KB

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