mirror of
https://github.com/Kitware/CMake.git
synced 2026-08-03 22:30:29 +00:00
Merge topic 'check_language-fix'
89df8efba4CheckLanguage: Bias compiler selection using already-enabled languagesf290240b0bCheckLanguage: Simplify test project generation7ae8764710Tests: Extend CMakeOnly.CheckLanguage to enable languages whose checks succeeda049413bb6Tests: Extend CMakeOnly.CheckLanguage to cover ASM Acked-by: Kitware Robot <kwrobot@kitware.com> Tested-by: buildbot <buildbot@kitware.com> Merge-request: !10705
This commit is contained in:
@@ -4,7 +4,11 @@
|
||||
|
||||
macro(_cmake_find_compiler lang)
|
||||
# Use already-enabled languages for reference.
|
||||
get_property(_languages GLOBAL PROPERTY ENABLED_LANGUAGES)
|
||||
if(DEFINED _CMAKE_CHECK_ENABLED_LANGUAGES)
|
||||
set(_languages "${_CMAKE_CHECK_ENABLED_LANGUAGES}")
|
||||
else()
|
||||
get_property(_languages GLOBAL PROPERTY ENABLED_LANGUAGES)
|
||||
endif()
|
||||
list(REMOVE_ITEM _languages "${lang}")
|
||||
|
||||
if(CMAKE_${lang}_COMPILER_INIT)
|
||||
|
||||
@@ -77,31 +77,34 @@ 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")
|
||||
get_property(_languages GLOBAL PROPERTY ENABLED_LANGUAGES)
|
||||
list(REMOVE_ITEM _languages "NONE")
|
||||
if(NOT _languages STREQUAL "")
|
||||
string(APPEND _input_variables "set(_CMAKE_CHECK_ENABLED_LANGUAGES \"${_languages}\")\n")
|
||||
foreach(l IN LISTS _languages)
|
||||
string(APPEND _input_variables
|
||||
"set(CMAKE_${l}_COMPILER \"${CMAKE_${l}_COMPILER}\")\n"
|
||||
"set(CMAKE_${l}_COMPILER_ID \"${CMAKE_${l}_COMPILER_ID}\")\n"
|
||||
"set(CMAKE_${l}_COMPILER_LOADED ${CMAKE_${l}_COMPILER_LOADED})\n"
|
||||
"set(CMAKE_${l}_COMPILER_VERSION \"${CMAKE_${l}_COMPILER_VERSION}\")\n"
|
||||
)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
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()
|
||||
|
||||
@@ -13,7 +13,7 @@ endif()
|
||||
unset(expect_Fortran)
|
||||
set(expect_NoSuchLanguage 0)
|
||||
|
||||
set(LANGUAGES C CXX Fortran CUDA HIP NoSuchLanguage)
|
||||
set(LANGUAGES C CXX Fortran CUDA HIP ASM NoSuchLanguage)
|
||||
if(APPLE)
|
||||
list(APPEND LANGUAGES OBJC OBJCXX)
|
||||
endif()
|
||||
@@ -30,4 +30,7 @@ foreach(test_lang ${LANGUAGES})
|
||||
message(FATAL_ERROR "check_language(${test_lang}) should not succeed!")
|
||||
endif()
|
||||
endif()
|
||||
if(CMAKE_${test_lang}_COMPILER)
|
||||
enable_language(${test_lang})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
Reference in New Issue
Block a user