1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-14 19:08:07 +08:00

cxxmodules: Do not scan sources while testing the compiler

The C++ sources we use to test the compiler do not use modules.
Avoid requiring a compiler that can scan just to enable the language,
even when CMP0155 is NEW.  The project may explicitly turn off
`CMAKE_CXX_SCAN_FOR_MODULES` before adding any targets.

Fixes: #25956
This commit is contained in:
Brad King
2024-05-06 09:59:51 -04:00
parent 1086902abd
commit 6df925b595
2 changed files with 16 additions and 0 deletions

View File

@@ -34,6 +34,9 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src)
endif()
set(CMAKE_${lang}_RUNTIME_LIBRARY "Static")
endif()
if(lang STREQUAL "CXX")
set(CMAKE_${lang}_SCAN_FOR_MODULES OFF)
endif()
if(NOT "x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xMSVC")
# Avoid adding our own platform standard libraries for compilers
# from which we might detect implicit link libraries.

View File

@@ -37,6 +37,13 @@ endif()
# any makefiles or projects.
if(NOT CMAKE_CXX_COMPILER_WORKS)
PrintTestCompilerStatus("CXX")
# FIXME: Use a block() to isolate the variables we set/unset here.
if(DEFINED CMAKE_CXX_SCAN_FOR_MODULES)
set(__CMAKE_SAVED_CXX_SCAN_FOR_MODULES "${CMAKE_CXX_SCAN_FOR_MODULES}")
else()
unset(__CMAKE_SAVED_CXX_SCAN_FOR_MODULES)
endif()
set(CMAKE_CXX_SCAN_FOR_MODULES OFF)
__TestCompiler_setTryCompileTargetType()
string(CONCAT __TestCompiler_testCXXCompilerSource
"#ifndef __cplusplus\n"
@@ -49,6 +56,12 @@ if(NOT CMAKE_CXX_COMPILER_WORKS)
try_compile(CMAKE_CXX_COMPILER_WORKS
SOURCE_FROM_VAR testCXXCompiler.cxx __TestCompiler_testCXXCompilerSource
OUTPUT_VARIABLE __CMAKE_CXX_COMPILER_OUTPUT)
if(DEFINED __CMAKE_SAVED_CXX_SCAN_FOR_MODULES)
set(CMAKE_CXX_SCAN_FOR_MODULES "${__CMAKE_SAVED_CXX_SCAN_FOR_MODULES}")
unset(__CMAKE_SAVED_CXX_SCAN_FOR_MODULES)
else()
unset(CMAKE_CXX_SCAN_FOR_MODULES)
endif()
unset(__TestCompiler_testCXXCompilerSource)
# Move result from cache to normal variable.
set(CMAKE_CXX_COMPILER_WORKS ${CMAKE_CXX_COMPILER_WORKS})