component.mk 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. COMPONENT_ADD_INCLUDEDIRS := include
  2. ifdef IS_BOOTLOADER_BUILD
  3. # share "include_bootloader" headers with bootloader main component
  4. COMPONENT_ADD_INCLUDEDIRS += include_bootloader
  5. else
  6. COMPONENT_PRIV_INCLUDEDIRS := include_bootloader
  7. endif
  8. COMPONENT_SRCDIRS := src \
  9. src/secure_boot_v2 \
  10. src/secure_boot_v1
  11. ifndef IS_BOOTLOADER_BUILD
  12. COMPONENT_SRCDIRS += src/idf # idf sub-directory contains platform agnostic IDF versions
  13. else
  14. COMPONENT_SRCDIRS += src/$(IDF_TARGET) # one sub-dir per chip
  15. ifdef CONFIG_SECURE_FLASH_ENC_ENABLED
  16. COMPONENT_SRCDIRS += src/flash_encryption
  17. endif
  18. endif
  19. ifndef IS_BOOTLOADER_BUILD
  20. COMPONENT_OBJEXCLUDE := src/bootloader_init.o \
  21. src/bootloader_panic.o \
  22. src/bootloader_clock_loader.o \
  23. src/bootloader_console.o \
  24. src/bootloader_console_loader.o
  25. endif
  26. COMPONENT_OBJEXCLUDE += src/bootloader_flash_config_esp32s2.o \
  27. src/bootloader_flash_config_esp32s3.o \
  28. src/bootloader_flash_config_esp32c3.o \
  29. src/bootloader_flash_config_esp32h2.o \
  30. src/bootloader_flash_config_esp8684.o \
  31. src/bootloader_efuse_esp32s2.o \
  32. src/bootloader_efuse_esp32s3.o \
  33. src/bootloader_efuse_esp32c3.o \
  34. src/bootloader_efuse_esp32h2.o \
  35. src/bootloader_efuse_esp8684.o \
  36. src/bootloader_random_esp32s2.o \
  37. src/bootloader_random_esp32s3.o \
  38. src/bootloader_random_esp32c3.o \
  39. src/bootloader_random_esp32h2.o \
  40. src/bootloader_random_esp8684.o
  41. ifdef IS_BOOTLOADER_BUILD
  42. ifndef CONFIG_SECURE_SIGNED_APPS_ECDSA_SCHEME
  43. COMPONENT_OBJEXCLUDE += src/secure_boot_v1/secure_boot_signatures_bootloader.o
  44. endif
  45. ifndef CONFIG_SECURE_SIGNED_APPS_RSA_SCHEME
  46. COMPONENT_OBJEXCLUDE += src/secure_boot_v2/secure_boot_signatures_bootloader.o
  47. endif
  48. ifndef CONFIG_SECURE_BOOT_V1_ENABLED
  49. COMPONENT_OBJEXCLUDE += src/secure_boot_v1/secure_boot.o
  50. endif
  51. ifndef CONFIG_SECURE_BOOT_V2_ENABLED
  52. COMPONENT_OBJEXCLUDE += src/secure_boot_v2/secure_boot.o
  53. endif
  54. ifndef CONFIG_SECURE_BOOT
  55. COMPONENT_OBJEXCLUDE += src/${IDF_TARGET}/secure_boot_secure_features.o
  56. endif
  57. ifndef CONFIG_SECURE_FLASH_ENC_ENABLED
  58. COMPONENT_OBJEXCLUDE += src/${IDF_TARGET}/flash_encryption_secure_features.o
  59. endif
  60. COMPONENT_OBJEXCLUDE += src/secure_boot_v1/secure_boot_signatures_app.o \
  61. src/secure_boot_v2/secure_boot_signatures_app.o
  62. else
  63. ifndef CONFIG_SECURE_SIGNED_APPS_ECDSA_SCHEME
  64. COMPONENT_OBJEXCLUDE += src/secure_boot_v1/secure_boot_signatures_app.o
  65. endif
  66. ifndef CONFIG_SECURE_SIGNED_APPS_RSA_SCHEME
  67. COMPONENT_OBJEXCLUDE += src/secure_boot_v2/secure_boot_signatures_app.o
  68. endif
  69. COMPONENT_OBJEXCLUDE += src/secure_boot_v1/secure_boot_signatures_bootloader.o \
  70. src/secure_boot_v1/secure_boot.o \
  71. src/secure_boot_v2/secure_boot_signatures_bootloader.o \
  72. src/secure_boot_v2/secure_boot.o
  73. endif # IS_BOOTLOADER_BUILD
  74. #
  75. # Secure boot signing key support
  76. #
  77. ifdef CONFIG_SECURE_SIGNED_APPS
  78. ifdef CONFIG_SECURE_SIGNED_APPS_ECDSA_SCHEME
  79. # this path is created relative to the component build directory
  80. SECURE_BOOT_VERIFICATION_KEY := $(abspath signature_verification_key.bin)
  81. ifdef CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES
  82. # verification key derived from signing key.
  83. $(SECURE_BOOT_VERIFICATION_KEY): $(SECURE_BOOT_SIGNING_KEY) $(SDKCONFIG_MAKEFILE)
  84. $(ESPSECUREPY) extract_public_key --keyfile $< $@
  85. else
  86. # find the configured public key file
  87. ORIG_SECURE_BOOT_VERIFICATION_KEY := $(call resolvepath,$(call dequote,$(CONFIG_SECURE_BOOT_VERIFICATION_KEY)),$(PROJECT_PATH))
  88. $(ORIG_SECURE_BOOT_VERIFICATION_KEY):
  89. @echo "Secure boot verification public key '$@' missing."
  90. @echo "This can be extracted from the private signing key, see"
  91. @echo "docs/security/secure-boot-v1.rst for details."
  92. exit 1
  93. # copy it into the build dir, so the secure boot verification key has
  94. # a predictable file name
  95. $(SECURE_BOOT_VERIFICATION_KEY): $(ORIG_SECURE_BOOT_VERIFICATION_KEY) $(SDKCONFIG_MAKEFILE)
  96. $(summary) CP $< $@
  97. cp $< $@
  98. endif #CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES
  99. COMPONENT_EXTRA_CLEAN += $(SECURE_BOOT_VERIFICATION_KEY)
  100. COMPONENT_EMBED_FILES := $(SECURE_BOOT_VERIFICATION_KEY)
  101. endif #CONFIG_SECURE_SIGNED_APPS_ECDSA_SCHEME
  102. endif #CONFIG_SECURE_SIGNED_APPS