mirror of
https://github.com/espressif/esp-idf
synced 2025-03-10 01:29:21 -04:00
88 lines
3.5 KiB
CMake
88 lines
3.5 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
|
|
set(ESP_TEE_VERSION_MAJOR 1)
|
|
set(ESP_TEE_VERSION_MINOR 0)
|
|
set(ESP_TEE_VERSION_PATCH 0)
|
|
|
|
if(NOT SDKCONFIG)
|
|
message(FATAL_ERROR "esp_tee subproject expects the SDKCONFIG variable to be passed "
|
|
"in by the parent build process.")
|
|
endif()
|
|
|
|
if(NOT IDF_PATH)
|
|
message(FATAL_ERROR "esp_tee subproject expects the IDF_PATH variable to be passed "
|
|
"in by the parent build process.")
|
|
endif()
|
|
|
|
if(NOT IDF_TARGET)
|
|
message(FATAL_ERROR "esp_tee subproject expects the IDF_TARGET variable to be passed "
|
|
"in by the parent build process.")
|
|
endif()
|
|
|
|
set(COMPONENTS esp_tee bootloader esptool_py partition_table main ${CUSTOM_SECURE_SERVICE_COMPONENT})
|
|
list(APPEND EXTRA_COMPONENT_DIRS ${CUSTOM_SECURE_SERVICE_COMPONENT_DIR})
|
|
set(ESP_TEE_BUILD 1)
|
|
set(NON_OS_BUILD 1)
|
|
|
|
# TEE-specific components
|
|
list(APPEND COMPONENTS tee_flash_mgr tee_ota_ops tee_sec_storage tee_attestation)
|
|
|
|
# Include sdkconfig.h derived from the parent build.
|
|
include_directories(${CONFIG_DIR})
|
|
|
|
include("${IDF_PATH}/tools/cmake/project.cmake")
|
|
set(common_req esp_common esp_hw_support esp_rom freertos hal log newlib soc spi_flash)
|
|
|
|
if(CONFIG_IDF_TARGET_ARCH_RISCV)
|
|
list(APPEND common_req riscv)
|
|
endif()
|
|
|
|
# Included for `esp_app_desc` configuration structure
|
|
list(APPEND common_req esp_app_format)
|
|
|
|
idf_build_set_property(__COMPONENT_REQUIRES_COMMON "${common_req}")
|
|
idf_build_set_property(__OUTPUT_SDKCONFIG 0)
|
|
# NOTE: Helps to analyse the components built for the TEE binary by CMake Graphviz
|
|
idf_build_set_property(__BUILD_COMPONENT_DEPGRAPH_ENABLED 1)
|
|
|
|
project(esp_tee VERSION ${ESP_TEE_VERSION_MAJOR}.${ESP_TEE_VERSION_MINOR}.${ESP_TEE_VERSION_PATCH})
|
|
|
|
idf_build_set_property(COMPILE_DEFINITIONS "ESP_TEE_BUILD=1" APPEND)
|
|
idf_build_set_property(COMPILE_DEFINITIONS "NON_OS_BUILD=1" APPEND)
|
|
idf_build_set_property(COMPILE_OPTIONS "-fno-stack-protector" APPEND)
|
|
|
|
if(CONFIG_SECURE_BOOT_V2_ENABLED)
|
|
if(CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES)
|
|
get_filename_component(secure_boot_signing_key
|
|
"${SECURE_BOOT_SIGNING_KEY}" ABSOLUTE BASE_DIR "${project_dir}")
|
|
|
|
if(NOT EXISTS "${secure_boot_signing_key}")
|
|
message(FATAL_ERROR
|
|
"Secure Boot Signing Key Not found."
|
|
"\nGenerate the Secure Boot V2 RSA-PSS 3072 Key."
|
|
"\nTo generate one, you can use this command:"
|
|
"\n\t${espsecurepy} generate_signing_key --version 2 ${SECURE_BOOT_SIGNING_KEY}")
|
|
endif()
|
|
|
|
set(esp_tee_unsigned_bin "esp_tee-unsigned.bin")
|
|
add_custom_command(OUTPUT ".signed_bin_timestamp"
|
|
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/${PROJECT_BIN}"
|
|
"${CMAKE_BINARY_DIR}/${esp_tee_unsigned_bin}"
|
|
COMMAND ${ESPSECUREPY} sign_data --version 2 --keyfile "${secure_boot_signing_key}"
|
|
-o "${CMAKE_BINARY_DIR}/${PROJECT_BIN}" "${CMAKE_BINARY_DIR}/${esp_tee_unsigned_bin}"
|
|
COMMAND ${CMAKE_COMMAND} -E echo "Generated signed binary image ${build_dir}/${PROJECT_BIN}"
|
|
"from ${CMAKE_BINARY_DIR}/${esp_tee_unsigned_bin}"
|
|
COMMAND ${CMAKE_COMMAND} -E md5sum "${CMAKE_BINARY_DIR}/${PROJECT_BIN}"
|
|
> "${CMAKE_BINARY_DIR}/.signed_bin_timestamp"
|
|
DEPENDS "${build_dir}/.bin_timestamp"
|
|
VERBATIM
|
|
COMMENT "Generated the signed TEE")
|
|
else()
|
|
add_custom_command(OUTPUT ".signed_bin_timestamp"
|
|
VERBATIM
|
|
COMMENT "TEE generated but not signed")
|
|
endif()
|
|
|
|
add_custom_target(gen_signed_esp_tee ALL DEPENDS "${build_dir}/.signed_bin_timestamp")
|
|
endif()
|