sysbuild: Do not exclude images from domains.yaml
The recent support for BUILD_ONLY images was implemented by excluding them from `domains.yaml`, in order to crudely prevent them from being picked up by `west flash`. Arguably, this is incorrect or unexpected, because the sysbuild documentation defines a "domain" as: Every Zephyr CMake build system managed by sysbuild. Another consequence is that, given a build-only `<image>`, this makes it impossible to pass `--domain <image>` to `west flash`, `west debug`, and ironically `west build`. To fix that, `domains.yaml` should again represent all domains, and the build-only ones should be indicated in another way. Enter `flash_order`: a new top-level key in the domains YAML schema. It contains the default sequence of images used by `west flash`, where the build-only images are excluded, and the order is influenced by `sysbuild_add_dependencies()`. Signed-off-by: Grzegorz Swiderski <grzegorz.swiderski@nordicsemi.no>
This commit is contained in:
parent
14348c53d4
commit
05d7769073
4 changed files with 31 additions and 29 deletions
|
@ -7,12 +7,13 @@ sysbuild_images_order(IMAGES_FLASHING_ORDER FLASH IMAGES ${IMAGES})
|
|||
set(domains_yaml "default: ${DEFAULT_IMAGE}")
|
||||
set(domains_yaml "${domains_yaml}\nbuild_dir: ${CMAKE_BINARY_DIR}")
|
||||
set(domains_yaml "${domains_yaml}\ndomains:")
|
||||
foreach(image ${IMAGES_FLASHING_ORDER})
|
||||
get_target_property(image_is_build_only ${image} BUILD_ONLY)
|
||||
if(image_is_build_only)
|
||||
continue()
|
||||
endif()
|
||||
foreach(image ${IMAGES})
|
||||
set(domains_yaml "${domains_yaml}\n - name: ${image}")
|
||||
set(domains_yaml "${domains_yaml}\n build_dir: $<TARGET_PROPERTY:${image},_EP_BINARY_DIR>")
|
||||
endforeach()
|
||||
set(domains_yaml "${domains_yaml}\nflash_order:")
|
||||
foreach(image ${IMAGES_FLASHING_ORDER})
|
||||
set(flash_cond "$<NOT:$<BOOL:$<TARGET_PROPERTY:${image},BUILD_ONLY>>>")
|
||||
set(domains_yaml "${domains_yaml}$<${flash_cond}:\n - ${image}>")
|
||||
endforeach()
|
||||
file(GENERATE OUTPUT ${CMAKE_BINARY_DIR}/domains.yaml CONTENT "${domains_yaml}")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue