|  | # SPDX-License-Identifier: Apache-2.0 | 
|  | # | 
|  | # Copyright (c) 2022, Nordic Semiconductor ASA | 
|  |  | 
|  | # Setup basic settings for a Zephyr project. | 
|  | # | 
|  | # Basic settings are: | 
|  | # - sysbuild defined configuration settings | 
|  | # | 
|  | # Details for sysbuild settings: | 
|  | # | 
|  | # Sysbuild is a higher level build system used by Zephyr. | 
|  | # Sysbuild allows users to build multiple samples for a given system. | 
|  | # | 
|  | # For this to work, sysbuild manages other Zephyr CMake build systems by setting | 
|  | # dedicated build variables. | 
|  | # This CMake modules loads the sysbuild cache variables as target properties on | 
|  | # a sysbuild_cache target. | 
|  | # | 
|  | # This ensures that qoutes and lists are correctly preserved. | 
|  |  | 
|  | include_guard(GLOBAL) | 
|  |  | 
|  | if(SYSBUILD) | 
|  | add_custom_target(sysbuild_cache) | 
|  | file(STRINGS "${SYSBUILD_CACHE}" sysbuild_cache_strings ENCODING UTF-8) | 
|  | foreach(str ${sysbuild_cache_strings}) | 
|  | # Using a regex for matching whole 'VAR_NAME:TYPE=VALUE' will strip semi-colons | 
|  | # thus resulting in lists to become strings. | 
|  | # Therefore we first fetch VAR_NAME and TYPE, and afterwards extract | 
|  | # remaining of string into a value that populates the property. | 
|  | # This method ensures that both quoted values and ;-separated list stays intact. | 
|  | string(REGEX MATCH "([^:]*):([^=]*)=" variable_identifier ${str}) | 
|  | string(LENGTH ${variable_identifier} variable_identifier_length) | 
|  | string(SUBSTRING "${str}" ${variable_identifier_length} -1 variable_value) | 
|  | set_property(TARGET sysbuild_cache APPEND PROPERTY "SYSBUILD_CACHE:VARIABLES" "${CMAKE_MATCH_1}") | 
|  | set_property(TARGET sysbuild_cache PROPERTY "${CMAKE_MATCH_1}:TYPE" "${CMAKE_MATCH_2}") | 
|  | set_property(TARGET sysbuild_cache PROPERTY "${CMAKE_MATCH_1}" "${variable_value}") | 
|  | endforeach() | 
|  | endif() |