2018-01-09 00:06:42 +08:00
|
|
|
# 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
|
2018-02-12 04:36:21 +08:00
|
|
|
# specififying ZEPHYR_TOOLCHAIN_VARIANT to 'cross-compile' with the location
|
2018-01-09 00:06:42 +08:00
|
|
|
# 'CROSS_COMPILE'.
|
|
|
|
#
|
2018-02-12 04:36:21 +08:00
|
|
|
# New users should set the env var 'ZEPHYR_TOOLCHAIN_VARIANT' to
|
2018-01-09 00:06:42 +08:00
|
|
|
# '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)
|