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