mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 21:31:08 -06:00
Merge topic 'fix-cxx20-detection'
5e7c8f44ac Ninja: Restore support for compilers not defining a C++ standard level
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Acked-by: Jaeden Amero <kitware@patater.com>
Acked-by: Martin Kojtal <martin.kojtal@arm.com>
Merge-request: !7896
This commit is contained in:
@@ -8803,11 +8803,18 @@ cmGeneratorTarget::Cxx20SupportLevel cmGeneratorTarget::HaveCxxModuleSupport(
|
||||
if (!state->GetLanguageEnabled("CXX")) {
|
||||
return Cxx20SupportLevel::MissingCxx;
|
||||
}
|
||||
cmStandardLevelResolver standardResolver(this->Makefile);
|
||||
if (!standardResolver.HaveStandardAvailable(this, "CXX", config,
|
||||
"cxx_std_20")) {
|
||||
return Cxx20SupportLevel::NoCxx20;
|
||||
cmValue standardDefault =
|
||||
this->Target->GetMakefile()->GetDefinition("CMAKE_CXX_STANDARD_DEFAULT");
|
||||
if (standardDefault && !standardDefault->empty()) {
|
||||
cmStandardLevelResolver standardResolver(this->Makefile);
|
||||
if (!standardResolver.HaveStandardAvailable(this, "CXX", config,
|
||||
"cxx_std_20")) {
|
||||
return Cxx20SupportLevel::NoCxx20;
|
||||
}
|
||||
}
|
||||
// Else, an empty CMAKE_CXX_STANDARD_DEFAULT means CMake does not detect and
|
||||
// set a default standard level for this compiler, so assume all standards
|
||||
// are available.
|
||||
if (!this->Makefile->IsOn("CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP")) {
|
||||
return Cxx20SupportLevel::MissingExperimentalFlag;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user