89 lines
2.3 KiB
CMake
89 lines
2.3 KiB
CMake
|
# SPDX-License-Identifier: Apache-2.0
|
||
|
#
|
||
|
# Copyright (c) 2021, Nordic Semiconductor ASA
|
||
|
|
||
|
# This CMake module will load all Zephyr CMake modules in correct order for
|
||
|
# default Zephyr build system.
|
||
|
#
|
||
|
# Outcome:
|
||
|
# See individual CMake module descriptions
|
||
|
|
||
|
include_guard(GLOBAL)
|
||
|
|
||
|
# The code line below defines the real minimum supported CMake version.
|
||
|
#
|
||
|
# Unfortunately CMake requires the toplevel CMakeLists.txt file to define the
|
||
|
# required version, not even invoking it from a CMake module is sufficient.
|
||
|
# It is however permitted to have multiple invocations of cmake_minimum_required.
|
||
|
cmake_minimum_required(VERSION 3.20.0)
|
||
|
|
||
|
message(STATUS "Application: ${APPLICATION_SOURCE_DIR}")
|
||
|
|
||
|
find_package(ZephyrBuildConfiguration
|
||
|
QUIET NO_POLICY_SCOPE
|
||
|
NAMES ZephyrBuild
|
||
|
PATHS ${ZEPHYR_BASE}/../*
|
||
|
NO_CMAKE_PATH
|
||
|
NO_CMAKE_ENVIRONMENT_PATH
|
||
|
NO_SYSTEM_ENVIRONMENT_PATH
|
||
|
NO_CMAKE_PACKAGE_REGISTRY
|
||
|
NO_CMAKE_SYSTEM_PATH
|
||
|
NO_CMAKE_SYSTEM_PACKAGE_REGISTRY
|
||
|
)
|
||
|
|
||
|
# Prepare user cache
|
||
|
include(python)
|
||
|
include(user_cache)
|
||
|
|
||
|
# Load Zephyr extensions
|
||
|
include(extensions)
|
||
|
include(version) # depends on hex.cmake
|
||
|
|
||
|
#
|
||
|
# Find tools
|
||
|
#
|
||
|
|
||
|
include(west)
|
||
|
include(ccache)
|
||
|
|
||
|
# Load default root settings
|
||
|
include(root)
|
||
|
|
||
|
#
|
||
|
# Find Zephyr modules.
|
||
|
# Those may contain additional DTS, BOARD, SOC, ARCH ROOTs.
|
||
|
# Also create the Kconfig binary dir for generated Kconf files.
|
||
|
#
|
||
|
include(zephyr_module)
|
||
|
|
||
|
include(boards)
|
||
|
include(shields)
|
||
|
include(arch)
|
||
|
include(configuration_files)
|
||
|
|
||
|
include(verify-toolchain)
|
||
|
include(host-tools)
|
||
|
|
||
|
# Include board specific device-tree flags before parsing.
|
||
|
include(${BOARD_DIR}/pre_dt_board.cmake OPTIONAL)
|
||
|
|
||
|
# DTS should be close to kconfig because CONFIG_ variables from
|
||
|
# kconfig and dts should be available at the same time.
|
||
|
#
|
||
|
# The DT system uses a C preprocessor for it's code generation needs.
|
||
|
# This creates an awkward chicken-and-egg problem, because we don't
|
||
|
# always know exactly which toolchain the user needs until we know
|
||
|
# more about the target, e.g. after DT and Kconfig.
|
||
|
#
|
||
|
# To resolve this we find "some" C toolchain, configure it generically
|
||
|
# with the minimal amount of configuration needed to have it
|
||
|
# preprocess DT sources, and then, after we have finished processing
|
||
|
# both DT and Kconfig we complete the target-specific configuration,
|
||
|
# and possibly change the toolchain.
|
||
|
include(generic_toolchain)
|
||
|
include(dts)
|
||
|
include(kconfig)
|
||
|
include(soc)
|
||
|
include(target_toolchain)
|
||
|
include(kernel)
|