From cc4da8d13a93e2ad1de22144ac6c7dd3c97e1f03 Mon Sep 17 00:00:00 2001 From: Raul Tambre Date: Sat, 29 Jan 2022 22:48:25 +0200 Subject: IAR/CXX: Fix compatibility with CMP0057 OLD Commit a9073db7 (IAR: update language specification detection, 2021-09-23) added usage of the if() IN_LIST operation and forgot to account for it not being available in CMP0057 OLD mode. Push and temporarily enable the policy. Also avoid the unnecessary temporary variable for the list. Fixes #23147. --- Modules/Compiler/IAR-CXX.cmake | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Modules/Compiler/IAR-CXX.cmake b/Modules/Compiler/IAR-CXX.cmake index a3f1dbc..7df74ad 100644 --- a/Modules/Compiler/IAR-CXX.cmake +++ b/Modules/Compiler/IAR-CXX.cmake @@ -16,14 +16,17 @@ endif() # Whenever needed, override this default behavior using CMAKE_IAR_CXX_FLAG in your toolchain file. if(NOT CMAKE_IAR_CXX_FLAG) - set(_CMAKE_IAR_MODERNCXX_LIST 14 17) - if(${CMAKE_CXX_STANDARD_COMPUTED_DEFAULT} IN_LIST _CMAKE_IAR_MODERNCXX_LIST OR + cmake_policy(PUSH) + cmake_policy(SET CMP0057 NEW) # if IN_LIST + + if(${CMAKE_CXX_STANDARD_COMPUTED_DEFAULT} IN_LIST "14;17" OR ("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM" AND ${CMAKE_CXX_STANDARD_COMPUTED_DEFAULT} EQUAL 98)) string(PREPEND CMAKE_CXX_FLAGS "--c++ ") else() string(PREPEND CMAKE_CXX_FLAGS "--eec++ ") endif() - unset(_CMAKE_IAR_MODERNCXX_LIST) + + cmake_policy(POP) endif() set(CMAKE_CXX_STANDARD_COMPILE_OPTION "") -- cgit v0.12