# This file is processed when the IAR compiler is used for a C or C++ file # Documentation can be downloaded here: http://www.iar.com/website1/1.0.1.0/675/1/ IF(_IAR_CMAKE_LOADED) RETURN() ENDIF(_IAR_CMAKE_LOADED) SET(_IAR_CMAKE_LOADED TRUE) MESSAGE(STATUS "Processing Compiler/IAR.cmake...") message(STATUS "CMAKE_C_COMPILER: -${CMAKE_C_COMPILER}-") message(STATUS "CMAKE_CXX_COMPILER: -${CMAKE_CXX_COMPILER}-") message(STATUS "CMAKE_C_COMPILER_ABI: -${CMAKE_C_COMPILER_ABI}-") message(STATUS "_CMAKE_TOOLCHAIN_LOCATION: -${_CMAKE_TOOLCHAIN_LOCATION}-") # For arm, IAR uses the "ilink" linker: IF("${CMAKE_C_COMPILER}" MATCHES "arm" OR "${CMAKE_CXX_COMPILER}" MATCHES "arm") SET(CMAKE_EXECUTABLE_SUFFIX ".elf") FIND_PROGRAM(CMAKE_IAR_LINKER ilinkarm HINTS "${_CMAKE_TOOLCHAIN_LOCATION}" ) FIND_PROGRAM(CMAKE_IAR_AR iarchive HINTS "${_CMAKE_TOOLCHAIN_LOCATION}" ) SET(IAR_TARGET_ARCHITECTURE "ARM" CACHE STRING "IAR compiler target architecture") ENDIF("${CMAKE_C_COMPILER}" MATCHES "arm" OR "${CMAKE_CXX_COMPILER}" MATCHES "arm") # For AVR and AVR32, IAR uses the "xlink" linker: IF("${CMAKE_C_COMPILER}" MATCHES "avr" OR "${CMAKE_CXX_COMPILER}" MATCHES "avr") SET(CMAKE_EXECUTABLE_SUFFIX ".bin") FIND_PROGRAM(CMAKE_IAR_LINKER xlink HINTS "${_CMAKE_TOOLCHAIN_LOCATION}" ) FIND_PROGRAM(CMAKE_IAR_AR xar HINTS "${_CMAKE_TOOLCHAIN_LOCATION}" ) SET(IAR_TARGET_ARCHITECTURE "AVR" CACHE STRING "IAR compiler target architecture") IF(NOT IAR_OUTPUT_FORMAT) SET(IAR_OUTPUT_FORMAT "motorola") ENDIF(NOT IAR_OUTPUT_FORMAT) ENDIF("${CMAKE_C_COMPILER}" MATCHES "avr" OR "${CMAKE_CXX_COMPILER}" MATCHES "avr") SET(CMAKE_LINKER ${CMAKE_IAR_LINKER} CACHE FILEPATH "The IAR linker" FORCE) SET(CMAKE_AR ${CMAKE_IAR_AR} CACHE FILEPATH "The IAR archiver" FORCE) MESSAGE(STATUS "Found IAR linker: ${CMAKE_LINKER}") MESSAGE(STATUS "Found IAR archiver: ${CMAKE_AR}") MESSAGE(STATUS "IAR_TARGET_ARCHITECTURE: ${IAR_TARGET_ARCHITECTURE}") MESSAGE(STATUS "IAR_OUTPUT_FORMAT: ${IAR_OUTPUT_FORMAT}")