diff --git a/Modules/CheckLanguage.cmake b/Modules/CheckLanguage.cmake index fa64d051ec..e2165ad589 100644 --- a/Modules/CheckLanguage.cmake +++ b/Modules/CheckLanguage.cmake @@ -77,31 +77,21 @@ macro(check_language lang) message(CHECK_START "${_desc}") file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}) - set(extra_compiler_variables) + set(_input_variables "set(CMAKE_MODULE_PATH \"${CMAKE_MODULE_PATH}\")\n") + + set(_output_variables "set(CMAKE_${lang}_COMPILER \\\"\${CMAKE_${lang}_COMPILER}\\\")\n") if("${lang}" MATCHES "^(CUDA|HIP)$" AND NOT CMAKE_GENERATOR MATCHES "Visual Studio") - set(extra_compiler_variables "set(CMAKE_${lang}_HOST_COMPILER \\\"\${CMAKE_${lang}_HOST_COMPILER}\\\")") + string(APPEND _output_variables "set(CMAKE_${lang}_HOST_COMPILER \\\"\${CMAKE_${lang}_HOST_COMPILER}\\\")\n") endif() - if("${lang}" STREQUAL "HIP") - list(APPEND extra_compiler_variables "set(CMAKE_${lang}_PLATFORM \\\"\${CMAKE_${lang}_PLATFORM}\\\")") + string(APPEND _output_variables "set(CMAKE_${lang}_PLATFORM \\\"\${CMAKE_${lang}_PLATFORM}\\\")\n") endif() - list(TRANSFORM extra_compiler_variables PREPEND "\"") - list(TRANSFORM extra_compiler_variables APPEND "\\n\"") - list(JOIN extra_compiler_variables "\n " extra_compiler_variables) - - set(_cl_content - "cmake_minimum_required(VERSION ${CMAKE_VERSION}) -set(CMAKE_MODULE_PATH \"${CMAKE_MODULE_PATH}\") -project(Check${lang} ${lang}) -file(WRITE \"\${CMAKE_CURRENT_BINARY_DIR}/result.cmake\" - \"set(CMAKE_${lang}_COMPILER \\\"\${CMAKE_${lang}_COMPILER}\\\")\\n\" - ${extra_compiler_variables} - )" - ) - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}/CMakeLists.txt" - "${_cl_content}") + "cmake_minimum_required(VERSION ${CMAKE_VERSION}) +${_input_variables} +project(Check${lang} LANGUAGES ${lang}) +file(WRITE \"\${CMAKE_CURRENT_BINARY_DIR}/result.cmake\" \"${_output_variables}\")") if(CMAKE_GENERATOR_INSTANCE) set(_D_CMAKE_GENERATOR_INSTANCE "-DCMAKE_GENERATOR_INSTANCE:INTERNAL=${CMAKE_GENERATOR_INSTANCE}") else()