parent
949cc2ec29
commit
e7af41c74d
@ -1,24 +0,0 @@
|
|||||||
From: =?utf-8?q?Timo_R=C3=B6hling?= <roehling@debian.org>
|
|
||||||
Date: Tue, 25 Jul 2023 16:38:44 +0200
|
|
||||||
Subject: fix typo in Fortran_PREPROCESS property initialization
|
|
||||||
|
|
||||||
Origin: https://gitlab.kitware.com/cmake/cmake/-/merge_requests/8654
|
|
||||||
Bug: https://gitlab.kitware.com/cmake/cmake/-/issues/25123
|
|
||||||
Bug-Debian: https://bugs.debian.org/1041853
|
|
||||||
---
|
|
||||||
Source/cmTarget.cxx | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
|
|
||||||
index 81497f5..b53adf8 100644
|
|
||||||
--- a/Source/cmTarget.cxx
|
|
||||||
+++ b/Source/cmTarget.cxx
|
|
||||||
@@ -420,7 +420,7 @@ TargetProperty const StaticTargetProperties[] = {
|
|
||||||
{ "Fortran_FORMAT"_s, IC::CanCompileSources },
|
|
||||||
{ "Fortran_MODULE_DIRECTORY"_s, IC::CanCompileSources },
|
|
||||||
{ "Fortran_COMPILER_LAUNCHER"_s, IC::CanCompileSources },
|
|
||||||
- { "Fortran_PREPRPOCESS"_s, IC::CanCompileSources },
|
|
||||||
+ { "Fortran_PREPROCESS"_s, IC::CanCompileSources },
|
|
||||||
{ "Fortran_VISIBILITY_PRESET"_s, IC::CanCompileSources },
|
|
||||||
// ---- HIP
|
|
||||||
COMMON_LANGUAGE_PROPERTIES(HIP),
|
|
@ -1,107 +0,0 @@
|
|||||||
From: Ben Boeckel <ben.boeckel@kitware.com>
|
|
||||||
Date: Sat, 22 Jul 2023 06:46:31 -0400
|
|
||||||
Subject: cmComputeLinkInformation: track OBJECT library dependencies
|
|
||||||
|
|
||||||
In commit b6a5382217 (Ninja: depend on language module information files
|
|
||||||
directly, 2023-02-10), introduced via !8197, language-specific module
|
|
||||||
information files (`CMakeFiles/<target>.dir/<lang>Modules.json`) files
|
|
||||||
were added as real dependencies to the dyndep collation steps.
|
|
||||||
Previously, the behavior was to inform the collator of all possible
|
|
||||||
targets and search for the files manually ignoring those which did not
|
|
||||||
exist with ordering enforced by depending on the linker output of all
|
|
||||||
dependent targets. This behavior could lead to stale information being
|
|
||||||
used (e.g., if a target stops providing any targets) and also did not
|
|
||||||
reliably build everything needed on rebuilds. Afterwards, the internal
|
|
||||||
computation changed the dependency from all possible targets to an exact
|
|
||||||
set of "these targets might have modules" query, however one that did
|
|
||||||
not include `OBJECT` libraries since do not have `LinkEntry` items
|
|
||||||
internally (their objects are instead treated as source files). As a
|
|
||||||
stopgap measure, track `OBJECT` libraries in a separate list and query
|
|
||||||
them explicitly when gathering targets which may have interesting
|
|
||||||
information. Future work can add `LinkEntry` items to represent these
|
|
||||||
targets once all `LinkEntry` consumers have been audited to make sure
|
|
||||||
they are not surprised by any `OBJECT` library entries.
|
|
||||||
|
|
||||||
Bug: https://gitlab.kitware.com/cmake/cmake/-/issues/25112
|
|
||||||
---
|
|
||||||
Source/cmCommonTargetGenerator.cxx | 12 +++++++++---
|
|
||||||
Source/cmComputeLinkInformation.cxx | 14 ++++++++++++--
|
|
||||||
Source/cmComputeLinkInformation.h | 3 +++
|
|
||||||
3 files changed, 24 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/Source/cmCommonTargetGenerator.cxx b/Source/cmCommonTargetGenerator.cxx
|
|
||||||
index e635dd9..1924235 100644
|
|
||||||
--- a/Source/cmCommonTargetGenerator.cxx
|
|
||||||
+++ b/Source/cmCommonTargetGenerator.cxx
|
|
||||||
@@ -170,9 +170,15 @@ std::vector<std::string> cmCommonTargetGenerator::GetLinkedTargetDirectories(
|
|
||||||
cmGlobalCommonGenerator* const gg = this->GlobalCommonGenerator;
|
|
||||||
if (cmComputeLinkInformation* cli =
|
|
||||||
this->GeneratorTarget->GetLinkInformation(config)) {
|
|
||||||
- cmComputeLinkInformation::ItemVector const& items = cli->GetItems();
|
|
||||||
- for (auto const& item : items) {
|
|
||||||
- cmGeneratorTarget const* linkee = item.Target;
|
|
||||||
+ std::vector<cmGeneratorTarget const*> targets;
|
|
||||||
+ for (auto const& item : cli->GetItems()) {
|
|
||||||
+ targets.push_back(item.Target);
|
|
||||||
+ }
|
|
||||||
+ for (auto const* target : cli->GetObjectLibrariesLinked()) {
|
|
||||||
+ targets.push_back(target);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ for (auto const* linkee : targets) {
|
|
||||||
if (linkee &&
|
|
||||||
!linkee->IsImported()
|
|
||||||
// Skip targets that build after this one in a static lib cycle.
|
|
||||||
diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx
|
|
||||||
index b80b3cb..ebbb88f 100644
|
|
||||||
--- a/Source/cmComputeLinkInformation.cxx
|
|
||||||
+++ b/Source/cmComputeLinkInformation.cxx
|
|
||||||
@@ -525,6 +525,12 @@ cmComputeLinkInformation::GetSharedLibrariesLinked() const
|
|
||||||
return this->SharedLibrariesLinked;
|
|
||||||
}
|
|
||||||
|
|
||||||
+const std::vector<const cmGeneratorTarget*>&
|
|
||||||
+cmComputeLinkInformation::GetObjectLibrariesLinked() const
|
|
||||||
+{
|
|
||||||
+ return this->ObjectLibrariesLinked;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
bool cmComputeLinkInformation::Compute()
|
|
||||||
{
|
|
||||||
// Skip targets that do not link.
|
|
||||||
@@ -1147,8 +1153,12 @@ void cmComputeLinkInformation::AddItem(LinkEntry const& entry)
|
|
||||||
this->AddItem(BT<std::string>(libName, item.Backtrace));
|
|
||||||
}
|
|
||||||
} else if (tgt->GetType() == cmStateEnums::OBJECT_LIBRARY) {
|
|
||||||
- // Ignore object library!
|
|
||||||
- // Its object-files should already have been extracted for linking.
|
|
||||||
+ if (!tgt->HaveCxx20ModuleSources() && !tgt->HaveFortranSources(config)) {
|
|
||||||
+ // Ignore object library!
|
|
||||||
+ // Its object-files should already have been extracted for linking.
|
|
||||||
+ } else {
|
|
||||||
+ this->ObjectLibrariesLinked.push_back(entry.Target);
|
|
||||||
+ }
|
|
||||||
} else {
|
|
||||||
// Decide whether to use an import library.
|
|
||||||
cmStateEnums::ArtifactType artifact = tgt->HasImportLibrary(config)
|
|
||||||
diff --git a/Source/cmComputeLinkInformation.h b/Source/cmComputeLinkInformation.h
|
|
||||||
index a4ada1f..8393a29 100644
|
|
||||||
--- a/Source/cmComputeLinkInformation.h
|
|
||||||
+++ b/Source/cmComputeLinkInformation.h
|
|
||||||
@@ -96,6 +96,8 @@ public:
|
|
||||||
std::string GetRPathString(bool for_install) const;
|
|
||||||
std::string GetChrpathString() const;
|
|
||||||
std::set<cmGeneratorTarget const*> const& GetSharedLibrariesLinked() const;
|
|
||||||
+ std::vector<cmGeneratorTarget const*> const& GetObjectLibrariesLinked()
|
|
||||||
+ const;
|
|
||||||
std::vector<cmGeneratorTarget const*> const& GetRuntimeDLLs() const
|
|
||||||
{
|
|
||||||
return this->RuntimeDLLs;
|
|
||||||
@@ -132,6 +134,7 @@ private:
|
|
||||||
std::vector<std::string> FrameworkPaths;
|
|
||||||
std::vector<std::string> RuntimeSearchPath;
|
|
||||||
std::set<cmGeneratorTarget const*> SharedLibrariesLinked;
|
|
||||||
+ std::vector<cmGeneratorTarget const*> ObjectLibrariesLinked;
|
|
||||||
std::vector<cmGeneratorTarget const*> RuntimeDLLs;
|
|
||||||
|
|
||||||
// Context information.
|
|
Loading…
Reference in new issue