| # 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 "") |
| |
| list(APPEND NOSTDINC ${TOOLCHAIN_HOME}/arc/inc) |
| |
| if(CONFIG_ARCMWDT_LIBC AND CONFIG_LIB_CPLUSPLUS) |
| list(APPEND NOSTDINC ${TOOLCHAIN_HOME}/arc/lib/src/c++/inc) |
| endif() |
| |
| # For CMake to be able to test if a compiler flag is supported by the |
| # toolchain we need to give CMake the necessary flags to compile and |
| # link a dummy C file. |
| # |
| # CMake checks compiler flags with check_c_compiler_flag() (Which we |
| # wrap with target_cc_option() in extensions.cmake) |
| foreach(isystem_include_dir ${NOSTDINC}) |
| list(APPEND isystem_include_flags -isystem "\"${isystem_include_dir}\"") |
| endforeach() |
| |
| # common compile options, no copyright msg, little-endian, no small data, |
| # no MWDT stack checking |
| list(APPEND TOOLCHAIN_C_FLAGS -Hnocopyr -HL -Hnosdata -Hoff=Stackcheck_alloca) |
| |
| # 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() |