# SPDX-License-Identifier: Apache-2.0 # # Copyright (c) 2023, Nordic Semiconductor ASA # # Configure ARCH settings based on KConfig settings and arch root. # # This CMake module will set the following variables in the build system based # on board directory and arch root. # # If no implementation is available for the current arch an error will be raised. # # Outcome: # The following variables will be defined when this CMake module completes: # # - ARCH: Name of the arch in use. # - ARCH_DIR: Directory containing the arch implementation. # - ARCH_ROOT: ARCH_ROOT with ZEPHYR_BASE appended # # Variable dependencies: # - ARCH_ROOT: CMake list of arch roots containing arch implementations # # Variables set by this module and not mentioned above are considered internal # use only and may be removed, renamed, or re-purposed without prior notice. include_guard(GLOBAL) if(HWMv2) # HWMv2 obtains arch from Kconfig for the given Board / SoC variant because # the Board / SoC path is no longer sufficient for determine the arch # (read: multi-core and multi-arch SoC). set(ARCH ${CONFIG_ARCH}) string(TOUPPER "${ARCH}" arch_upper) if(NOT ARCH) message(FATAL_ERROR "ARCH not defined. Check that BOARD=${BOARD}, is selecting " "an appropriate SoC in Kconfig, SoC=${CONFIG_SOC}, and that the SoC " "is selecting the correct architecture." ) endif() cmake_path(GET ARCH_V2_${arch_upper}_DIR PARENT_PATH ARCH_DIR) if(NOT ARCH_DIR) message(FATAL_ERROR "Could not find ARCH=${ARCH} for BOARD=${BOARD}, \ please check your installation. ARCH roots searched: \n\ ${ARCH_ROOT}") endif() endif()