Commit Graph

7808 Commits

Author SHA1 Message Date
Brad King
9c38c5c1d4 Merge topic 'aix-archive-shared-libraries'
4207687a5f Help: Update AIX_SHARED_LIBRARY_ARCHIVE for versioned shared objects

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9954
2024-10-29 10:16:11 -04:00
Aditya Vidyadhar Kamath
4207687a5f Help: Update AIX_SHARED_LIBRARY_ARCHIVE for versioned shared objects
This was missed in commit dc8e4f8f0c (AIX: Enable versioned shared
objects with CMAKE_AIX_SHARED_LIBRARY_ARCHIVE, 2024-10-10,
v3.31.0-rc2~8^2).
2024-10-29 09:45:36 -04:00
Brad King
c9f320fdc6 Merge topic 'doc-CMP0174'
6aa2e22300 Help: Add 3.31 release note for cmake_parse_arguments CMP0174

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9955
2024-10-29 09:39:25 -04:00
Brad King
1029cd338b Merge topic 'CMP0174-OLD-regression-repeated-keyword'
c8567acc32 cmake_parse_arguments: Restore capture of value after repeated keyword

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9953
2024-10-29 09:38:15 -04:00
Peter Kokot
6aa2e22300 Help: Add 3.31 release note for cmake_parse_arguments CMP0174
This was left out by commit ceeea4e511 (cmake_parse_arguments: Set
variable if empty string given after keyword, 2024-08-18,
v3.31.0-rc1~175^2).
2024-10-28 09:51:27 -04:00
Craig Scott
c8567acc32 cmake_parse_arguments: Restore capture of value after repeated keyword
When a single-value keyword is repeated, and the first instance is
missing a value, it prevents the value from the second instance from
being stored in a variable. This was a regression introduced by
commit ceeea4e511 (cmake_parse_arguments: Set variable if empty string
given after keyword, 2024-08-18). That change also didn't create a
variable if the keyword was given but without a value. The purpose
of the change was to always define a variable if a keyword was given.
Lastly, that change didn't protect the CMP0174 logic to make it only
apply to the PARSE_ARGV form.

The first two of the above problems are fixed here by tracking the
keywords given instead of checking which keywords were missing
values. The third problem is also fixed here, being tightly coupled
to the same logic as the first two problems.

Fixes: #26397
2024-10-28 09:47:21 -04:00
Brad King
4f0c36ba41 Merge topic 'link-strategy'
39fd396421 LINK_LIBRARIES_STRATEGY: Rename strategies to clarify expectations

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Acked-by: Craig Scott <craig.scott@crascit.com>
Merge-request: !9949
2024-10-28 09:14:40 -04:00
Brad King
f42962bfbf Merge topic 'link-strategy' into release-3.31
39fd396421 LINK_LIBRARIES_STRATEGY: Rename strategies to clarify expectations

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Acked-by: Craig Scott <craig.scott@crascit.com>
Merge-request: !9949
2024-10-28 09:14:39 -04:00
Brad King
8779b1ad28 Merge branch 'backport-ci-fedora-41' into ci-fedora-41 2024-10-26 06:02:18 -04:00
Brad King
39fd396421 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
2024-10-25 10:23:37 -04:00
Brad King
7605228f5e codespell: Fix typos 2024-10-25 08:43:04 -04:00
Brad King
e83535f5a3 Merge topic 'improve-package-search'
6f3dc1161a find_package: Also sort Framework matches
e90f60f864 find_package: Don't glob certain macOS paths

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !9942
2024-10-25 08:25:34 -04:00
Brad King
0ba8bdb5c2 Merge topic 'doc-BUILD_TESTING'
9510820d58 Help: Document CTest module BUILD_TESTING variable
6e6e688b80 CTest: Improve formatting of documentation cmake code blocks

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9927
2024-10-25 08:23:25 -04:00
Brad King
4cf0de3c3a Merge topic 'Help-CMAKE_LINK_DEPENDS_USE_LINKER'
686698a7b4 Help: Update note relative the GNU binutils linkers

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9938
2024-10-25 08:13:04 -04:00
Brad King
8e99e70297 Merge topic 'Help-CMAKE_LINK_DEPENDS_USE_LINKER' into release-3.31
686698a7b4 Help: Update note relative the GNU binutils linkers

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9938
2024-10-25 08:13:02 -04:00
Matthew Woehlke
6f3dc1161a find_package: Also sort Framework matches
Add cmAnyDirectoryListGenerator, which matches any directory but also
sorts matches in the same manner as cmProjectDirectoryListGenerator.
Modify SearchFrameworkPrefix to use this, in combination with a literal
path (cmAppendPathSegmentGenerator), instead of cmFileListGeneratorGlob
(which is removed, as it is no longer used). This improves the
consistency of when sorting is available.

