From 010358bdbfd657fdcf334b1c76354d77a29b9589 Mon Sep 17 00:00:00 2001 From: Jamie McCrae Date: Fri, 18 Nov 2022 13:46:27 +0000 Subject: [PATCH] sysbuild: Allow board revisions to be specified for targets Allows specifying board revisions when configuring target images with sysbuild. Signed-off-by: Jamie McCrae --- .../cmake/modules/sysbuild_extensions.cmake | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/share/sysbuild/cmake/modules/sysbuild_extensions.cmake b/share/sysbuild/cmake/modules/sysbuild_extensions.cmake index ee7a4436772f1..e33ecb7c03909 100644 --- a/share/sysbuild/cmake/modules/sysbuild_extensions.cmake +++ b/share/sysbuild/cmake/modules/sysbuild_extensions.cmake @@ -105,25 +105,27 @@ endfunction() # Usage: # ExternalZephyrProject_Add(APPLICATION # SOURCE_DIR -# [BOARD ] +# [BOARD [BOARD_REVISION ]] # [MAIN_APP] # ) # # This function includes a Zephyr based build system into the multiimage # build system # -# APPLICATION: : Name of the application, name will also be used for build -# folder of the application -# SOURCE_DIR : Source directory of the application -# BOARD : Use for application build instead user defined BOARD. -# MAIN_APP: Flag indicating this application is the main application -# and where user defined settings should be passed on as-is -# except for multi image build flags. -# For example, -DCONF_FILES= will be passed on to the -# MAIN_APP unmodified. +# APPLICATION: : Name of the application, name will also be used for build +# folder of the application +# SOURCE_DIR : Source directory of the application +# BOARD : Use for application build instead user defined BOARD. +# BOARD_REVISION : Use of for application (only valid if +# is also supplied). +# MAIN_APP: Flag indicating this application is the main application +# and where user defined settings should be passed on as-is +# except for multi image build flags. +# For example, -DCONF_FILES= will be passed on to the +# MAIN_APP unmodified. # function(ExternalZephyrProject_Add) - cmake_parse_arguments(ZBUILD "MAIN_APP" "APPLICATION;BOARD;SOURCE_DIR" "" ${ARGN}) + cmake_parse_arguments(ZBUILD "MAIN_APP" "APPLICATION;BOARD;BOARD_REVISION;SOURCE_DIR" "" ${ARGN}) if(ZBUILD_UNPARSED_ARGUMENTS) message(FATAL_ERROR @@ -198,7 +200,17 @@ function(ExternalZephyrProject_Add) # Only set image specific board if provided. # The sysbuild BOARD is exported through sysbuild cache, and will be used # unless _BOARD is defined. - list(APPEND sysbuild_cache_strings "${ZBUILD_APPLICATION}_BOARD:STRING=${ZBUILD_BOARD}\n") + if(DEFINED ZBUILD_BOARD_REVISION) + # Use provided board revision + list(APPEND sysbuild_cache_strings "${ZBUILD_APPLICATION}_BOARD:STRING=${ZBUILD_BOARD}@${ZBUILD_BOARD_REVISION}\n") + else() + list(APPEND sysbuild_cache_strings "${ZBUILD_APPLICATION}_BOARD:STRING=${ZBUILD_BOARD}\n") + endif() + elseif(DEFINED ZBUILD_BOARD_REVISION) + message(FATAL_ERROR + "ExternalZephyrProject_Add(... BOARD_REVISION ${ZBUILD_BOARD_REVISION})" + " requires BOARD." + ) endif() file(WRITE ${sysbuild_cache_file}.tmp ${sysbuild_cache_strings})