@@ -172,6 +172,7 @@ function(${SYSBUILD_CURRENT_MODULE_NAME}_pre_cmake)
172172 set (dfu_slots_output_names Application;Network;Wifi\ patches;QSPI\ XIP;MCUboot\ b0\ update)
173173 set (dfu_slots_output_text "-- Sysbuild assigned MCUboot image IDs:\n " )
174174 set (dfu_image_index -1)
175+ set (manifest_image_target "none" )
175176
176177 list (LENGTH dfu_slots_sysbuild_kconfigs test_things_size)
177178 math (EXPR test_things_size "${test_things_size} - 1" )
@@ -193,6 +194,22 @@ function(${SYSBUILD_CURRENT_MODULE_NAME}_pre_cmake)
193194 set_config_int(${image} ${current_application_kconfig} ${value} )
194195 endforeach ()
195196
197+ if (SB_CONFIG_MCUBOOT_MANIFEST_UPDATES)
198+ if (${value} EQUAL ${SB_CONFIG_MCUBOOT_MANIFEST_IMAGE_NUMBER} )
199+ if ("${current_application_kconfig} " STREQUAL "CONFIG_MCUBOOT_APPLICATION_IMAGE_NUMBER" )
200+ set (manifest_image_target ${DEFAULT_IMAGE} )
201+ elseif ("${current_application_kconfig} " STREQUAL "CONFIG_MCUBOOT_NETWORK_CORE_IMAGE_NUMBER" )
202+ set (manifest_image_target ${SB_CONFIG_NETCORE_IMAGE_NAME} )
203+ else ()
204+ # Unsupported indexes:
205+ # - CONFIG_MCUBOOT_WIFI_PATCHES_IMAGE_NUMBER
206+ # - CONFIG_MCUBOOT_QSPI_XIP_IMAGE_NUMBER
207+ # - CONFIG_MCUBOOT_MCUBOOT_IMAGE_NUMBER
208+ message (FATAL_ERROR "MCUboot manifest image can only be assigned to application or network core images" )
209+ endif ()
210+ endif ()
211+ endif ()
212+
196213 set (${current_cache_name} ${value} CACHE INTERNAL "" FORCE)
197214 endforeach ()
198215
@@ -256,6 +273,25 @@ function(${SYSBUILD_CURRENT_MODULE_NAME}_pre_cmake)
256273 set_config_bool(mcuboot CONFIG_BOOT_IMG_HASH_ALG_SHA512 y)
257274 endif ()
258275
276+ if (SB_CONFIG_MCUBOOT_MANIFEST_UPDATES)
277+ set_config_bool(mcuboot CONFIG_MCUBOOT_MANIFEST_UPDATES y)
278+ set_config_int(mcuboot CONFIG_MCUBOOT_MANIFEST_IMAGE_NUMBER
279+ ${SB_CONFIG_MCUBOOT_MANIFEST_IMAGE_NUMBER} )
280+
281+ if ("${manifest_image_target} " STREQUAL "none" )
282+ message (FATAL_ERROR "No manifest image target, cannot append manifest to image" )
283+ endif ()
284+ set_config_bool(${manifest_image_target} CONFIG_NCS_MCUBOOT_IMGTOOL_APPEND_MANIFEST y)
285+ if (SB_CONFIG_MCUBOOT_BUILD_DIRECT_XIP_VARIANT)
286+ if ("${manifest_image_target} " STREQUAL "${DEFAULT_IMAGE} " )
287+ set_config_bool(mcuboot_secondary_app CONFIG_NCS_MCUBOOT_IMGTOOL_APPEND_MANIFEST y)
288+ else ()
289+ set_config_bool(${manifest_image_target} _secondary_app
290+ CONFIG_NCS_MCUBOOT_IMGTOOL_APPEND_MANIFEST y)
291+ endif ()
292+ endif ()
293+ endif ()
294+
259295 # Apply configuration to application
260296 foreach (image ${updateable_images} )
261297 foreach (mode ${application_mcuboot_modes} )
@@ -266,6 +302,11 @@ function(${SYSBUILD_CURRENT_MODULE_NAME}_pre_cmake)
266302 endif ()
267303 endforeach ()
268304
305+ if (SB_CONFIG_MCUBOOT_MANIFEST_UPDATES)
306+ set_config_bool(${image} CONFIG_NCS_MCUBOOT_MANIFEST_UPDATES y)
307+ set_config_int(${image} CONFIG_NCS_MCUBOOT_MANIFEST_IMAGE_NUMBER ${SB_CONFIG_MCUBOOT_MANIFEST_IMAGE_NUMBER} )
308+ endif ()
309+
269310 if (SB_CONFIG_BOOT_SIGNATURE_TYPE_ED25519)
270311 set_config_bool(${image} CONFIG_MCUBOOT_BOOTLOADER_SIGNATURE_TYPE_ED25519 y)
271312 endif ()
@@ -381,7 +422,9 @@ function(${SYSBUILD_CURRENT_MODULE_NAME}_pre_cmake)
381422 set_config_bool(mcuboot CONFIG_BOOT_FIH_PROFILE_DEFAULT_LOW y)
382423 endif ()
383424
384- if (SB_CONFIG_PARTITION_MANAGER OR SB_CONFIG_MCUBOOT_MODE_DIRECT_XIP OR SB_CONFIG_MCUBOOT_MODE_DIRECT_XIP_WITH_REVERT OR SB_CONFIG_MCUBOOT_COMPRESSED_IMAGE_SUPPORT)
425+ if (SB_CONFIG_PARTITION_MANAGER OR SB_CONFIG_MCUBOOT_MODE_DIRECT_XIP
426+ OR SB_CONFIG_MCUBOOT_MODE_DIRECT_XIP_WITH_REVERT OR SB_CONFIG_MCUBOOT_COMPRESSED_IMAGE_SUPPORT
427+ OR SB_CONFIG_MCUBOOT_MANIFEST_UPDATES)
385428 # Use NCS signing script with support for PM or direct XIP (NCS specific features)
386429 if (SB_CONFIG_QSPI_XIP_SPLIT_IMAGE)
387430 set (${DEFAULT_IMAGE} _SIGNING_SCRIPT "${ZEPHYR_NRF_MODULE_DIR} /cmake/sysbuild/image_signing_split.cmake" CACHE INTERNAL "MCUboot signing script" FORCE)
@@ -846,6 +889,10 @@ function(${SYSBUILD_CURRENT_MODULE_NAME}_post_cmake)
846889 include (${ZEPHYR_NRF_MODULE_DIR} /cmake/sysbuild/mcuboot_nrf54h20.cmake)
847890 endif ()
848891
892+ if (SB_CONFIG_BOOTLOADER_MCUBOOT AND SB_CONFIG_MCUBOOT_MANIFEST_UPDATES)
893+ include (${ZEPHYR_NRF_MODULE_DIR} /cmake/sysbuild/mcuboot_manifest.cmake)
894+ endif ()
895+
849896 if (SB_CONFIG_DFU_ZIP)
850897 if (SB_CONFIG_BOOTLOADER_MCUBOOT)
851898 include (${ZEPHYR_NRF_MODULE_DIR} /cmake/sysbuild/zip.cmake)
0 commit comments