This uses cmDirectoryListGenerator's new ability to match anything, as
mentioned in the previous commit.
2024-10-24 13:42:42 -04:00
Robert Maynard
9510820d58 Help: Document CTest module BUILD_TESTING variable
The `BUILD_TESTING` variable is referenced in `add_test` and
`enable_testing`.  It should be documented as it controls the
behavior tests working when projects use `include(CTest)`.
2024-10-24 11:46:37 -04:00
Marc Chevrier
686698a7b4 Help: Update note relative the GNU binutils linkers 2024-10-24 17:02:15 +02:00
Brad King
3ef7198e43 Merge topic 'fix-path-search-doc'
630e4a12a3 Help: Fix find_package search order w.r.t. globs

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Acked-by: Matthew Woehlke <matthew.woehlke@kitware.com>
Merge-request: !9930
2024-10-24 08:59:43 -04:00
Brad King
81f49865f2 Merge topic 'fix-path-search-doc' into release-3.31
630e4a12a3 Help: Fix find_package search order w.r.t. globs

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Acked-by: Matthew Woehlke <matthew.woehlke@kitware.com>
Merge-request: !9930
2024-10-24 08:59:41 -04:00
Brad King
23a24935f1 Merge topic 'doc-link-libraries-strategy'
1e2b2b7fd2 Help: Clarify LINK_LIBRARIES_STRATEGY follow-up de-duplication

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9933
2024-10-24 08:58:47 -04:00
Matthew Woehlke
630e4a12a3 Help: Fix find_package search order w.r.t. globs
Add documentation to clarify that `find_package` searches paths in the
specified order and stops at the first match.  Clarify documentation of
`CMAKE_FIND_PACKAGE_SORT_*` to match the actual behavior.

Note that no behavior is actually changed, this merely improves the
documentation to reflect actual behavior rather than seeming to imply
something else.

Also, update the test to verify that what we claim in the updated
documentation is what's actually happening.
2024-10-23 12:46:07 -04:00
Brad King
1e2b2b7fd2 Help: Clarify LINK_LIBRARIES_STRATEGY follow-up de-duplication
Extend discussion of the ``PRESERVE_ORDER`` example to prominently
explain how platform-specific behavior can affect generated link lines.

Closes: #26388
2024-10-23 10:09:22 -04:00
Craig Scott
61bbc1f7d2 Merge topic 'doc-link-libraries-strategy'
1a119c5ad5 Help: Move LINK_LIBRARIES_STRATEGY details to target property docs

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Brad King <brad.king@kitware.com>
Merge-request: !9919
2024-10-19 17:50:10 -04:00
Craig Scott
1a119c5ad5 Help: Move LINK_LIBRARIES_STRATEGY details to target property docs
For cases where a CMAKE_XXX variable provides a default value for a
XXX target property, the convention used in the documentation is to
put the detailed explanation in the target property docs, leaving the
variable docs to be fairly minimal and cross-reference the target
property docs for details.

