mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-11 16:32:14 -06:00
cmGeneratorTarget: factor out dyndep support detection
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user