# CROSS_COMPILE is a KBuild mechanism for specifying an external # toolchain with a single environment variable. # # It is a legacy mechanism that will in Zephyr translate to # specififying ZEPHYR_TOOLCHAIN_VARIANT to 'cross-compile' with the location # 'CROSS_COMPILE'. # # New users should set the env var 'ZEPHYR_TOOLCHAIN_VARIANT' to # 'cross-compile' and the 'CROSS_COMPILE' env var to the toolchain # prefix. This interface is consisent with the other non-"Zephyr SDK" # toolchains. # # It can be set from three sources, the KConfig option # CONFIG_CROSS_COMPILE, the CMake var CROSS_COMPILE, or the env var # CROSS_COMPILE. # # The env var has the lowest precedence. # # It is not clear what should have the highest precedence of a Kconfig # option and a CMake var so an error is triggered if they are both # defined, but are defined with different values. if(CONFIG_CROSS_COMPILE AND CROSS_COMPILE) if(NOT (${CONFIG_CROSS_COMPILE} STREQUAL ${CROSS_COMPILE})) message(FATAL_ERROR "The Kconfig and CMake var's must match when defined simultaneously: CONFIG_CROSS_COMPILE: ${CONFIG_CROSS_COMPILE} CROSS_COMPILE: ${CROSS_COMPILE}") endif() endif() if(CONFIG_CROSS_COMPILE) set(CROSS_COMPILE ${CONFIG_CROSS_COMPILE}) elseif(DEFINED ENV{CROSS_COMPILE}) set(CROSS_COMPILE $ENV{CROSS_COMPILE}) endif() set( CROSS_COMPILE ${CROSS_COMPILE} CACHE PATH "") assert(CROSS_COMPILE "CROSS_COMPILE is not set") set(COMPILER gcc)