When the (CMAKE_)LINK_LIBRARIES_STRATEGY docs were first added,
they were the opposite of this convention, putting the details in the
variable docs instead of the property docs. This change moves the
details to the property docs to make it consistent with the prevailing
convention used elsewhere.
2024-10-19 10:38:10 +11:00
Brad King
c7d11a77e4 ctest: Remove outdated optimization of tests running ctest itself
In commit 2c2291bbe0 (ENH: add new feature to ctest so that it can
cmake, build and run a test executable, 2004-01-07, v2.4.0~3483) ctest
was taught to recognize tests that run ctest itself and run them
internally instead of spawning a new process.  This optimization was
removed by commit b9daa192af (ENH: Refactored CTest test execution code
into an object, 2009-08-19, v2.8.0~276) `cmCTestRunTest` replaced
`cmCTestTestHandler::ProcessOneTest`, which was eventually removed by
commit 5a5cc52230 (Fixed conversion warning on 64 bit machines,
2009-08-31, v2.8.0~241).  Since then the optimization was only left in
`--build-and-test` mode, likely by accident, where it makes little
difference.  Remove it to simplify the code.

Also drop the `--force-new-ctest-process` option, originally added by
commit 9255e40d81 (ENH: Add a way to force ctest to be a new process,
2004-05-10, v2.4.0~3101), since it no longer does anything.
2024-10-16 14:13:46 -04:00
Brad King
323fb2a662 Merge topic 'unity-relative-paths'
84996a65aa Unity: Add option to use relative paths for unity files

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !9874
2024-10-16 09:03:30 -04:00
Brad King
36f6fa8737 Merge topic 'doc-rel-3.31'
315a8f88cc Help: Add 3.31 release note for file(MAKE_DIRECTORY)'s RESULT option

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9904
2024-10-15 13:57:27 -04:00
Brad King
98ccd8800a Merge topic 'doc-rel-3.31' into release-3.31
315a8f88cc Help: Add 3.31 release note for file(MAKE_DIRECTORY)'s RESULT option

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9904
2024-10-15 13:57:26 -04:00
Brad King
0eb871b856 Merge topic 'doc-rel-3.29'
0e81c12483 Help: Add 3.29 release note for try_compile LINKER_LANGUAGE option

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9905
2024-10-15 13:54:55 -04:00
Brad King
c7e27f02e8 Merge topic 'doc-rel-3.29' into release-3.31
0e81c12483 Help: Add 3.29 release note for try_compile LINKER_LANGUAGE option

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9905
2024-10-15 13:54:54 -04:00
Brad King
0e81c12483 Help: Add 3.29 release note for try_compile LINKER_LANGUAGE option
In commit 0f37000304 (try_{compile,run}: add LINKER_LANGUAGE option,
2023-10-12, v3.29.0-rc1~567^2) a release note was accidentally added in
the wrong directory and so was not included in the 3.29 release notes.
2024-10-15 13:30:04 -04:00
Peter Kokot
315a8f88cc Help: Add 3.31 release note for file(MAKE_DIRECTORY)'s RESULT option
In commit 95323c90a1 (file(MAKE_DIRECTORY): Add optional RESULT keyword
to capture failure., 2024-06-16, v3.31.0-rc1~414^2) the release note was
added in the wrong directory so it was not gathered for the 3.31 release.

Fixes: #26377
2024-10-15 13:27:30 -04:00
James Moore
84996a65aa Unity: Add option to use relative paths for unity files
Add a target property that will be read on unity file generation to
attempt to use a relative path to the source file from the CMake Source
Directory or the generated unity file. Additionally add the CMake
Source Directory and the CMake Binary directory to the include path of
the generated unity files.

