# Copyright (c) 2021 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) # Global list of images enabled in this multi image build system. set(IMAGES) get_filename_component(APP_DIR ${APP_DIR} ABSOLUTE) get_filename_component(app_name ${APP_DIR} NAME) # Propagate bootloader and signing settings from this system to the MCUboot and # application image build systems. if(SB_CONFIG_BOOTLOADER_MCUBOOT) set(${app_name}_CONFIG_BOOTLOADER_MCUBOOT y CACHE STRING "MCUBOOT is enabled as bootloader" FORCE ) set(${app_name}_CONFIG_MCUBOOT_SIGNATURE_KEY_FILE \"${SB_CONFIG_BOOT_SIGNATURE_KEY_FILE}\" CACHE STRING "Signature key file for signing" FORCE ) # Set corresponding values in mcuboot set(mcuboot_CONFIG_BOOT_SIGNATURE_TYPE_${SB_CONFIG_SIGNATURE_TYPE} y CACHE STRING "MCUBOOT signature type" FORCE ) set(mcuboot_CONFIG_BOOT_SIGNATURE_KEY_FILE \"${SB_CONFIG_BOOT_SIGNATURE_KEY_FILE}\" CACHE STRING "Signature key file for signing" FORCE ) else() set(${app_name}_CONFIG_BOOTLOADER_MCUBOOT n CACHE STRING "MCUBOOT is disabled as bootloader" FORCE ) endif() # This adds the primary application to the build. ExternalZephyrProject_Add( APPLICATION ${app_name} SOURCE_DIR ${APP_DIR} MAIN_APP ) list(APPEND IMAGES "${app_name}") set(DEFAULT_IMAGE "${app_name}") add_subdirectory(bootloader) # This allows for board and app specific images to be included. include(${BOARD_DIR}/sysbuild.cmake OPTIONAL) include(${APP_DIR}/sysbuild.cmake OPTIONAL) include(cmake/domains.cmake)