CMakeLists.txt 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. set(srcs
  2. "src/bootloader_clock.c"
  3. "src/bootloader_common.c"
  4. "src/bootloader_flash.c"
  5. "src/bootloader_random.c"
  6. "src/bootloader_utility.c"
  7. "src/esp_image_format.c"
  8. "src/flash_partitions.c"
  9. "src/flash_qio_mode.c"
  10. "src/bootloader_flash_config_${IDF_TARGET}.c"
  11. )
  12. if(CONFIG_IDF_TARGET_ESP32)
  13. # Not supported on ESP32S2Beta yet
  14. list(APPEND srcs "src/flash_encrypt.c")
  15. endif()
  16. if(BOOTLOADER_BUILD)
  17. set(include_dirs "include" "include_bootloader")
  18. # freertos is included just for the CONFIG_FREERTOS_UNICORE macro
  19. set(priv_requires micro-ecc spi_flash efuse freertos)
  20. list(APPEND srcs
  21. "src/bootloader_init.c"
  22. "src/${IDF_TARGET}/bootloader_sha.c"
  23. "src/${IDF_TARGET}/flash_encrypt.c"
  24. "src/${IDF_TARGET}/secure_boot_signatures.c"
  25. "src/${IDF_TARGET}/secure_boot.c"
  26. "src/${IDF_TARGET}/bootloader_${IDF_TARGET}.c"
  27. "src/${IDF_TARGET}/bootloader_clock_${IDF_TARGET}.c"
  28. )
  29. else()
  30. list(APPEND srcs
  31. "src/idf/bootloader_sha.c"
  32. "src/idf/secure_boot_signatures.c")
  33. set(include_dirs "include")
  34. set(priv_include_dirs "include_bootloader")
  35. set(priv_requires spi_flash mbedtls efuse)
  36. endif()
  37. set(requires soc) #unfortunately the header directly uses SOC registers
  38. idf_component_register(SRCS "${srcs}"
  39. INCLUDE_DIRS "${include_dirs}"
  40. PRIV_INCLUDE_DIRS "${priv_include_dirs}"
  41. REQUIRES "${requires}"
  42. PRIV_REQUIRES "${priv_requires}")
  43. if(BOOTLOADER_BUILD AND CONFIG_SECURE_SIGNED_APPS)
  44. # Whether CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES or not, we need verification key to embed
  45. # in the library.
  46. if(CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES)
  47. # We generate the key from the signing key. The signing key is passed from the main project.
  48. get_filename_component(secure_boot_signing_key
  49. "${SECURE_BOOT_SIGNING_KEY}"
  50. ABSOLUTE BASE_DIR "${project_dir}")
  51. get_filename_component(secure_boot_verification_key
  52. "signature_verification_key.bin"
  53. ABSOLUTE BASE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
  54. add_custom_command(OUTPUT "${secure_boot_verification_key}"
  55. COMMAND ${ESPSECUREPY}
  56. extract_public_key --keyfile "${secure_boot_signing_key}"
  57. "${secure_boot_verification_key}"
  58. VERBATIM)
  59. else()
  60. # We expect to 'inherit' the verification key passed from main project.
  61. get_filename_component(secure_boot_verification_key
  62. ${SECURE_BOOT_VERIFICATION_KEY}
  63. ABSOLUTE BASE_DIR "${project_dir}")
  64. endif()
  65. target_add_binary_data(${COMPONENT_LIB} "${secure_boot_verification_key}" "BINARY")
  66. set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  67. APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
  68. "${secure_boot_verification_key}")
  69. endif()