| include(RunCMake) |
| |
| if(RunCMake_GENERATOR MATCHES "Makefile|Ninja") |
| file(GLOB _iar_toolchains |
| "${CMake_TEST_IAR_TOOLCHAINS}/bx*-*/*/bin/icc*" ) |
| if(_iar_toolchains STREQUAL "") |
| message(FATAL_ERROR "Could not find any IAR toolchains at: ${CMake_TEST_IAR_TOOLCHAINS}.") |
| endif() |
| endif() |
| |
| foreach(_iar_toolchain IN LISTS _iar_toolchains) |
| message(STATUS "Found IAR toolchain: ${_iar_toolchain}") |
| cmake_path(GET _iar_toolchain PARENT_PATH BIN_DIR) |
| cmake_path(GET BIN_DIR PARENT_PATH TOOLKIT_DIR) |
| cmake_path(GET TOOLKIT_DIR FILENAME ARCH) |
| |
| # Sets the minimal requirements for linking each target architecture |
| if(ARCH STREQUAL rl78) |
| set(LINK_OPTS |
| "--config_def _STACK_SIZE=256 \ |
| --config_def _NEAR_HEAP_SIZE=0x400 \ |
| --config_def _FAR_HEAP_SIZE=4096 \ |
| --config_def _HUGE_HEAP_SIZE=0 \ |
| --config_def _NEAR_CONST_LOCATION_START=0x2000 \ |
| --config_def _NEAR_CONST_LOCATION_SIZE=0x6F00 \ |
| --define_symbol _NEAR_CONST_LOCATION=0 \ |
| --config ${TOOLKIT_DIR}/config/lnkrl78_s3.icf" ) |
| else() |
| set(LINK_OPTS "") |
| endif() |
| |
| # Set IAR Assembler (ILINK || XLINK) |
| find_program(IAR_ASSEMBLER |
| NAMES iasm${ARCH} a${ARCH} |
| PATHS ${BIN_DIR} |
| REQUIRED ) |
| |
| set(RunCMake_TEST_OPTIONS |
| -DCMAKE_SYSTEM_NAME=Generic |
| -DCMAKE_C_COMPILER=${_iar_toolchain} |
| -DCMAKE_EXE_LINKER_FLAGS=${LINK_OPTS} |
| ) |
| run_cmake(iar-c) |
| |
| set(RunCMake_TEST_OPTIONS |
| -DCMAKE_SYSTEM_NAME=Generic |
| -DCMAKE_CXX_COMPILER=${_iar_toolchain} |
| -DCMAKE_EXE_LINKER_FLAGS=${LINK_OPTS} |
| ) |
| run_cmake(iar-cxx) |
| |
| set(RunCMake_TEST_OPTIONS |
| -DCMAKE_SYSTEM_NAME=Generic |
| -DCMAKE_ASM_COMPILER=${IAR_ASSEMBLER} |
| ) |
| run_cmake(iar-asm) |
| |
| set(RunCMake_TEST_OPTIONS |
| -DCMAKE_SYSTEM_NAME=Generic |
| -DCMAKE_C_COMPILER=${_iar_toolchain} |
| -DCMAKE_EXE_LINKER_FLAGS=${LINK_OPTS} |
| ) |
| run_cmake(iar-lib) |
| endforeach() |