Closes: #26352
2024-10-15 09:44:18 -07:00
Brad King
9b2fcb7779 Merge topic 'LINKER-prefix-support-for-libraries'
aba1c9d172 target_link_libraries: Add support for the LINKER: prefix

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9882
2024-10-12 10:30:12 -04:00
Marc Chevrier
aba1c9d172 target_link_libraries: Add support for the LINKER: prefix
It is now possible to use the `LINKER:` prefix in `LINK_LIBRARIES`
and `INTERFACE_LINK_LIBRARIES` target properties.

Fixes: #26318
2024-10-11 17:54:02 +02:00
Brad King
8bb0281896 Merge topic 'ctest-remove-declarative-script-mode'
267b42bccc CTest: Remove declarative scripting mode

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: scivision <michael@scivision.dev>
Merge-request: !9868
2024-10-11 09:21:48 -04:00
Brad King
df19fcb78b Merge topic 'FindProtobuf-protoc-exe-option'
53717488ea FindProtobuf: Add PROTOC_EXE option to protobuf_generate
f4dc24b527 FindProtobuf: Clarify protobuf_generate options documentation

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9888
2024-10-11 09:18:51 -04:00
Brad King
dc48a4556b Merge topic 'post-rel-dev'
3a96346a3f Configure CMake itself with policies through CMake 3.30
10f8c6a274 export: Increase maximum policy version in exported files to 3.30
fe6cf6d28c Add deprecation warnings for policies CMP0139 and below
b51e6a0be7 Help/dev: Update export policy version in post-release development

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9892
2024-10-11 09:16:14 -04:00
Jonathan Ringer
53717488ea FindProtobuf: Add PROTOC_EXE option to protobuf_generate
This option was added to protobuf's upstream cmake package.
2024-10-10 11:39:19 -04:00
Daniel Pfeifer
267b42bccc CTest: Remove declarative scripting mode 2024-10-09 22:30:58 +02:00
Brad King
28a0aa68b3 Merge topic 'doc-dev-maint'
b866eb8458 Help/dev: Add maintainer guide release branch creation to use a MR for CI

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9891
2024-10-09 15:26:38 -04:00
Brad King
b51e6a0be7 Help/dev: Update export policy version in post-release development
Since commit 20fa4ce8d8 (export: Factor out CMake-specific export
generation (2/2), 2024-07-18) the code that needs editing is in a
different method.
2024-10-09 14:31:50 -04:00
Brad King
b866eb8458 Help/dev: Add maintainer guide release branch creation to use a MR for CI
Provide a way to run CI with a new release version number
before merging it.
2024-10-09 11:59:51 -04:00
Brad King
5d4f86326c Begin post-3.31 development 2024-10-09 10:04:17 -04:00
Brad King
801c94085f Help: Drop development topic notes to prepare release
Release versions do not have the development topic section of
the CMake Release Notes index page.
2024-10-09 10:01:05 -04:00
Brad King
aa6bbc3135 Help: Update Sphinx versionadded directives for 3.31 release
Run the script:

    Utilities/Sphinx/update_versions.py --since v3.30.0 --overwrite
2024-10-09 09:32:54 -04:00
Brad King
738cf491d4 Help: Organize and revise 3.31 release notes
Add section headers similar to the 3.30 release notes and move each
individual bullet into an appropriate section.  Revise a few bullets.
2024-10-09 09:32:21 -04:00
Brad King
fae66f4751 Help: Consolidate 3.31 release notes
Run the `Utilities/Release/consolidate-relnotes.bash` script to move
notes from `Help/release/dev/*` into `Help/release/3.31.rst`.
2024-10-09 09:32:02 -04:00
Craig Scott
e5a9ccbcc8 project: Always set <PROJECT-NAME>_* as normal variables
Re-introduce the behavior originally introduced in CMake 3.30.3 by
commit c1ece78d11 (project: non cache <project> prefix variables are
also created, 2024-08-27, v3.30.3~2^2), but this time with a policy for
compatibility.

Issue: #25714
Issue: #26243
2024-10-08 10:07:11 -04:00