Skip to content

Commit 83ac9be

Browse files
committed
Merge branch 'fix/bootloader_secure_boot_target_not_created' into 'master'
fix(bootloader): Fixed bootloader secure boot target creation failure See merge request espressif/esp-idf!40732
2 parents 75809d4 + 5d9ee7c commit 83ac9be

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

components/bootloader/subproject/CMakeLists.txt

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,12 @@ idf_build_set_property(PROJECT_BIN "${PROJECT_BIN}")
9292

9393
# Generate the unsigned binary from the ELF file.
9494
if(CONFIG_APP_BUILD_GENERATE_BINARIES)
95-
set(target_name "gen_bootloader_binary")
96-
__idf_build_binary("${bootloader_unsigned_bin}" "${target_name}")
95+
set(binary_target_name "gen_bootloader_binary")
96+
__idf_build_binary("${bootloader_unsigned_bin}" "${binary_target_name}")
97+
else()
98+
# If we are not building binaries, we don't need to create targets that depend on the
99+
# bootloader binary.
100+
return()
97101
endif()
98102

99103
idf_component_get_property(main_args esptool_py FLASH_ARGS)
@@ -165,7 +169,7 @@ endif()
165169

166170
# If secure boot is enabled, generate the signed binary from the unsigned one.
167171
if(CONFIG_SECURE_BOOT_V2_ENABLED)
168-
set(target_name "gen_signed_bootloader")
172+
set(signed_target_name "gen_signed_bootloader")
169173

170174
if(CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES)
171175
# The SECURE_BOOT_SIGNING_KEY is passed in from the parent build and
@@ -181,13 +185,17 @@ if(CONFIG_SECURE_BOOT_V2_ENABLED)
181185

182186
set(comment "Generated the signed Bootloader")
183187
set(key_arg KEYFILE "${SECURE_BOOT_SIGNING_KEY}")
188+
# Post-build commands should be attached to the signed binary target.
189+
set(post_build_target ${signed_target_name})
184190
else()
185191
# If we are not building signed binaries, we don't pass a key.
186192
set(comment "Bootloader generated but not signed")
187193
set(key_arg "")
194+
# Post-build commands should be attached to the unsigned binary target.
195+
set(post_build_target ${binary_target_name})
188196
endif()
189197

190-
__idf_build_secure_binary("${bootloader_unsigned_bin}" "${PROJECT_BIN}" "${target_name}"
198+
__idf_build_secure_binary("${bootloader_unsigned_bin}" "${PROJECT_BIN}" "${signed_target_name}"
191199
COMMENT "${comment}"
192200
${key_arg}
193201
)
@@ -240,7 +248,7 @@ elseif(
240248
(CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS GREATER 1) AND
241249
NOT CONFIG_SECURE_BOOT_FLASH_BOOTLOADER_DEFAULT
242250
)
243-
add_custom_command(TARGET gen_signed_bootloader POST_BUILD
251+
add_custom_command(TARGET ${post_build_target} POST_BUILD
244252
COMMAND ${CMAKE_COMMAND} -E echo
245253
"=============================================================================="
246254
COMMAND ${CMAKE_COMMAND} -E echo
@@ -258,7 +266,7 @@ elseif(
258266
"=============================================================================="
259267
VERBATIM)
260268
elseif(CONFIG_SECURE_BOOT_V2_ENABLED AND NOT CONFIG_SECURE_BOOT_FLASH_BOOTLOADER_DEFAULT)
261-
add_custom_command(TARGET gen_signed_bootloader POST_BUILD
269+
add_custom_command(TARGET ${post_build_target} POST_BUILD
262270
COMMAND ${CMAKE_COMMAND} -E echo
263271
"=============================================================================="
264272
COMMAND ${CMAKE_COMMAND} -E echo

components/esptool_py/project_include.cmake

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -638,9 +638,14 @@ function(__idf_build_secure_binary UNSIGNED_BIN_FILENAME SIGNED_BIN_FILENAME TAR
638638
)
639639
else()
640640
string(REPLACE ";" " " espsecurepy "${espsecure_py_cmd}")
641+
if(arg_COMMENT)
642+
set(comment_text "${arg_COMMENT}")
643+
else()
644+
set(comment_text "App built but not signed. Sign app before flashing.")
645+
endif()
641646
add_custom_command(TARGET app POST_BUILD
642647
COMMAND ${CMAKE_COMMAND} -E echo
643-
"App built but not signed. Sign app before flashing"
648+
"${comment_text}"
644649
COMMAND ${CMAKE_COMMAND} -E echo
645650
"\t${espsecurepy} sign_data --keyfile KEYFILE --version ${secure_boot_version} \
646651
${build_dir}/${UNSIGNED_BIN_FILENAME}"

0 commit comments

Comments
 (0)