@@ -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
@@ -229,6 +246,25 @@ function(${SYSBUILD_CURRENT_MODULE_NAME}_pre_cmake)
229246 set_config_bool(mcuboot CONFIG_BOOT_IMG_HASH_ALG_SHA512 y)
230247 endif ()
231248
249+ if (SB_CONFIG_MCUBOOT_MANIFEST_UPDATES)
250+ set_config_bool(mcuboot CONFIG_MCUBOOT_MANIFEST_UPDATES y)
251+ set_config_int(mcuboot CONFIG_MCUBOOT_MANIFEST_IMAGE_NUMBER
252+ ${SB_CONFIG_MCUBOOT_MANIFEST_IMAGE_NUMBER} )
253+
254+ if ("${manifest_image_target} " STREQUAL "none" )
255+ message (FATAL_ERROR "No manifest image target, cannot append manifest to image" )
256+ endif ()
257+ set_config_bool(${manifest_image_target} CONFIG_NCS_MCUBOOT_IMGTOOL_APPEND_MANIFEST y)
258+ if (SB_CONFIG_MCUBOOT_BUILD_DIRECT_XIP_VARIANT)
259+ if ("${manifest_image_target} " STREQUAL "${DEFAULT_IMAGE} " )
260+ set_config_bool(mcuboot_secondary_app CONFIG_NCS_MCUBOOT_IMGTOOL_APPEND_MANIFEST y)
261+ else ()
262+ set_config_bool(${manifest_image_target} _secondary_app
263+ CONFIG_NCS_MCUBOOT_IMGTOOL_APPEND_MANIFEST y)
264+ endif ()
265+ endif ()
266+ endif ()
267+
232268 # Apply configuration to application
233269 foreach (image ${updateable_images} )
234270 foreach (mode ${application_mcuboot_modes} )
@@ -239,6 +275,11 @@ function(${SYSBUILD_CURRENT_MODULE_NAME}_pre_cmake)
239275 endif ()
240276 endforeach ()
241277
278+ if (SB_CONFIG_MCUBOOT_MANIFEST_UPDATES)
279+ set_config_bool(${image} CONFIG_NCS_MCUBOOT_MANIFEST_UPDATES y)
280+ set_config_int(${image} CONFIG_NCS_MCUBOOT_MANIFEST_IMAGE_NUMBER ${SB_CONFIG_MCUBOOT_MANIFEST_IMAGE_NUMBER} )
281+ endif ()
282+
242283 if (SB_CONFIG_BOOT_SIGNATURE_TYPE_ED25519)
243284 set_config_bool(${image} CONFIG_MCUBOOT_BOOTLOADER_SIGNATURE_TYPE_ED25519 y)
244285 endif ()
@@ -354,7 +395,9 @@ function(${SYSBUILD_CURRENT_MODULE_NAME}_pre_cmake)
354395 set_config_bool(mcuboot CONFIG_BOOT_FIH_PROFILE_DEFAULT_LOW y)
355396 endif ()
356397
357- 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)
398+ if (SB_CONFIG_PARTITION_MANAGER OR SB_CONFIG_MCUBOOT_MODE_DIRECT_XIP
399+ OR SB_CONFIG_MCUBOOT_MODE_DIRECT_XIP_WITH_REVERT OR SB_CONFIG_MCUBOOT_COMPRESSED_IMAGE_SUPPORT
400+ OR SB_CONFIG_MCUBOOT_MANIFEST_UPDATES)
358401 # Use NCS signing script with support for PM or direct XIP (NCS specific features)
359402 if (SB_CONFIG_QSPI_XIP_SPLIT_IMAGE)
360403 set (${DEFAULT_IMAGE} _SIGNING_SCRIPT "${ZEPHYR_NRF_MODULE_DIR} /cmake/sysbuild/image_signing_split.cmake" CACHE INTERNAL "MCUboot signing script" FORCE)
@@ -813,6 +856,10 @@ function(${SYSBUILD_CURRENT_MODULE_NAME}_post_cmake)
813856 include (${ZEPHYR_NRF_MODULE_DIR} /cmake/sysbuild/mcuboot_nrf54h20.cmake)
814857 endif ()
815858
859+ if (SB_CONFIG_BOOTLOADER_MCUBOOT AND SB_CONFIG_MCUBOOT_MANIFEST_UPDATES)
860+ include (${ZEPHYR_NRF_MODULE_DIR} /cmake/sysbuild/mcuboot_manifest.cmake)
861+ endif ()
862+
816863 if (SB_CONFIG_DFU_ZIP)
817864 if (SB_CONFIG_BOOTLOADER_MCUBOOT)
818865 include (${ZEPHYR_NRF_MODULE_DIR} /cmake/sysbuild/zip.cmake)
0 commit comments