component.mk 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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_efuse_esp32s2.o \
  31. src/bootloader_efuse_esp32s3.o \
  32. src/bootloader_efuse_esp32c3.o \
  33. src/bootloader_efuse_esp32h2.o \
  34. src/bootloader_random_esp32s2.o \
  35. src/bootloader_random_esp32s3.o \
  36. src/bootloader_random_esp32c3.o \
  37. src/bootloader_random_esp32h2.o
  38. ifdef IS_BOOTLOADER_BUILD
  39. ifndef CONFIG_SECURE_SIGNED_APPS_ECDSA_SCHEME
  40. COMPONENT_OBJEXCLUDE += src/secure_boot_v1/secure_boot_signatures_bootloader.o
  41. endif
  42. ifndef CONFIG_SECURE_SIGNED_APPS_RSA_SCHEME
  43. COMPONENT_OBJEXCLUDE += src/secure_boot_v2/secure_boot_signatures_bootloader.o
  44. endif
  45. ifndef CONFIG_SECURE_BOOT_V1_ENABLED
  46. COMPONENT_OBJEXCLUDE += src/secure_boot_v1/secure_boot.o
  47. endif
  48. ifndef CONFIG_SECURE_BOOT_V2_ENABLED
  49. COMPONENT_OBJEXCLUDE += src/secure_boot_v2/secure_boot.o
  50. endif
  51. ifndef CONFIG_SECURE_BOOT
  52. COMPONENT_OBJEXCLUDE += src/${IDF_TARGET}/secure_boot_secure_features.o
  53. endif
  54. ifndef CONFIG_SECURE_FLASH_ENC_ENABLED
  55. COMPONENT_OBJEXCLUDE += src/${IDF_TARGET}/flash_encryption_secure_features.o
  56. endif
  57. COMPONENT_OBJEXCLUDE += src/secure_boot_v1/secure_boot_signatures_app.o \
  58. src/secure_boot_v2/secure_boot_signatures_app.o
  59. else
  60. ifndef CONFIG_SECURE_SIGNED_APPS_ECDSA_SCHEME
  61. COMPONENT_OBJEXCLUDE += src/secure_boot_v1/secure_boot_signatures_app.o
  62. endif
  63. ifndef CONFIG_SECURE_SIGNED_APPS_RSA_SCHEME
  64. COMPONENT_OBJEXCLUDE += src/secure_boot_v2/secure_boot_signatures_app.o
  65. endif
  66. COMPONENT_OBJEXCLUDE += src/secure_boot_v1/secure_boot_signatures_bootloader.o \
  67. src/secure_boot_v1/secure_boot.o \
  68. src/secure_boot_v2/secure_boot_signatures_bootloader.o \
  69. src/secure_boot_v2/secure_boot.o
  70. endif # IS_BOOTLOADER_BUILD
  71. #
  72. # Secure boot signing key support
  73. #
  74. ifdef CONFIG_SECURE_SIGNED_APPS
  75. ifdef CONFIG_SECURE_SIGNED_APPS_ECDSA_SCHEME
  76. # this path is created relative to the component build directory
  77. SECURE_BOOT_VERIFICATION_KEY := $(abspath signature_verification_key.bin)
  78. ifdef CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES
  79. # verification key derived from signing key.
  80. $(SECURE_BOOT_VERIFICATION_KEY): $(SECURE_BOOT_SIGNING_KEY) $(SDKCONFIG_MAKEFILE)
  81. $(ESPSECUREPY) extract_public_key --keyfile $< $@
  82. else
  83. # find the configured public key file
  84. ORIG_SECURE_BOOT_VERIFICATION_KEY := $(call resolvepath,$(call dequote,$(CONFIG_SECURE_BOOT_VERIFICATION_KEY)),$(PROJECT_PATH))
  85. $(ORIG_SECURE_BOOT_VERIFICATION_KEY):
  86. @echo "Secure boot verification public key '$@' missing."
  87. @echo "This can be extracted from the private signing key, see"
  88. @echo "docs/security/secure-boot-v1.rst for details."
  89. exit 1
  90. # copy it into the build dir, so the secure boot verification key has
  91. # a predictable file name
  92. $(SECURE_BOOT_VERIFICATION_KEY): $(ORIG_SECURE_BOOT_VERIFICATION_KEY) $(SDKCONFIG_MAKEFILE)
  93. $(summary) CP $< $@
  94. cp $< $@
  95. endif #CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES
  96. COMPONENT_EXTRA_CLEAN += $(SECURE_BOOT_VERIFICATION_KEY)
  97. COMPONENT_EMBED_FILES := $(SECURE_BOOT_VERIFICATION_KEY)
  98. endif #CONFIG_SECURE_SIGNED_APPS_ECDSA_SCHEME
  99. endif #CONFIG_SECURE_SIGNED_APPS