| # SPDX-License-Identifier: Apache-2.0 | 
 |  | 
 | # No official documentation exists for the "Generic" value, except their wiki. | 
 | # | 
 | # https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/CrossCompiling: | 
 | #   CMAKE_SYSTEM_NAME : this one is mandatory, it is the name of the target | 
 | #   system, i.e. the same as CMAKE_SYSTEM_NAME would have if CMake would run | 
 | #   on the target system.  Typical examples are "Linux" and "Windows". This | 
 | #   variable is used for constructing the file names of the platform files | 
 | #   like Linux.cmake or Windows-gcc.cmake. If your target is an embedded | 
 | #   system without OS set CMAKE_SYSTEM_NAME to "Generic". | 
 | set(CMAKE_SYSTEM_NAME Generic) | 
 |  | 
 | # https://cmake.org/cmake/help/latest/variable/CMAKE_SYSTEM_PROCESSOR.html: | 
 | #   The name of the CPU CMake is building for. | 
 | # | 
 | # https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/CrossCompiling: | 
 | #   CMAKE_SYSTEM_PROCESSOR : optional, processor (or hardware) of the | 
 | #   target system. This variable is not used very much except for one | 
 | #   purpose, it is used to load a | 
 | #   CMAKE_SYSTEM_NAME-compiler-CMAKE_SYSTEM_PROCESSOR.cmake file, | 
 | #   which can be used to modify settings like compiler flags etc. for | 
 | #   the target | 
 | set(CMAKE_SYSTEM_PROCESSOR ${ARCH}) | 
 |  | 
 | # https://cmake.org/cmake/help/latest/variable/CMAKE_SYSTEM_VERSION.html: | 
 | #   When the CMAKE_SYSTEM_NAME variable is set explicitly to enable cross | 
 | #   compiling then the value of CMAKE_SYSTEM_VERSION must also be set | 
 | #   explicitly to specify the target system version. | 
 | set(CMAKE_SYSTEM_VERSION ${PROJECT_VERSION}) | 
 |  | 
 | # We are not building dynamically loadable libraries | 
 | set(BUILD_SHARED_LIBS OFF) | 
 |  | 
 | if(NOT (COMPILER STREQUAL "host-gcc")) | 
 |   include(${TOOLCHAIN_ROOT}/cmake/toolchain/${ZEPHYR_TOOLCHAIN_VARIANT}/target.cmake) | 
 | endif() | 
 |  | 
 | # The 'generic' compiler and the 'target' compiler might be different, | 
 | # so we unset the 'generic' one and thereby force the 'target' to | 
 | # re-set it. | 
 | unset(CMAKE_C_COMPILER) | 
 | unset(CMAKE_C_COMPILER CACHE) | 
 |  | 
 | # A toolchain consist of a compiler and a linker. | 
 | # In Zephyr, toolchains require a port under cmake/toolchain/. | 
 | # Each toolchain port must set COMPILER and LINKER. | 
 | # E.g. toolchain/llvm may pick {clang, ld} or {clang, lld}. | 
 | include(${TOOLCHAIN_ROOT}/cmake/compiler/${COMPILER}/target.cmake OPTIONAL) | 
 | include(${TOOLCHAIN_ROOT}/cmake/linker/${LINKER}/target.cmake OPTIONAL) | 
 | include(${TOOLCHAIN_ROOT}/cmake/bintools/${BINTOOLS}/target.cmake OPTIONAL) | 
 |  | 
 | # Uniquely identify the toolchain wrt. it's capabilities. | 
 | # | 
 | # What we are looking for, is a signature definition that is defined | 
 | # like this: | 
 | #  * Toolchains with the same signature will always support the same set | 
 | #    of flags. | 
 | # It is not clear how this signature should be constructed. The | 
 | # strategy chosen is to md5sum the CC binary. | 
 | file(MD5 ${CMAKE_C_COMPILER} CMAKE_C_COMPILER_MD5_SUM) | 
 | set(TOOLCHAIN_SIGNATURE ${CMAKE_C_COMPILER_MD5_SUM}) |