1# Copyright (c) 2025 IAR Systems AB 2# 3# SPDX-License-Identifier: Apache-2.0 4 5zephyr_get(IAR_TOOLCHAIN_PATH) 6assert(IAR_TOOLCHAIN_PATH "IAR_TOOLCHAIN_PATH is not set") 7 8set(IAR_TOOLCHAIN_VARIANT none) 9if(NOT EXISTS ${IAR_TOOLCHAIN_PATH}) 10 message(FATAL_ERROR "Nothing found at IAR_TOOLCHAIN_PATH: '${IAR_TOOLCHAIN_PATH}'") 11endif() 12 13if(EXISTS ${IAR_TOOLCHAIN_PATH}/bin/iccarm) 14 message(STATUS "Found toolchain: IAR C/C++ Compiler for Arm (${IAR_TOOLCHAIN_PATH})") 15 set(IAR_COMPILER iccarm) 16 set(IAR_LINKER ilinkarm) 17elseif(EXISTS ${IAR_TOOLCHAIN_PATH}/bin/iccarm.exe) 18 message(STATUS "Found toolchain: IAR C/C++ Compiler for Arm (${IAR_TOOLCHAIN_PATH})") 19 set(IAR_COMPILER iccarm) 20 set(IAR_LINKER ilinkarm) 21endif() 22 23set(IAR_TOOLCHAIN_VARIANT ${IAR_COMPILER}) 24 25# iar relies on Zephyr SDK for the use of C preprocessor (devicetree) and objcopy 26find_package(Zephyr-sdk 0.16 REQUIRED) 27message(STATUS "Found Zephyr SDK at ${ZEPHYR_SDK_INSTALL_DIR}") 28 29set(TOOLCHAIN_HOME ${IAR_TOOLCHAIN_PATH}) 30 31# Handling to be improved in Zephyr SDK, to avoid overriding ZEPHYR_TOOLCHAIN_VARIANT by 32# find_package(Zephyr-sdk) if it's already set 33set(ZEPHYR_TOOLCHAIN_VARIANT iar) 34 35set(COMPILER iar) 36set(LINKER iar) 37set(BINTOOLS iar) 38 39if("${IAR_TOOLCHAIN_VARIANT}" STREQUAL "iccarm") 40 set(SYSROOT_TARGET arm) 41else() 42 set(SYSROOT_TARGET riscv) 43endif() 44set(CROSS_COMPILE ${TOOLCHAIN_HOME}/bin/) 45 46set(TOOLCHAIN_HAS_NEWLIB OFF CACHE BOOL "True if toolchain supports NewLib") 47