Adds support for sysbuild loading snippets, these can be included by using e.g.: cmake ... -DSB_SNIPPET=blah for sysbuild directly or can be used with an application and sysbuild using -DSNIPPET. Snippets for sysbuild can use SB_EXTRA_CONF_FILE in the snippet file to specify an extra Kconfig fragment for sysbuild Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
70 lines
2.6 KiB
CMake
70 lines
2.6 KiB
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
# Copyright (c) 2024, Nordic Semiconductor ASA
|
|
|
|
# Convert Zephyr roots to absolute paths to be used by sysbuild.
|
|
#
|
|
# This CMake module will convert all relative paths in existing ROOT lists to
|
|
# absolute path relative from APP_DIR.
|
|
#
|
|
# Optional variables:
|
|
# - ARCH_ROOT: CMake list of arch roots containing arch implementations
|
|
# - SOC_ROOT: CMake list of SoC roots containing SoC implementations
|
|
# - BOARD_ROOT: CMake list of board roots containing board and shield implementations
|
|
# - MODULE_EXT_ROOT: CMake list of module external roots containing module glue code
|
|
# - SCA_ROOT: CMake list of SCA roots containing static code analysis integration code
|
|
#
|
|
# If a root is defined it will check the list of paths in the root and convert
|
|
# any relative path to absolute path and update the root list.
|
|
# If a root is undefined it will still be undefined when this module has loaded.
|
|
#
|
|
# Converted paths are placed in the CMake cache so that they are propagated
|
|
# correctly to image builds.
|
|
|
|
include_guard(GLOBAL)
|
|
|
|
include(extensions)
|
|
|
|
# Merge in variables from other sources
|
|
zephyr_get(MODULE_EXT_ROOT MERGE)
|
|
zephyr_get(BOARD_ROOT MERGE)
|
|
zephyr_get(SOC_ROOT MERGE)
|
|
zephyr_get(ARCH_ROOT MERGE)
|
|
zephyr_get(SCA_ROOT MERGE)
|
|
zephyr_get(SNIPPET_ROOT MERGE)
|
|
|
|
# Convert paths to absolute, relative from APP_DIR
|
|
zephyr_file(APPLICATION_ROOT MODULE_EXT_ROOT BASE_DIR ${APP_DIR})
|
|
zephyr_file(APPLICATION_ROOT BOARD_ROOT BASE_DIR ${APP_DIR})
|
|
zephyr_file(APPLICATION_ROOT SOC_ROOT BASE_DIR ${APP_DIR})
|
|
zephyr_file(APPLICATION_ROOT ARCH_ROOT BASE_DIR ${APP_DIR})
|
|
zephyr_file(APPLICATION_ROOT SCA_ROOT BASE_DIR ${APP_DIR})
|
|
zephyr_file(APPLICATION_ROOT SNIPPET_ROOT BASE_DIR ${APP_DIR})
|
|
|
|
# Sysbuild must ensure any locally defined variables in sysbuild/CMakeLists.txt
|
|
# have been added to the cache in order for the settings to propagate to images.
|
|
# note: zephyr_file has removed any list duplicates
|
|
if(DEFINED MODULE_EXT_ROOT)
|
|
set(MODULE_EXT_ROOT ${MODULE_EXT_ROOT} CACHE PATH "Sysbuild adjusted MODULE_EXT_ROOT" FORCE)
|
|
endif()
|
|
|
|
if(DEFINED BOARD_ROOT)
|
|
set(BOARD_ROOT ${BOARD_ROOT} CACHE PATH "Sysbuild adjusted BOARD_ROOT" FORCE)
|
|
endif()
|
|
|
|
if(DEFINED SOC_ROOT)
|
|
set(SOC_ROOT ${SOC_ROOT} CACHE PATH "Sysbuild adjusted SOC_ROOT" FORCE)
|
|
endif()
|
|
|
|
if(DEFINED ARCH_ROOT)
|
|
set(ARCH_ROOT ${ARCH_ROOT} CACHE PATH "Sysbuild adjusted ARCH_ROOT" FORCE)
|
|
endif()
|
|
|
|
if(DEFINED SCA_ROOT)
|
|
set(SCA_ROOT ${SCA_ROOT} CACHE PATH "Sysbuild adjusted SCA_ROOT" FORCE)
|
|
endif()
|
|
|
|
if(DEFINED SNIPPET_ROOT)
|
|
set(SNIPPET_ROOT ${SNIPPET_ROOT} CACHE PATH "Sysbuild adjusted SNIPPET_ROOT" FORCE)
|
|
endif()
|