From 6251edaed1c4f55625d96dc31e044a9fd23e1db2 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Tue, 5 Sep 2023 15:55:19 -0400 Subject: cmGeneratorTarget: support config-independent Fortran source queries Some locations care about "any config with Fortran", so make a query for such (they may not know any configuration names themselves). --- Source/cmGeneratorTarget.cxx | 9 +++++++++ Source/cmGeneratorTarget.h | 1 + 2 files changed, 10 insertions(+) diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 357d0a6..7d1fcf3 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -8873,6 +8873,15 @@ bool cmGeneratorTarget::HaveFortranSources(std::string const& config) const }); } +bool cmGeneratorTarget::HaveFortranSources() const +{ + auto sources = cmGeneratorTarget::GetAllConfigSources(); + return std::any_of(sources.begin(), sources.end(), + [](AllConfigSource const& sf) -> bool { + return sf.Source->GetLanguage() == "Fortran"_s; + }); +} + bool cmGeneratorTarget::HaveCxx20ModuleSources() const { auto const& fs_names = this->Target->GetAllFileSetNames(); diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index 78945c3..dca69fd 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -1247,6 +1247,7 @@ public: cmGeneratorTarget const* t2) const; }; + bool HaveFortranSources() const; bool HaveFortranSources(std::string const& config) const; // C++20 module support queries. -- cgit v0.12 From 74b1d6caf31d9921b8311012ead4497865e77396 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Tue, 5 Sep 2023 15:56:03 -0400 Subject: cmComputeLinkInformation: compute link info for module-using targets Targets which contain C++ module or Fortran sources need to participate in link information unconditionally regardless of whether they actually have link artifacts or not. Fixes: #25223 --- Source/cmComputeLinkInformation.cxx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx index ebbb88f..4804565 100644 --- a/Source/cmComputeLinkInformation.cxx +++ b/Source/cmComputeLinkInformation.cxx @@ -533,11 +533,14 @@ cmComputeLinkInformation::GetObjectLibrariesLinked() const bool cmComputeLinkInformation::Compute() { - // Skip targets that do not link. + // Skip targets that do not link or have link-like information consumers may + // need (namely modules). if (!(this->Target->GetType() == cmStateEnums::EXECUTABLE || this->Target->GetType() == cmStateEnums::SHARED_LIBRARY || this->Target->GetType() == cmStateEnums::MODULE_LIBRARY || - this->Target->GetType() == cmStateEnums::STATIC_LIBRARY)) { + this->Target->GetType() == cmStateEnums::STATIC_LIBRARY || + this->Target->HaveCxx20ModuleSources() || + this->Target->HaveFortranSources())) { return false; } -- cgit v0.12