diff options
author | Philippe Canal <pcanal@fnal.gov> | 2021-06-17 22:59:45 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2021-06-18 13:41:08 (GMT) |
commit | c8eb35773806174480070c17785e6c8dd5dc1e4c (patch) | |
tree | cbf073981721470c19d0546ee1d326f9a9da62ac /Modules/CMakeCompilerIdDetection.cmake | |
parent | d64d2d12c39f54f953fa946cf01fedf33ee2db70 (diff) | |
download | CMake-c8eb35773806174480070c17785e6c8dd5dc1e4c.zip CMake-c8eb35773806174480070c17785e6c8dd5dc1e4c.tar.gz CMake-c8eb35773806174480070c17785e6c8dd5dc1e4c.tar.bz2 |
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
Diffstat (limited to 'Modules/CMakeCompilerIdDetection.cmake')
-rw-r--r-- | Modules/CMakeCompilerIdDetection.cmake | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/Modules/CMakeCompilerIdDetection.cmake b/Modules/CMakeCompilerIdDetection.cmake index 2197790..dd70d82 100644 --- a/Modules/CMakeCompilerIdDetection.cmake +++ b/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() |