From 39fd396421d7b5012e8fb567710ea1c99d67eeab Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 25 Oct 2024 09:53:57 -0400 Subject: LINK_LIBRARIES_STRATEGY: Rename strategies to clarify expectations Since commit 7abd3137b7 (Linking: Optionally reorder direct dependencies from LINK_LIBRARIES, 2024-09-19, v3.31.0-rc1~53^2) the strategy name `PRESERVE_ORDER` has led users to expect that it strictly preserves order. While the part of the link line generation logic controlled by `LINK_LIBRARIES_STRATEGY` does preserve order, it is not the last step. Toolchain-specific de-duplication can cause the order to change on the actual link line generated in the build system. Rename the strategies: * `PRESERVE_ORDER` => `REORDER_MINIMALLY` * `REORDER` => `REORDER_FREELY` The new names make it clear that reordering is always possible, just to varying degrees. Update the `LINK_LIBRARIES_STRATEGY` documentation to clarify that the strategies do not directly control the final link line. Fixes: #26400 Issue: #26271 --- Help/prop_tgt/LINK_LIBRARIES_STRATEGY.rst | 19 +++++++++++-------- Source/cmComputeLinkDepends.cxx | 4 ++-- Source/cmComputeLinkDepends.h | 4 ++-- Source/cmComputeLinkInformation.cxx | 10 +++++----- .../Basic-PRESERVE_ORDER-run-stdout-dedup-reverse.txt | 1 - .../Basic-PRESERVE_ORDER-run-stdout-dedup.txt | 1 - .../Basic-PRESERVE_ORDER-run-stdout.txt | 1 - .../Basic-PRESERVE_ORDER-stderr-dedup-reverse.txt | 10 ---------- .../Basic-PRESERVE_ORDER-stderr-dedup.txt | 10 ---------- .../Basic-PRESERVE_ORDER-stderr.txt | 11 ----------- .../LinkLibrariesStrategy/Basic-PRESERVE_ORDER.cmake | 2 -- .../Basic-REORDER-run-stdout-dedup-reverse.txt | 1 - .../Basic-REORDER-run-stdout-dedup.txt | 1 - .../Basic-REORDER-run-stdout.txt | 1 - .../Basic-REORDER-stderr-dedup-reverse.txt | 9 --------- .../Basic-REORDER-stderr-dedup.txt | 9 --------- .../LinkLibrariesStrategy/Basic-REORDER-stderr.txt | 9 --------- .../LinkLibrariesStrategy/Basic-REORDER.cmake | 2 -- .../Basic-REORDER_FREELY-run-stdout-dedup-reverse.txt | 1 + .../Basic-REORDER_FREELY-run-stdout-dedup.txt | 1 + .../Basic-REORDER_FREELY-run-stdout.txt | 1 + .../Basic-REORDER_FREELY-stderr-dedup-reverse.txt | 9 +++++++++ .../Basic-REORDER_FREELY-stderr-dedup.txt | 9 +++++++++ .../Basic-REORDER_FREELY-stderr.txt | 9 +++++++++ .../LinkLibrariesStrategy/Basic-REORDER_FREELY.cmake | 2 ++ ...sic-REORDER_MINIMALLY-run-stdout-dedup-reverse.txt | 1 + .../Basic-REORDER_MINIMALLY-run-stdout-dedup.txt | 1 + .../Basic-REORDER_MINIMALLY-run-stdout.txt | 1 + .../Basic-REORDER_MINIMALLY-stderr-dedup-reverse.txt | 10 ++++++++++ .../Basic-REORDER_MINIMALLY-stderr-dedup.txt | 10 ++++++++++ .../Basic-REORDER_MINIMALLY-stderr.txt | 11 +++++++++++ .../Basic-REORDER_MINIMALLY.cmake | 2 ++ .../Duplicate-PRESERVE_ORDER-stderr.txt | 15 --------------- .../Duplicate-PRESERVE_ORDER.cmake | 2 -- .../Duplicate-REORDER-stderr.txt | 9 --------- .../LinkLibrariesStrategy/Duplicate-REORDER.cmake | 2 -- .../Duplicate-REORDER_FREELY-stderr.txt | 9 +++++++++ .../Duplicate-REORDER_FREELY.cmake | 2 ++ .../Duplicate-REORDER_MINIMALLY-stderr.txt | 15 +++++++++++++++ .../Duplicate-REORDER_MINIMALLY.cmake | 2 ++ .../RunCMake/LinkLibrariesStrategy/RunCMakeTest.cmake | 8 ++++---- 41 files changed, 120 insertions(+), 117 deletions(-) delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-run-stdout-dedup-reverse.txt delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-run-stdout-dedup.txt delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-run-stdout.txt delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-stderr-dedup-reverse.txt delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-stderr-dedup.txt delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-stderr.txt delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER.cmake delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-run-stdout-dedup-reverse.txt delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-run-stdout-dedup.txt delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-run-stdout.txt delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-stderr-dedup-reverse.txt delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-stderr-dedup.txt delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-stderr.txt delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER.cmake create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-run-stdout-dedup-reverse.txt create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-run-stdout-dedup.txt create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-run-stdout.txt create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-stderr-dedup-reverse.txt create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-stderr-dedup.txt create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-stderr.txt create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY.cmake create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-run-stdout-dedup-reverse.txt create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-run-stdout-dedup.txt create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-run-stdout.txt create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-stderr-dedup-reverse.txt create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-stderr-dedup.txt create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-stderr.txt create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY.cmake delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Duplicate-PRESERVE_ORDER-stderr.txt delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Duplicate-PRESERVE_ORDER.cmake delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER-stderr.txt delete mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER.cmake create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER_FREELY-stderr.txt create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER_FREELY.cmake create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER_MINIMALLY-stderr.txt create mode 100644 Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER_MINIMALLY.cmake diff --git a/Help/prop_tgt/LINK_LIBRARIES_STRATEGY.rst b/Help/prop_tgt/LINK_LIBRARIES_STRATEGY.rst index 13a5d52..f8db750 100644 --- a/Help/prop_tgt/LINK_LIBRARIES_STRATEGY.rst +++ b/Help/prop_tgt/LINK_LIBRARIES_STRATEGY.rst @@ -15,7 +15,8 @@ target's direct link dependencies, typically populated by calls to propagated from those entries of :prop_tgt:`LINK_LIBRARIES` that name library targets by following the transitive closure of their :prop_tgt:`INTERFACE_LINK_LIBRARIES` properties. CMake supports multiple -strategies for passing direct and indirect link dependencies to the linker. +strategies for nominally ordering direct and indirect link dependencies, +which are then filtered for `Toolchain-Specific Behavior`_. Consider this example for the strategies below: @@ -31,7 +32,7 @@ Consider this example for the strategies below: The supported strategies are: -``PRESERVE_ORDER`` +``REORDER_MINIMALLY`` Entries of :prop_tgt:`LINK_LIBRARIES` always appear first and in their original order. Indirect link dependencies not satisfied by the original entries may be reordered and de-duplicated with respect to @@ -46,13 +47,13 @@ The supported strategies are: In the above example, this strategy computes a link line for ``main`` by starting with its original entries ``A B C``, and then appends another ``A`` to satisfy the dependencies of ``B`` and ``C`` on ``A``. - The final order produced by this strategy is ``A B C A``. + The nominal order produced by this strategy is ``A B C A``. Note that additional filtering for `Toolchain-Specific Behavior`_ may de-duplicate ``A`` on the actual linker invocation in the generated build system, resulting in either ``A B C`` or ``B C A``. -``REORDER`` +``REORDER_FREELY`` Entries of :prop_tgt:`LINK_LIBRARIES` may be reordered, de-duplicated, and intermixed with indirect link dependencies. This may result in more efficient link lines, but does not give projects any control of @@ -61,16 +62,18 @@ The supported strategies are: In the above example, this strategy computes a link line for ``main`` by re-ordering its original entries ``A B C`` to satisfy the dependencies of ``B`` and ``C`` on ``A``. - The final order produced by this strategy is ``B C A``. + The nominal order produced by this strategy is ``B C A``. Toolchain-Specific Behavior ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Regardless of the strategy used, the actual linker invocation for -some platforms may de-duplicate entries based on linker capabilities. +After one of the above strategies produces a nominal order among +direct and indirect link dependencies, the actual linker invocation +in the generated build system may de-duplicate entries based on +platform-specific requirements and linker capabilities. See policy :policy:`CMP0156`. -For example, if the ``PRESERVE_ORDER`` strategy produces ``A B C A``, +For example, if the ``REORDER_MINIMALLY`` strategy produces ``A B C A``, the actual link line may de-duplicate ``A`` as follows: * If ``A`` is a static library and the linker re-scans automatically, diff --git a/Source/cmComputeLinkDepends.cxx b/Source/cmComputeLinkDepends.cxx index ab2557b..551a45b 100644 --- a/Source/cmComputeLinkDepends.cxx +++ b/Source/cmComputeLinkDepends.cxx @@ -1521,14 +1521,14 @@ void cmComputeLinkDepends::OrderLinkEntries() // Start with the original link line. switch (this->Strategy) { - case LinkLibrariesStrategy::PRESERVE_ORDER: { + case LinkLibrariesStrategy::REORDER_MINIMALLY: { // Emit the direct dependencies in their original order. // This gives projects control over ordering. for (size_t originalEntry : this->OriginalEntries) { this->VisitEntry(originalEntry); } } break; - case LinkLibrariesStrategy::REORDER: { + case LinkLibrariesStrategy::REORDER_FREELY: { // Schedule the direct dependencies for emission in topo order. // This may produce more efficient link lines. for (size_t originalEntry : this->OriginalEntries) { diff --git a/Source/cmComputeLinkDepends.h b/Source/cmComputeLinkDepends.h index 8b8aba4..dc2fa45 100644 --- a/Source/cmComputeLinkDepends.h +++ b/Source/cmComputeLinkDepends.h @@ -29,8 +29,8 @@ class cmake; enum class LinkLibrariesStrategy { - PRESERVE_ORDER, - REORDER, + REORDER_MINIMALLY, + REORDER_FREELY, }; /** \class cmComputeLinkDepends diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx index 26ff326..c2c210b 100644 --- a/Source/cmComputeLinkInformation.cxx +++ b/Source/cmComputeLinkInformation.cxx @@ -568,12 +568,12 @@ bool cmComputeLinkInformation::Compute() return false; } - LinkLibrariesStrategy strategy = LinkLibrariesStrategy::PRESERVE_ORDER; + LinkLibrariesStrategy strategy = LinkLibrariesStrategy::REORDER_MINIMALLY; if (cmValue s = this->Target->GetProperty("LINK_LIBRARIES_STRATEGY")) { - if (*s == "PRESERVE_ORDER"_s) { - strategy = LinkLibrariesStrategy::PRESERVE_ORDER; - } else if (*s == "REORDER"_s) { - strategy = LinkLibrariesStrategy::REORDER; + if (*s == "REORDER_MINIMALLY"_s) { + strategy = LinkLibrariesStrategy::REORDER_MINIMALLY; + } else if (*s == "REORDER_FREELY"_s) { + strategy = LinkLibrariesStrategy::REORDER_FREELY; } else { this->CMakeInstance->IssueMessage( MessageType::FATAL_ERROR, diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-run-stdout-dedup-reverse.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-run-stdout-dedup-reverse.txt deleted file mode 100644 index 7e46d1ba..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-run-stdout-dedup-reverse.txt +++ /dev/null @@ -1 +0,0 @@ -^Library 'B' was linked first\.$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-run-stdout-dedup.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-run-stdout-dedup.txt deleted file mode 100644 index 6ef12eb..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-run-stdout-dedup.txt +++ /dev/null @@ -1 +0,0 @@ -^Library 'A' was linked first\.$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-run-stdout.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-run-stdout.txt deleted file mode 100644 index 6ef12eb..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-run-stdout.txt +++ /dev/null @@ -1 +0,0 @@ -^Library 'A' was linked first\.$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-stderr-dedup-reverse.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-stderr-dedup-reverse.txt deleted file mode 100644 index 7d91bee..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-stderr-dedup-reverse.txt +++ /dev/null @@ -1,10 +0,0 @@ -target \[main\] link dependency ordering: - target \[A\] - target \[B\] - target \[C\] - target \[A\] - -target \[main\] link line: - target \[B\] - target \[C\] - target \[A\]$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-stderr-dedup.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-stderr-dedup.txt deleted file mode 100644 index d4bccc4..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-stderr-dedup.txt +++ /dev/null @@ -1,10 +0,0 @@ -target \[main\] link dependency ordering: - target \[A\] - target \[B\] - target \[C\] - target \[A\] - -target \[main\] link line: - target \[A\] - target \[B\] - target \[C\]$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-stderr.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-stderr.txt deleted file mode 100644 index 7e9a1cd..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER-stderr.txt +++ /dev/null @@ -1,11 +0,0 @@ -target \[main\] link dependency ordering: - target \[A\] - target \[B\] - target \[C\] - target \[A\] - -target \[main\] link line: - target \[A\] - target \[B\] - target \[C\] - target \[A\]$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER.cmake b/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER.cmake deleted file mode 100644 index f3dc096..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Basic-PRESERVE_ORDER.cmake +++ /dev/null @@ -1,2 +0,0 @@ -set(CMAKE_LINK_LIBRARIES_STRATEGY PRESERVE_ORDER) -include(Basic-common.cmake) diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-run-stdout-dedup-reverse.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-run-stdout-dedup-reverse.txt deleted file mode 100644 index 7e46d1ba..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-run-stdout-dedup-reverse.txt +++ /dev/null @@ -1 +0,0 @@ -^Library 'B' was linked first\.$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-run-stdout-dedup.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-run-stdout-dedup.txt deleted file mode 100644 index 7e46d1ba..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-run-stdout-dedup.txt +++ /dev/null @@ -1 +0,0 @@ -^Library 'B' was linked first\.$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-run-stdout.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-run-stdout.txt deleted file mode 100644 index 7e46d1ba..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-run-stdout.txt +++ /dev/null @@ -1 +0,0 @@ -^Library 'B' was linked first\.$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-stderr-dedup-reverse.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-stderr-dedup-reverse.txt deleted file mode 100644 index b908fbc..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-stderr-dedup-reverse.txt +++ /dev/null @@ -1,9 +0,0 @@ -target \[main\] link dependency ordering: - target \[B\] - target \[C\] - target \[A\] - -target \[main\] link line: - target \[B\] - target \[C\] - target \[A\]$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-stderr-dedup.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-stderr-dedup.txt deleted file mode 100644 index b908fbc..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-stderr-dedup.txt +++ /dev/null @@ -1,9 +0,0 @@ -target \[main\] link dependency ordering: - target \[B\] - target \[C\] - target \[A\] - -target \[main\] link line: - target \[B\] - target \[C\] - target \[A\]$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-stderr.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-stderr.txt deleted file mode 100644 index b908fbc..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER-stderr.txt +++ /dev/null @@ -1,9 +0,0 @@ -target \[main\] link dependency ordering: - target \[B\] - target \[C\] - target \[A\] - -target \[main\] link line: - target \[B\] - target \[C\] - target \[A\]$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER.cmake b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER.cmake deleted file mode 100644 index 8e62377..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER.cmake +++ /dev/null @@ -1,2 +0,0 @@ -set(CMAKE_LINK_LIBRARIES_STRATEGY REORDER) -include(Basic-common.cmake) diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-run-stdout-dedup-reverse.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-run-stdout-dedup-reverse.txt new file mode 100644 index 0000000..7e46d1ba --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-run-stdout-dedup-reverse.txt @@ -0,0 +1 @@ +^Library 'B' was linked first\.$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-run-stdout-dedup.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-run-stdout-dedup.txt new file mode 100644 index 0000000..7e46d1ba --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-run-stdout-dedup.txt @@ -0,0 +1 @@ +^Library 'B' was linked first\.$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-run-stdout.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-run-stdout.txt new file mode 100644 index 0000000..7e46d1ba --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-run-stdout.txt @@ -0,0 +1 @@ +^Library 'B' was linked first\.$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-stderr-dedup-reverse.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-stderr-dedup-reverse.txt new file mode 100644 index 0000000..b908fbc --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-stderr-dedup-reverse.txt @@ -0,0 +1,9 @@ +target \[main\] link dependency ordering: + target \[B\] + target \[C\] + target \[A\] + +target \[main\] link line: + target \[B\] + target \[C\] + target \[A\]$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-stderr-dedup.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-stderr-dedup.txt new file mode 100644 index 0000000..b908fbc --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-stderr-dedup.txt @@ -0,0 +1,9 @@ +target \[main\] link dependency ordering: + target \[B\] + target \[C\] + target \[A\] + +target \[main\] link line: + target \[B\] + target \[C\] + target \[A\]$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-stderr.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-stderr.txt new file mode 100644 index 0000000..b908fbc --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY-stderr.txt @@ -0,0 +1,9 @@ +target \[main\] link dependency ordering: + target \[B\] + target \[C\] + target \[A\] + +target \[main\] link line: + target \[B\] + target \[C\] + target \[A\]$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY.cmake b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY.cmake new file mode 100644 index 0000000..ea38b5b --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_FREELY.cmake @@ -0,0 +1,2 @@ +set(CMAKE_LINK_LIBRARIES_STRATEGY REORDER_FREELY) +include(Basic-common.cmake) diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-run-stdout-dedup-reverse.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-run-stdout-dedup-reverse.txt new file mode 100644 index 0000000..7e46d1ba --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-run-stdout-dedup-reverse.txt @@ -0,0 +1 @@ +^Library 'B' was linked first\.$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-run-stdout-dedup.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-run-stdout-dedup.txt new file mode 100644 index 0000000..6ef12eb --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-run-stdout-dedup.txt @@ -0,0 +1 @@ +^Library 'A' was linked first\.$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-run-stdout.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-run-stdout.txt new file mode 100644 index 0000000..6ef12eb --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-run-stdout.txt @@ -0,0 +1 @@ +^Library 'A' was linked first\.$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-stderr-dedup-reverse.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-stderr-dedup-reverse.txt new file mode 100644 index 0000000..7d91bee --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-stderr-dedup-reverse.txt @@ -0,0 +1,10 @@ +target \[main\] link dependency ordering: + target \[A\] + target \[B\] + target \[C\] + target \[A\] + +target \[main\] link line: + target \[B\] + target \[C\] + target \[A\]$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-stderr-dedup.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-stderr-dedup.txt new file mode 100644 index 0000000..d4bccc4 --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-stderr-dedup.txt @@ -0,0 +1,10 @@ +target \[main\] link dependency ordering: + target \[A\] + target \[B\] + target \[C\] + target \[A\] + +target \[main\] link line: + target \[A\] + target \[B\] + target \[C\]$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-stderr.txt b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-stderr.txt new file mode 100644 index 0000000..7e9a1cd --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY-stderr.txt @@ -0,0 +1,11 @@ +target \[main\] link dependency ordering: + target \[A\] + target \[B\] + target \[C\] + target \[A\] + +target \[main\] link line: + target \[A\] + target \[B\] + target \[C\] + target \[A\]$ diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY.cmake b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY.cmake new file mode 100644 index 0000000..12876b1 --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Basic-REORDER_MINIMALLY.cmake @@ -0,0 +1,2 @@ +set(CMAKE_LINK_LIBRARIES_STRATEGY REORDER_MINIMALLY) +include(Basic-common.cmake) diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-PRESERVE_ORDER-stderr.txt b/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-PRESERVE_ORDER-stderr.txt deleted file mode 100644 index 2637f93..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-PRESERVE_ORDER-stderr.txt +++ /dev/null @@ -1,15 +0,0 @@ -target \[main\] link dependency ordering: - item \[-Flag1\] - target \[A\] - item \[-Flag1\] - target \[B\] - item \[-Flag2\] - target \[C\] - item \[-Flag2\] - target \[A\] - item \[-Flag2\] - target \[B\] - item \[-Flag3\] - target \[C\] - -target \[main\] link line: diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-PRESERVE_ORDER.cmake b/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-PRESERVE_ORDER.cmake deleted file mode 100644 index 9f694db..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-PRESERVE_ORDER.cmake +++ /dev/null @@ -1,2 +0,0 @@ -set(CMAKE_LINK_LIBRARIES_STRATEGY PRESERVE_ORDER) -include(Duplicate-common.cmake) diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER-stderr.txt b/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER-stderr.txt deleted file mode 100644 index 2353288..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER-stderr.txt +++ /dev/null @@ -1,9 +0,0 @@ -target \[main\] link dependency ordering: - item \[-Flag1\] - target \[A\] - target \[B\] - item \[-Flag2\] - target \[C\] - item \[-Flag3\] - -target \[main\] link line: diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER.cmake b/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER.cmake deleted file mode 100644 index cc51e0a..0000000 --- a/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER.cmake +++ /dev/null @@ -1,2 +0,0 @@ -set(CMAKE_LINK_LIBRARIES_STRATEGY REORDER) -include(Duplicate-common.cmake) diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER_FREELY-stderr.txt b/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER_FREELY-stderr.txt new file mode 100644 index 0000000..2353288 --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER_FREELY-stderr.txt @@ -0,0 +1,9 @@ +target \[main\] link dependency ordering: + item \[-Flag1\] + target \[A\] + target \[B\] + item \[-Flag2\] + target \[C\] + item \[-Flag3\] + +target \[main\] link line: diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER_FREELY.cmake b/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER_FREELY.cmake new file mode 100644 index 0000000..c205fad --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER_FREELY.cmake @@ -0,0 +1,2 @@ +set(CMAKE_LINK_LIBRARIES_STRATEGY REORDER_FREELY) +include(Duplicate-common.cmake) diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER_MINIMALLY-stderr.txt b/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER_MINIMALLY-stderr.txt new file mode 100644 index 0000000..2637f93 --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER_MINIMALLY-stderr.txt @@ -0,0 +1,15 @@ +target \[main\] link dependency ordering: + item \[-Flag1\] + target \[A\] + item \[-Flag1\] + target \[B\] + item \[-Flag2\] + target \[C\] + item \[-Flag2\] + target \[A\] + item \[-Flag2\] + target \[B\] + item \[-Flag3\] + target \[C\] + +target \[main\] link line: diff --git a/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER_MINIMALLY.cmake b/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER_MINIMALLY.cmake new file mode 100644 index 0000000..6d4545b --- /dev/null +++ b/Tests/RunCMake/LinkLibrariesStrategy/Duplicate-REORDER_MINIMALLY.cmake @@ -0,0 +1,2 @@ +set(CMAKE_LINK_LIBRARIES_STRATEGY REORDER_MINIMALLY) +include(Duplicate-common.cmake) diff --git a/Tests/RunCMake/LinkLibrariesStrategy/RunCMakeTest.cmake b/Tests/RunCMake/LinkLibrariesStrategy/RunCMakeTest.cmake index eb107ed..787b636 100644 --- a/Tests/RunCMake/LinkLibrariesStrategy/RunCMakeTest.cmake +++ b/Tests/RunCMake/LinkLibrariesStrategy/RunCMakeTest.cmake @@ -44,8 +44,8 @@ function(run_strategy case exe) endforeach() endfunction() -run_strategy(Basic-PRESERVE_ORDER "main") -run_strategy(Basic-REORDER "main") +run_strategy(Basic-REORDER_MINIMALLY "main") +run_strategy(Basic-REORDER_FREELY "main") -run_cmake(Duplicate-PRESERVE_ORDER) -run_cmake(Duplicate-REORDER) +run_cmake(Duplicate-REORDER_MINIMALLY) +run_cmake(Duplicate-REORDER_FREELY) -- cgit v0.12