| # find the compilers for C, CPP, assembly |
| find_program(CMAKE_C_COMPILER ${CROSS_COMPILE}ccac PATHS ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) |
| find_program(CMAKE_CXX_COMPILER ${CROSS_COMPILE}ccac PATHS ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) |
| find_program(CMAKE_ASM_COMPILER ${CROSS_COMPILE}ccac PATHS ${TOOLCHAIN_HOME} NO_DEFAULT_PATH) |
| # The CMAKE_REQUIRED_FLAGS variable is used by check_c_compiler_flag() |
| # (and other commands which end up calling check_c_source_compiles()) |
| # to add additional compiler flags used during checking. These flags |
| # are unused during "real" builds of Zephyr source files linked into |
| # the final executable. |
| # |
| # Appending onto any existing values lets users specify |
| # toolchain-specific flags at generation time. |
| list(APPEND CMAKE_REQUIRED_FLAGS |
| -c |
| -HL |
| -Hnosdata |
| -Hnolib |
| -Hnocrt |
| -Hnoentry |
| -Hldopt=-Bbase=0x0 # Set an entry point to avoid a warning |
| -Werror |
| ) |
| string(REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") |
| |
| set(NOSTDINC ${TOOLCHAIN_HOME}/arc/inc) |
| |
| # For CMake to be able to test if a compiler flag is supported by the toolchain |
| # (check_c_compiler_flag function which we wrap with target_cc_option in extensions.cmake) |
| # we rely on default MWDT header locations and don't manually specify headers directories. |
| |
| # common compile options, no copyright msg, little-endian, no small data, |
| # no MWDT stack checking |
| list(APPEND TOOLCHAIN_C_FLAGS -Hnocopyr -HL -Hnosdata) |
| |
| if(CONFIG_ARC) |
| list(APPEND TOOLCHAIN_C_FLAGS -Hoff=Stackcheck_alloca) |
| endif() |
| |
| # The MWDT compiler can replace some code with call to builtin functions. |
| # We can't rely on these functions presence if we don't use MWDT libc. |
| # NOTE: the option name '-fno-builtin' is misleading a bit - we still can |
| # manually call __builtin_** functions even if we specify it. |
| if(NOT CONFIG_ARCMWDT_LIBC) |
| list(APPEND TOOLCHAIN_C_FLAGS -fno-builtin) |
| endif() |
| |
| # The MWDT compiler requires different macro definitions for ARC and RISC-V |
| # architectures. __MW_ASM_RV_MACRO__ allows to select appropriate compilation branch. |
| if(CONFIG_RISCV) |
| list(APPEND TOOLCHAIN_C_FLAGS -D__MW_ASM_RV_MACRO__) |
| endif() |