| # Copyright (c) 2021-2023 Nordic Semiconductor |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| cmake_minimum_required(VERSION 3.20) |
| |
| if(NOT DEFINED APP_DIR) |
| message(FATAL_ERROR "No main application specified") |
| endif() |
| |
| # This will update the APP_DIR cache variable to PATH type and apply a comment. |
| # If APP_DIR is a relative path, then CMake will adjust to absolute path based |
| # on current working dir. |
| set(APP_DIR ${APP_DIR} CACHE PATH "Main Application Source Directory") |
| |
| # Add sysbuild/cmake/modules to CMAKE_MODULE_PATH which allows us to integrate |
| # sysbuild CMake modules with general Zephyr CMake modules. |
| list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake/modules) |
| # List of Zephyr and sysbuild CMake modules we need for sysbuild. |
| # Note: sysbuild_kconfig will internally load kconfig CMake module. |
| set(zephyr_modules extensions sysbuild_extensions python west root zephyr_module boards shields sysbuild_kconfig) |
| |
| find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE} COMPONENTS ${zephyr_modules}) |
| |
| project(sysbuild LANGUAGES) |
| |
| get_filename_component(APP_DIR ${APP_DIR} ABSOLUTE) |
| get_filename_component(app_name ${APP_DIR} NAME) |
| set(DEFAULT_IMAGE "${app_name}") |
| |
| # This is where all Zephyr applications are added to the multi-image build. |
| sysbuild_add_subdirectory(images) |
| |
| get_property(IMAGES GLOBAL PROPERTY sysbuild_images) |
| sysbuild_module_call(PRE_CMAKE MODULES ${SYSBUILD_MODULE_NAMES} IMAGES ${IMAGES}) |
| sysbuild_images_order(IMAGES_CONFIGURATION_ORDER CONFIGURE IMAGES ${IMAGES}) |
| foreach(image ${IMAGES_CONFIGURATION_ORDER}) |
| ExternalZephyrProject_Cmake(APPLICATION ${image}) |
| endforeach() |
| sysbuild_module_call(POST_CMAKE MODULES ${SYSBUILD_MODULE_NAMES} IMAGES ${IMAGES}) |
| |
| sysbuild_module_call(PRE_DOMAINS MODULES ${SYSBUILD_MODULE_NAMES} IMAGES ${IMAGES}) |
| include(cmake/domains.cmake) |
| sysbuild_module_call(POST_DOMAINS MODULES ${SYSBUILD_MODULE_NAMES} IMAGES ${IMAGES}) |