cmGeneratorTarget: factor out dyndep support detection

This commit is contained in:
Ben Boeckel
2022-11-23 15:22:31 -05:00
parent 5e026739e1
commit 9e61fc3d6d
4 changed files with 22 additions and 22 deletions

View File

@@ -8869,3 +8869,19 @@ void cmGeneratorTarget::CheckCxxModuleStatus(std::string const& config) const
}
}
}
bool cmGeneratorTarget::NeedCxxModuleSupport(std::string const& lang,
std::string const& config) const
{
if (lang != "CXX"_s) {
return false;
}
return this->HaveCxxModuleSupport(config) == Cxx20SupportLevel::Supported &&
this->GetGlobalGenerator()->CheckCxxModuleSupport();
}
bool cmGeneratorTarget::NeedDyndep(std::string const& lang,
std::string const& config) const
{
return lang == "Fortran"_s || this->NeedCxxModuleSupport(lang, config);
}

View File

@@ -1229,4 +1229,8 @@ public:
// Check C++ module status for the target.
void CheckCxxModuleStatus(std::string const& config) const;
bool NeedCxxModuleSupport(std::string const& lang,
std::string const& config) const;
bool NeedDyndep(std::string const& lang, std::string const& config) const;
};

View File

@@ -157,23 +157,6 @@ std::string cmNinjaTargetGenerator::LanguageDyndepRule(
'_', config);
}
bool cmNinjaTargetGenerator::NeedCxxModuleSupport(
std::string const& lang, std::string const& config) const
{
if (lang != "CXX"_s) {
return false;
}
return this->GetGeneratorTarget()->HaveCxxModuleSupport(config) ==
cmGeneratorTarget::Cxx20SupportLevel::Supported &&
this->GetGlobalGenerator()->CheckCxxModuleSupport();
}
bool cmNinjaTargetGenerator::NeedDyndep(std::string const& lang,
std::string const& config) const
{
return lang == "Fortran" || this->NeedCxxModuleSupport(lang, config);
}
void cmNinjaTargetGenerator::BuildFileSetInfoCache(std::string const& config)
{
auto& per_config = this->Configs[config];
@@ -236,7 +219,7 @@ bool cmNinjaTargetGenerator::NeedDyndepForSource(std::string const& lang,
std::string const& config,
cmSourceFile const* sf)
{
bool const needDyndep = this->NeedDyndep(lang, config);
bool const needDyndep = this->GetGeneratorTarget()->NeedDyndep(lang, config);
if (!needDyndep) {
return false;
}
@@ -699,7 +682,7 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang,
const std::string& config)
{
// For some cases we scan to dynamically discover dependencies.
bool const needDyndep = this->NeedDyndep(lang, config);
bool const needDyndep = this->GetGeneratorTarget()->NeedDyndep(lang, config);
if (needDyndep) {
this->WriteCompileRule(lang, config, WithScanning::Yes);

View File

@@ -82,13 +82,10 @@ protected:
const std::string& config) const;
std::string LanguageDyndepRule(std::string const& lang,
const std::string& config) const;
bool NeedDyndep(std::string const& lang, std::string const& config) const;
bool NeedDyndepForSource(std::string const& lang, std::string const& config,
cmSourceFile const* sf);
bool NeedExplicitPreprocessing(std::string const& lang) const;
bool CompileWithDefines(std::string const& lang) const;
bool NeedCxxModuleSupport(std::string const& lang,
std::string const& config) const;
std::string OrderDependsTargetForTarget(const std::string& config);