cmake/Modules/Compiler/IAR-FindBinUtils.cmake

64 lines
3.0 KiB
CMake
Raw Normal View History

2018-01-26 17:06:56 +01:00
if(NOT DEFINED _CMAKE_PROCESSING_LANGUAGE OR _CMAKE_PROCESSING_LANGUAGE STREQUAL "")
message(FATAL_ERROR "Internal error: _CMAKE_PROCESSING_LANGUAGE is not set")
endif()
2019-11-11 23:01:05 +01:00
# Try to find tools in the same directory as the compiler itself
2018-01-26 17:06:56 +01:00
get_filename_component(__iar_hint_1 "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" REALPATH)
get_filename_component(__iar_hint_1 "${__iar_hint_1}" DIRECTORY)
get_filename_component(__iar_hint_2 "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" DIRECTORY)
set(__iar_hints "${__iar_hint_1}" "${__iar_hint_2}")
2019-11-11 23:01:05 +01:00
if("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM" OR
"${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RX" OR
"${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RH850" OR
"${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RL78" OR
"${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "RISCV")
string(TOLOWER "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" _archid_lower)
# Find linker
find_program(CMAKE_IAR_LINKER ilink${_archid_lower} HINTS ${__iar_hints}
DOC "The IAR ILINK linker")
find_program(CMAKE_IAR_ARCHIVE iarchive HINTS ${__iar_hints}
2018-01-26 17:06:56 +01:00
DOC "The IAR archiver")
2019-11-11 23:01:05 +01:00
# Find utility tools
find_program(CMAKE_IAR_ELFTOOL ielftool HINTS ${__iar_hints}
2018-01-26 17:06:56 +01:00
DOC "The IAR ELF Tool")
2019-11-11 23:01:05 +01:00
find_program(CMAKE_IAR_ELFDUMP ielfdump${_archid_lower} HINTS ${__iar_hints}
2018-01-26 17:06:56 +01:00
DOC "The IAR ELF Dumper")
2019-11-11 23:01:05 +01:00
find_program(CMAKE_IAR_OBJMANIP iobjmanip HINTS ${__iar_hints}
2018-01-26 17:06:56 +01:00
DOC "The IAR ELF Object Tool")
2019-11-11 23:01:05 +01:00
find_program(CMAKE_IAR_SYMEXPORT isymexport HINTS ${__iar_hints}
2018-01-26 17:06:56 +01:00
DOC "The IAR Absolute Symbol Exporter")
2019-11-11 23:01:05 +01:00
mark_as_advanced(CMAKE_IAR_LINKER CMAKE_IAR_ARCHIVE CMAKE_IAR_ELFTOOL CMAKE_IAR_ELFDUMP CMAKE_IAR_OBJMANIP CMAKE_IAR_SYMEXPORT)
2018-01-26 17:06:56 +01:00
set(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_CUSTOM_CODE
2019-11-11 23:01:05 +01:00
"set(CMAKE_IAR_LINKER \"${CMAKE_IAR_LINKER}\")
2018-01-26 17:06:56 +01:00
set(CMAKE_IAR_ARCHIVE \"${CMAKE_IAR_ARCHIVE}\")
set(CMAKE_IAR_ELFTOOL \"${CMAKE_IAR_ELFTOOL}\")
set(CMAKE_IAR_ELFDUMP \"${CMAKE_IAR_ELFDUMP}\")
set(CMAKE_IAR_OBJMANIP \"${CMAKE_IAR_OBJMANIP}\")
2019-11-11 23:01:05 +01:00
set(CMAKE_IAR_LINKER \"${CMAKE_IAR_LINKER}\")
2018-01-26 17:06:56 +01:00
")
2019-11-11 23:01:05 +01:00
elseif("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "AVR" OR
2020-02-01 23:06:01 +01:00
"${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "MSP430" OR
"${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "V850" OR
"${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "8051")
2018-01-26 17:06:56 +01:00
2019-11-11 23:01:05 +01:00
# Find the "xlink" linker and "xar" archiver:
find_program(CMAKE_IAR_LINKER xlink HINTS ${__iar_hints}
DOC "The IAR XLINK linker")
find_program(CMAKE_IAR_AR xar HINTS ${__iar_hints}
2018-01-26 17:06:56 +01:00
DOC "The IAR archiver")
mark_as_advanced(CMAKE_IAR_LINKER CMAKE_IAR_AR)
set(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_CUSTOM_CODE
"set(CMAKE_IAR_LINKER \"${CMAKE_IAR_LINKER}\")
set(CMAKE_IAR_AR \"${CMAKE_IAR_AR}\")
")
endif()