Pārlūkot izejas kodu

CompilerId: Tolerate variables named for languages

If a project or user sets a variable or cache entry named `C`, `CXX`,
`CUDA`, `Fortran`, `CSharp`, or `ISPC`, we were previously comparing
each enabled language name to the value of that variable, rather than
the name itself.  Double-quote the string to take advantage of policy
`CMP0054`, but also add "x" prefixes to support projects that do not set
the policy.

This extends a similar fix in commit bd16a985fc (CompilerId/Features:
Tolerate variables named for languages, 2021-04-28) in more places.  In
particular, ensure that we consider the proper list of compiler ids.

Issue: #22125
Philippe Canal 4 gadi atpakaļ
vecāks
revīzija
c8eb357738
1 mainītis faili ar 6 papildinājumiem un 6 dzēšanām
  1. 6 6
      Modules/CMakeCompilerIdDetection.cmake

+ 6 - 6
Modules/CMakeCompilerIdDetection.cmake

@@ -13,8 +13,8 @@ endfunction()
 
 function(compiler_id_detection outvar lang)
 
-  if (NOT lang STREQUAL Fortran AND NOT lang STREQUAL CSharp
-      AND NOT lang STREQUAL ISPC)
+  if (NOT "x${lang}" STREQUAL "xFortran" AND NOT "x${lang}" STREQUAL "xCSharp"
+      AND NOT "x${lang}" STREQUAL "xISPC")
     file(GLOB lang_files
       "${CMAKE_ROOT}/Modules/Compiler/*-DetermineCompiler.cmake")
     set(nonlang CXX)
@@ -42,7 +42,7 @@ function(compiler_id_detection outvar lang)
 
     # Order is relevant here. For example, compilers which pretend to be
     # GCC must appear before the actual GCC.
-    if (lang STREQUAL CXX)
+    if ("x${lang}" STREQUAL "xCXX")
       list(APPEND ordered_compilers
         Comeau
       )
@@ -70,7 +70,7 @@ function(compiler_id_detection outvar lang)
       Fujitsu
       GHS
     )
-    if (lang STREQUAL C)
+    if ("x${lang}" STREQUAL "xC")
       list(APPEND ordered_compilers
         TinyCC
         Bruce
@@ -92,13 +92,13 @@ function(compiler_id_detection outvar lang)
       ADSP
       IAR
     )
-    if (lang STREQUAL C)
+    if ("x${lang}" STREQUAL "xC")
       list(APPEND ordered_compilers
         SDCC
       )
     endif()
 
-    if(lang STREQUAL CUDA)
+    if("x${lang}" STREQUAL "xCUDA")
       set(ordered_compilers NVIDIA Clang)
     endif()