summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorFelipe Torrezan <felipe.torrezan@iar.com>2023-05-16 18:08:01 (GMT)
committerFelipe Torrezan <felipe.torrezan@iar.com>2023-05-16 18:08:01 (GMT)
commit7cd982faf4b7ba9dba9b8ca33fd0f0b83207cd3b (patch)
tree877ce9e258d81b997e11a5b1718042f442cc9514 /Modules
parentee0a15775530d6b68a65efd04635867c7008b890 (diff)
downloadCMake-7cd982faf4b7ba9dba9b8ca33fd0f0b83207cd3b.zip
CMake-7cd982faf4b7ba9dba9b8ca33fd0f0b83207cd3b.tar.gz
CMake-7cd982faf4b7ba9dba9b8ca33fd0f0b83207cd3b.tar.bz2
IAR: Added support for IAR C/C++ Compiler for Microchip AVR 8.10+
- Added C17 support - Added C++17 support - Changed: IAR UBROF Linker (XLINK) suffixed with target architecture (xlinkavr)
Diffstat (limited to 'Modules')
-rw-r--r--Modules/CMakeFindBinUtils.cmake15
-rw-r--r--Modules/Compiler/IAR-C.cmake2
-rw-r--r--Modules/Compiler/IAR-CXX.cmake2
3 files changed, 12 insertions, 7 deletions
diff --git a/Modules/CMakeFindBinUtils.cmake b/Modules/CMakeFindBinUtils.cmake
index 10e8ff3..604d25c 100644
--- a/Modules/CMakeFindBinUtils.cmake
+++ b/Modules/CMakeFindBinUtils.cmake
@@ -121,9 +121,9 @@ elseif("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" MATCHES "^xIAR$")
set(_CMAKE_IAR_ITOOLS "ARM" "RX" "RH850" "RL78" "RISCV" "RISC-V" "STM8")
set(_CMAKE_IAR_XTOOLS "AVR" "MSP430" "V850" "8051")
- if("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" IN_LIST _CMAKE_IAR_ITOOLS)
- string(TOLOWER "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" _CMAKE_IAR_LOWER_ARCHITECTURE_ID)
+ string(TOLOWER "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" _CMAKE_IAR_LOWER_ARCHITECTURE_ID)
+ if("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" IN_LIST _CMAKE_IAR_ITOOLS)
__append_IAR_tool(AR "iarchive")
__append_IAR_tool(LINKER "ilink${_CMAKE_IAR_LOWER_ARCHITECTURE_ID}")
@@ -132,16 +132,21 @@ elseif("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" MATCHES "^xIAR$")
__append_IAR_tool(IAR_OBJMANIP "iobjmanip")
__append_IAR_tool(IAR_SYMEXPORT "isymexport")
- unset(_CMAKE_IAR_LOWER_ARCHITECTURE_ID)
-
elseif("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" IN_LIST _CMAKE_IAR_XTOOLS)
__append_IAR_tool(AR "xar")
- __append_IAR_tool(LINKER "xlink")
+ if("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}" STREQUAL "AVR" AND
+ (CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_VERSION VERSION_GREATER 7))
+ # IAR UBROF Linker V8.10+ for Microchip AVR is `xlinkavr`
+ __append_IAR_tool(LINKER "xlink${_CMAKE_IAR_LOWER_ARCHITECTURE_ID}")
+ else()
+ __append_IAR_tool(LINKER "xlink")
+ endif()
else()
message(FATAL_ERROR "Failed to find linker and librarian for ${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID} on ${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ARCHITECTURE_ID}.")
endif()
+ unset(_CMAKE_IAR_LOWER_ARCHITECTURE_ID)
unset(_CMAKE_IAR_ITOOLS)
unset(_CMAKE_IAR_XTOOLS)
diff --git a/Modules/Compiler/IAR-C.cmake b/Modules/Compiler/IAR-C.cmake
index 0ef1a2a..c4907c5 100644
--- a/Modules/Compiler/IAR-C.cmake
+++ b/Modules/Compiler/IAR-C.cmake
@@ -59,7 +59,7 @@ elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "RISCV")
elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "AVR")
__compiler_iar_xlink(C)
- __compiler_check_default_language_standard(C 7.10 99)
+ __compiler_check_default_language_standard(C 7.10 99 8.10 17)
set(CMAKE_C_OUTPUT_EXTENSION ".r90")
elseif("${CMAKE_C_COMPILER_ARCHITECTURE_ID}" STREQUAL "MSP430")
diff --git a/Modules/Compiler/IAR-CXX.cmake b/Modules/Compiler/IAR-CXX.cmake
index cea5e7e..b598e36 100644
--- a/Modules/Compiler/IAR-CXX.cmake
+++ b/Modules/Compiler/IAR-CXX.cmake
@@ -68,7 +68,7 @@ elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "RISCV")
elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "AVR")
__compiler_iar_xlink(CXX)
- __compiler_check_default_language_standard(CXX 7.10 98)
+ __compiler_check_default_language_standard(CXX 7.10 98 8.10 17)
set(CMAKE_CXX_OUTPUT_EXTENSION ".r90")
elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "MSP430")