Commit bd16a985 authored by Brad King's avatar Brad King
Browse files

CompilerId/Features: Tolerate variables named for languages

If a `CMakeLists.txt` or `CMAKE_TOOLCHAIN_FILE` sets a variable named
`C`, `CXX`, or `CUDA`, 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.

Fixes: #22125
parent 49c6d0f2
Pipeline #226911 waiting for manual action with stages
in 19 minutes
......@@ -18,7 +18,7 @@ function(compiler_id_detection outvar lang)
file(GLOB lang_files
"${CMAKE_ROOT}/Modules/Compiler/*-DetermineCompiler.cmake")
set(nonlang CXX)
if (lang STREQUAL CXX)
if ("x${lang}" STREQUAL "xCXX")
set(nonlang C)
endif()
......
......@@ -4,7 +4,7 @@
function(cmake_determine_compile_features lang)
if(lang STREQUAL C AND COMMAND cmake_record_c_compile_features)
if("x${lang}" STREQUAL "xC" AND COMMAND cmake_record_c_compile_features)
message(CHECK_START "Detecting ${lang} compile features")
set(CMAKE_C90_COMPILE_FEATURES)
......@@ -54,7 +54,7 @@ function(cmake_determine_compile_features lang)
message(CHECK_PASS "done")
elseif(lang STREQUAL CXX AND COMMAND cmake_record_cxx_compile_features)
elseif("x${lang}" STREQUAL "xCXX" AND COMMAND cmake_record_cxx_compile_features)
message(CHECK_START "Detecting ${lang} compile features")
set(CMAKE_CXX98_COMPILE_FEATURES)
......@@ -110,7 +110,7 @@ function(cmake_determine_compile_features lang)
message(CHECK_PASS "done")
elseif(lang STREQUAL CUDA AND COMMAND cmake_record_cuda_compile_features)
elseif("x${lang}" STREQUAL "xCUDA" AND COMMAND cmake_record_cuda_compile_features)
message(CHECK_START "Detecting ${lang} compile features")
set(CMAKE_CUDA03_COMPILE_FEATURES)
......
foreach(test_language C CXX)
enable_language(${test_language})
if(DEFINED CMAKE_${test_language}_STANDARD_DEFAULT
AND NOT CMAKE_${test_language}_COMPILE_FEATURES)
message(FATAL_ERROR "Compile features not found for ${test_language}")
endif()
endforeach()
......@@ -9,6 +9,7 @@ run_cmake_toolchain(CallEnableLanguage)
run_cmake_toolchain(CallProject)
run_cmake_toolchain(CheckLanguage)
run_cmake_toolchain(FlagsInit)
run_cmake_toolchain(LangVars)
run_cmake_toolchain(LinkFlagsInit)
function(run_IncludeDirectories)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment