cmake/Modules/Compiler/IAR-CXX.cmake

84 lines
3.1 KiB
CMake
Raw Normal View History

2013-11-03 12:27:13 +02:00
# This file is processed when the IAR compiler is used for a C++ file
include(Compiler/IAR)
2018-01-26 17:06:56 +01:00
include(Compiler/CMakeCommonCompilerMacros)
2019-11-11 23:01:05 +01:00
# Common
if(NOT CMAKE_CXX_COMPILER_VERSION)
message(FATAL_ERROR "CMAKE_CXX_COMPILER_VERSION not detected. This should be automatic.")
endif()
if(NOT CMAKE_IAR_CXX_FLAG)
# The --c++ flag was introduced in platform version 9 for all architectures except ARM where it was introduced already in version 7
if(CMAKE_CXX_COMPILER_VERSION_INTERNAL VERSION_GREATER 8 OR
(CMAKE_CXX_COMPILER_VERSION_INTERNAL VERSION_GREATER 6 AND "${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM") )
set(CMAKE_IAR_CXX_FLAG --c++)
else()
set(CMAKE_IAR_CXX_FLAG --eec++)
2018-01-26 17:06:56 +01:00
endif()
2019-11-11 23:01:05 +01:00
endif()
2013-11-03 12:27:13 +02:00
2019-11-11 23:01:05 +01:00
set(CMAKE_CXX_EXTENSION_COMPILE_OPTION -e)
2013-11-03 12:27:13 +02:00
2019-11-11 23:01:05 +01:00
if(CMAKE_CXX_COMPILER_VERSION_INTERNAL VERSION_GREATER 7)
2018-01-26 17:06:56 +01:00
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION -e)
set(CMAKE_CXX03_STANDARD_COMPILE_OPTION "")
set(CMAKE_CXX03_EXTENSION_COMPILE_OPTION -e)
2019-11-11 23:01:05 +01:00
endif()
if(CMAKE_CXX_COMPILER_VERSION_INTERNAL VERSION_GREATER 8)
2018-01-26 17:06:56 +01:00
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "")
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION -e)
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "")
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION -e)
2019-11-11 23:01:05 +01:00
endif()
2013-11-03 12:27:13 +02:00
2019-11-11 23:01:05 +01:00
# Architecture specific
if("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM")
if(CMAKE_CXX_COMPILER_VERSION_INTERNAL VERSION_LESS 7)
# IAR ARM 4.X uses xlink.exe, detection is not yet implemented
message(FATAL_ERROR "CMAKE_CXX_COMPILER_VERSION = ${CMAKE_C_COMPILER_VERSION} not supported by CMake.")
endif()
__compiler_iar_ilink(CXX)
2018-01-26 17:06:56 +01:00
__compiler_check_default_language_standard(CXX 6.10 98 8.10 14)
2013-11-03 12:27:13 +02:00
2019-11-11 23:01:05 +01:00
elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "RX")
__compiler_iar_ilink(CXX)
__compiler_check_default_language_standard(CXX 2.10 98 4.10 14)
2013-11-03 12:27:13 +02:00
2019-11-11 23:01:05 +01:00
elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "RH850")
__compiler_iar_ilink(CXX)
__compiler_check_default_language_standard(CXX 1.10 98 2.10 14)
elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "RL78")
__compiler_iar_ilink(CXX)
__compiler_check_default_language_standard(CXX 1.10 98 4.10 14)
elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "RISCV")
__compiler_iar_ilink(CXX)
__compiler_check_default_language_standard(CXX 1.10 98 1.10 14)
elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "AVR")
__compiler_iar_xlink(CXX)
__compiler_check_default_language_standard(CXX 7.10 98)
2013-11-03 12:27:13 +02:00
2019-11-11 23:01:05 +01:00
elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "MSP430")
__compiler_iar_xlink(CXX)
__compiler_check_default_language_standard(CXX 5.10 98)
set(CMAKE_CXX_OUTPUT_EXTENSION ".r43")
2018-10-28 12:09:07 +01:00
2020-02-01 23:06:01 +01:00
elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "V850")
__compiler_iar_xlink(CXX)
__compiler_check_default_language_standard(CXX 1.10 98)
set(CMAKE_C_OUTPUT_EXTENSION ".r85")
elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "8051")
__compiler_iar_xlink(CXX)
__compiler_check_default_language_standard(CXX 6.10 98)
set(CMAKE_C_OUTPUT_EXTENSION ".r51")
2018-10-28 12:09:07 +01:00
else()
2019-11-11 23:01:05 +01:00
message(FATAL_ERROR "CMAKE_CXX_COMPILER_ARCHITECTURE_ID not detected. This should be automatic." )
2013-11-03 12:27:13 +02:00
endif()