소스 검색

IAR: Fix compiler id, version, and arch detection on 6.50.6

The IAR 6.50.6 compiler places extra/truncated copies of the
compiler id `INFO:` strings into binaries with a prefix like
`?<Constant "`.  Teach CMakeDetermineCompilerId to ignore them.

Fixes: #18333
Daniel Schürmann 7 년 전
부모
커밋
8fdf08c097
1개의 변경된 파일3개의 추가작업 그리고 0개의 파일을 삭제
  1. 3 0
      Modules/CMakeDetermineCompilerId.cmake

+ 3 - 0
Modules/CMakeDetermineCompilerId.cmake

@@ -525,6 +525,9 @@ function(CMAKE_DETERMINE_COMPILER_ID_CHECK lang file)
       ${CMAKE_${lang}_COMPILER_ID_STRINGS_PARAMETERS}
       REGEX "INFO:[A-Za-z0-9_]+\\[[^]]*\\]")
     set(COMPILER_ID_TWICE)
+    # With the IAR Compiler, some strings are found twice, first time as incomplete
+    # list like "?<Constant "INFO:compiler[IAR]">".  Remove the incomplete copies.
+    list(FILTER CMAKE_${lang}_COMPILER_ID_STRINGS EXCLUDE REGEX "\\?<Constant \\\"")
     # In C# binaries, some strings are found more than once.
     list(REMOVE_DUPLICATES CMAKE_${lang}_COMPILER_ID_STRINGS)
     foreach(info ${CMAKE_${lang}_COMPILER_ID_STRINGS})