sysbuild: fix extra kconfig targets when using sysbuild
Zephyr provides a feature to hook in custom menuconfig implementations by setting EXTRA_KCONFIG_TARGETS and then defining the corresponding command to invoke as EXTRA_KCONFIG_TARGET_COMMAND_FOR_<target>. This feature is broken with sysbuild because sysbuild will try to create multiple custom targets with identical names. This commit fix the sysbuild handling of extra kconfig targets. Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
This commit is contained in:
parent
f7ebd61ae9
commit
1bea5fcacb
2 changed files with 20 additions and 2 deletions
|
|
@ -332,7 +332,7 @@ function(ExternalZephyrProject_Add)
|
||||||
menuconfig
|
menuconfig
|
||||||
hardenconfig
|
hardenconfig
|
||||||
guiconfig
|
guiconfig
|
||||||
${EXTRA_KCONFIG_TARGETS}
|
$CACHE{EXTRA_KCONFIG_TARGETS}
|
||||||
)
|
)
|
||||||
|
|
||||||
if(NOT ZBUILD_APP_TYPE STREQUAL "MAIN")
|
if(NOT ZBUILD_APP_TYPE STREQUAL "MAIN")
|
||||||
|
|
@ -345,6 +345,16 @@ function(ExternalZephyrProject_Add)
|
||||||
USES_TERMINAL
|
USES_TERMINAL
|
||||||
)
|
)
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
set(list_separator ",")
|
||||||
|
set(image_extra_kconfig_targets "-DEXTRA_KCONFIG_TARGETS=$CACHE{EXTRA_KCONFIG_TARGETS}")
|
||||||
|
string(REPLACE ";" "${list_separator}" image_extra_kconfig_targets "${image_extra_kconfig_targets}")
|
||||||
|
foreach(target $CACHE{EXTRA_KCONFIG_TARGETS})
|
||||||
|
list(APPEND image_extra_kconfig_targets
|
||||||
|
-DEXTRA_KCONFIG_TARGET_COMMAND_FOR_${target}=$CACHE{EXTRA_KCONFIG_TARGET_COMMAND_FOR_${target}}
|
||||||
|
)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
include(ExternalProject)
|
include(ExternalProject)
|
||||||
set(application_binary_dir ${CMAKE_BINARY_DIR}/${ZBUILD_APPLICATION})
|
set(application_binary_dir ${CMAKE_BINARY_DIR}/${ZBUILD_APPLICATION})
|
||||||
ExternalProject_Add(
|
ExternalProject_Add(
|
||||||
|
|
@ -352,9 +362,11 @@ function(ExternalZephyrProject_Add)
|
||||||
SOURCE_DIR ${ZBUILD_SOURCE_DIR}
|
SOURCE_DIR ${ZBUILD_SOURCE_DIR}
|
||||||
BINARY_DIR ${application_binary_dir}
|
BINARY_DIR ${application_binary_dir}
|
||||||
CONFIGURE_COMMAND ""
|
CONFIGURE_COMMAND ""
|
||||||
|
LIST_SEPARATOR "${list_separator}"
|
||||||
CMAKE_ARGS -DSYSBUILD:BOOL=True
|
CMAKE_ARGS -DSYSBUILD:BOOL=True
|
||||||
-DSYSBUILD_CACHE:FILEPATH=${sysbuild_cache_file}
|
-DSYSBUILD_CACHE:FILEPATH=${sysbuild_cache_file}
|
||||||
${shared_cmake_vars_argument}
|
${shared_cmake_vars_argument}
|
||||||
|
${image_extra_kconfig_targets}
|
||||||
BUILD_COMMAND ${CMAKE_COMMAND} --build .
|
BUILD_COMMAND ${CMAKE_COMMAND} --build .
|
||||||
INSTALL_COMMAND ""
|
INSTALL_COMMAND ""
|
||||||
BUILD_ALWAYS True
|
BUILD_ALWAYS True
|
||||||
|
|
@ -453,7 +465,7 @@ function(ExternalZephyrProject_Cmake)
|
||||||
" ${image_banner_header}\n"
|
" ${image_banner_header}\n"
|
||||||
)
|
)
|
||||||
|
|
||||||
ExternalProject_Get_Property(${ZCMAKE_APPLICATION} SOURCE_DIR BINARY_DIR CMAKE_ARGS)
|
ExternalProject_Get_Property(${ZCMAKE_APPLICATION} SOURCE_DIR BINARY_DIR CMAKE_ARGS LIST_SEPARATOR)
|
||||||
get_target_property(${ZCMAKE_APPLICATION}_BOARD ${ZCMAKE_APPLICATION} BOARD)
|
get_target_property(${ZCMAKE_APPLICATION}_BOARD ${ZCMAKE_APPLICATION} BOARD)
|
||||||
|
|
||||||
get_property(${ZCMAKE_APPLICATION}_CONF_SCRIPT TARGET ${ZCMAKE_APPLICATION}
|
get_property(${ZCMAKE_APPLICATION}_CONF_SCRIPT TARGET ${ZCMAKE_APPLICATION}
|
||||||
|
|
@ -471,6 +483,7 @@ function(ExternalZephyrProject_Cmake)
|
||||||
string(CONFIGURE "${config_content}" config_content)
|
string(CONFIGURE "${config_content}" config_content)
|
||||||
file(WRITE ${dotconfigsysbuild} ${config_content})
|
file(WRITE ${dotconfigsysbuild} ${config_content})
|
||||||
|
|
||||||
|
string(REPLACE "${LIST_SEPARATOR}" "\\;" CMAKE_ARGS "${CMAKE_ARGS}")
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${CMAKE_COMMAND}
|
COMMAND ${CMAKE_COMMAND}
|
||||||
-G${CMAKE_GENERATOR}
|
-G${CMAKE_GENERATOR}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,11 @@ set(EXTRA_KCONFIG_TARGET_COMMAND_FOR_sysbuild_guiconfig
|
||||||
)
|
)
|
||||||
|
|
||||||
set(KCONFIG_TARGETS sysbuild_menuconfig sysbuild_guiconfig)
|
set(KCONFIG_TARGETS sysbuild_menuconfig sysbuild_guiconfig)
|
||||||
|
foreach(extra_target ${EXTRA_KCONFIG_TARGETS})
|
||||||
|
set(EXTRA_KCONFIG_TARGET_COMMAND_FOR_sysbuild_${extra_target}
|
||||||
|
"${EXTRA_KCONFIG_TARGET_COMMAND_FOR_${extra_target}}"
|
||||||
|
)
|
||||||
|
endforeach()
|
||||||
list(TRANSFORM EXTRA_KCONFIG_TARGETS PREPEND "sysbuild_")
|
list(TRANSFORM EXTRA_KCONFIG_TARGETS PREPEND "sysbuild_")
|
||||||
|
|
||||||
zephyr_get(APPLICATION_CONFIG_DIR)
|
zephyr_get(APPLICATION_CONFIG_DIR)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue