Commit Graph

38579 Commits

Author SHA1 Message Date
Brad King
6eab40fa4a Merge topic 'export-empty-args'
2151e5f79d export, install: Improve argument parsing
2e71df0156 export: Explicitly allow empty NAMESPACE
5564c2cd9a cmArgumentParser: Improve bad argument handling
3f38f9511b cmArgumentParser: Add support for MaybeEmpty<std::string>
1ec7201558 cmStringAlgorithms: Add cmStripWhitespace
2ca58c5ac9 set: Improve error message consistency

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11472
2025-12-10 09:37:52 -05:00
Brad King
291e536a55 Merge topic 'use-more-cmStrCat'
fe173b68f0 Source: Use cmStrCat in place of string addition

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Alex Turbov <i.zaufi@gmail.com>
Merge-request: !11486
2025-12-10 09:34:48 -05:00
Kitware Robot
a0b446eb2f CMake Nightly Date Stamp 2025-12-10 00:06:46 -05:00
Matthew Woehlke
2151e5f79d export, install: Improve argument parsing
Modify the `export(EXPORT)` and `install(PACKAGE_INFO)` commands to
actually enforce that certain arguments must be non-empty. With respect
to `export`, this is mainly targeted at CPS export, but ends up
affecting all flavors of `export(EXPORT)` because that is the level at
which argument parsing is performed.

Also, add unit tests to verify that the new rejection of arguments with
missing or empty values is working, update the existing tests due to
changes in error reporting, and remove no-longer-needed manual
validation of an empty `PACKAGE_INFO` argument.
2025-12-09 13:37:01 -05:00
Matthew Woehlke
2e71df0156 export: Explicitly allow empty NAMESPACE
Modify argument handling in `HandleExportMode` to explicitly allow an
empty `NAMESPACE`. In practice, this was already the case because we
weren't actually checking for the parsing errors that would cause the
`NonEmpty` decoration to reject an empty value, but we want to be able
to do that going forward, and changing the behavior for `NAMESPACE`
would potentially break legitimate uses. (In particular, one of our unit
tests relies on the current behavior.)
2025-12-09 13:37:01 -05:00
Matthew Woehlke
5564c2cd9a cmArgumentParser: Improve bad argument handling
Tweak ArgumentParser::ParseResult to store errors as a set, rather than
concatenating them. Add a new method that a) also optionally checks for
unknown arguments, and b) reports errors using the `SetError` method of
`cmExecutionStatus`, which allows callers to `return false`, which is
less surprising when an error occurs. This improves consistency at call
sites, reduces duplication by moving the common task of complaining
about unknown arguments to a reusable method, and also produces somewhat
more concise messages in the case that multiple errors occurred.

Note that, for some reason, the parser is sometimes generating duplicate
errors, hence the use of a set rather than a list.
2025-12-09 13:37:01 -05:00
Brad King
3f38f9511b cmArgumentParser: Add support for MaybeEmpty<std::string>
Add it for completeness, though it is the same as plain `std::string`.
Also extend the SunPro/EDG workaround to cover this type.
2025-12-09 13:37:01 -05:00
Brad King
e395f59159 Merge topic 'graphviz-dedup-dot'
6917f6d453 Graphviz: De-duplicate node names in dot file

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11485
2025-12-09 11:26:05 -05:00
Brad King
1a50c29616 Merge topic 'genex-colon-parse-fix'
41c69f8c87 cmGeneratorExpression: Fix parser for adjacent colon and comma

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11481
2025-12-09 11:11:52 -05:00
AJIOB
fe173b68f0 Source: Use cmStrCat in place of string addition 2025-12-09 11:06:59 -05:00
Wang Xinyu
6917f6d453 Graphviz: De-duplicate node names in dot file 2025-12-09 11:00:53 -05:00
Kitware Robot
c8abf28c38 CMake Nightly Date Stamp 2025-12-09 00:06:30 -05:00
Matthew Woehlke
1ec7201558 cmStringAlgorithms: Add cmStripWhitespace
Add a utility function to strip whitespace from a `string_view`. This is
identical to the existing `cmTrimWhitespace`, but does not allocate a
new `string`, instead returning the result as another `string_view`.
2025-12-08 14:40:50 -05:00
Matthew Woehlke
2ca58c5ac9 set: Improve error message consistency
There are exactly two places that use `ParseResult::AddKeywordError`:
the parser itself, and the `set` command. Adjust the format of the
message generated by the latter to be consistent with the former.
2025-12-08 14:40:50 -05:00
Brad King
ad7afb6455 Merge topic 'fix-27422'
d4d2a6a19d cli tar: support compression level

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !11479
2025-12-08 10:19:55 -05:00
Brad King
1b2210cdf0 Merge topic 'pdb-locations'
cd92cbae7e MSVC: Restore pre-4.2 default PDB paths

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11475
2025-12-08 10:17:37 -05:00
Brad King
67ed00a1ca Merge topic 'fastbuild-pdb-quoting'
6f1fe8853d FASTBuild: Fix default MSVC compiler PDB paths
dff020e679 FASTBuild: Add internal helper for intermediate directory creation

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Eduard Voronkin <edward.voronkin@gmail.com>
Merge-request: !11483
2025-12-08 10:15:56 -05:00
Brad King
9c7a261d78 Merge topic 'vs2019-v142'
8c332a3c7f VS: Restore support for VS 2019 with toolset v142 versions before 14.29

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11480
2025-12-08 09:58:57 -05:00
Kitware Robot
6f6a438710 CMake Nightly Date Stamp 2025-12-08 00:07:47 -05:00
Craig Scott
c0eb0ad5ef Merge topic 'instrumentation-post-workflow'
956d36d3cd instrumentation: Add postCMakeWorkflow hook

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Acked-by: Alex Overchenko <aleksandr9809@gmail.com>
Merge-request: !11450
2025-12-07 19:27:41 -05:00
Kitware Robot
eb7a8f8e85 CMake Nightly Date Stamp 2025-12-07 00:08:31 -05:00
Kitware Robot
0439baaad1 CMake Nightly Date Stamp 2025-12-06 00:11:15 -05:00
Ben Boeckel
cd92cbae7e MSVC: Restore pre-4.2 default PDB paths
Only force a compile PDB directory when PCH reusing.  This avoids
affecting behavior in unrelated situations.  However, PCH reuse requires
a known path so that the `copy_idb_pdb` logic can accurately generate
the copy instructions so that MSVC's rule that PCH use must use the same
PDB file can be adhered to.

Also revert the test suite adaptations from commit f78f592b78 (pchreuse:
defer target existence enforcement to generation time, 2025-06-16,
v4.2.0-rc1~481^2~4).

Fixes: #27401
2025-12-05 18:10:26 -05:00
Brad King
6f1fe8853d FASTBuild: Fix default MSVC compiler PDB paths
When we pass a PDB output directory to the compiler in a path that
requires quoting, the trailing backslash must be escaped to be parsed
correctly by the compiler, e.g., `cl /Fd"path\with space\\"`.  However,
`fbuild` does not parse this correctly when extracting `/Fd`.  Work
around that bug by using a trailing forward slash in quotes instead.
2025-12-05 18:02:30 -05:00
Brad King
dff020e679 FASTBuild: Add internal helper for intermediate directory creation 2025-12-05 15:10:09 -05:00
Martin Duffy
41c69f8c87 cmGeneratorExpression: Fix parser for adjacent colon and comma
Update ParseGeneratorExpression to allow correct parsing of adjacent
colon and comma separators in either order.

Fixes: #27324
2025-12-05 14:12:31 -05:00
Brad King
8c332a3c7f VS: Restore support for VS 2019 with toolset v142 versions before 14.29
Since commit 7db3dbddb2 (VS: Suppress MSBuild default flags not
specified by project or user, 2025-06-02, v4.1.0-rc1~69^2) we suppress
the `-Zc:inline` default flag when the project/user does not specify it.
That triggers an apparent bug in VS 2019 with v142 toolset versions
before 14.29 in which MSBuild fails when both `-Zc:inline` and `-nologo`
are suppressed.  This happens when `CMAKE_VERBOSE_MAKEFILE` is enabled,
such as in `try_compile` projects like our builtin compiler inspection.

Since `-nologo` is incidental, avoid suppressing it if `-Zc:inline` is
also suppressed.  Limit this workaround to relevant toolset versions.

Fixes: #27439
2025-12-05 12:47:53 -05:00
AJIOB
d4d2a6a19d cli tar: support compression level
Fixes #27422
2025-12-05 20:00:24 +03:00
Brad King
9149ac3f37 Merge topic 'fix-27420'
4fdfa0db1a file(ARCHIVE_CREATE): support multithreading compression
cbf71b21b2 cli tar: support multithreading compression

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !11460
2025-12-05 09:04:58 -05:00
Kitware Robot
7433a9efc4 CMake Nightly Date Stamp 2025-12-05 00:06:59 -05:00
Kitware Robot
3986f4b79e CMake Nightly Date Stamp 2025-12-04 00:07:30 -05:00
Brad King
e4737d1c4a Merge topic 'cli-tar-lzma'
5b87a5d53e cli tar: implement LZMA support

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !11465
2025-12-03 16:26:20 -05:00
Brad King
37e8c92172 Merge topic 'revert-pdb-compile-filename-setting'
809e387a13 cmGeneratorTarget: Revert "always provide a compile PDB filename"

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11471
2025-12-03 16:24:27 -05:00
Brad King
7e65afff2f Merge topic 'revert-pdb-compile-filename-setting' into release-4.2
809e387a13 cmGeneratorTarget: Revert "always provide a compile PDB filename"

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11471
2025-12-03 16:24:25 -05:00
Martin Duffy
956d36d3cd instrumentation: Add postCMakeWorkflow hook
Issue: #27414
2025-12-03 16:00:37 -05:00
AJIOB
4fdfa0db1a file(ARCHIVE_CREATE): support multithreading compression
Relates: #27420
2025-12-03 02:45:30 -05:00
AJIOB
cbf71b21b2 cli tar: support multithreading compression
Fixes: #27420
2025-12-03 02:45:30 -05:00
Kitware Robot
93aa407481 CMake Nightly Date Stamp 2025-12-03 00:10:34 -05:00
Brad King
809e387a13 cmGeneratorTarget: Revert "always provide a compile PDB filename"
Revert commit 1a8712d31a (cmGeneratorTarget: always provide a compile
PDB filename, 2025-11-24).  It changed our long-standing conditions for
when a naming a compiler-generated `.pdb` file is explicitly named.
It also caused some `BuildDepends` and `RunCMake.BuildDepends` failures
in VS builds that went unnoticed before merging.

Issue: #27401
2025-12-02 17:08:03 -05:00
Craig Scott
c98bec6ae6 Merge topic 'fileapi-compilerargs'
71a4e34d97 fileAPI: Expose CMAKE_<LANG>_COMPILER_ARG1
1e02926c9a fileAPI: Refactor toolchains schema to prepare for new version
3caa572c05 fileAPI: Output more info for test failures

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11419
2025-12-02 16:27:43 -05:00
Brad King
d6b76cdc87 Merge topic 'cps-validate-version'
cc508826b4 CPS: Validate package version
fb66a14da2 cmExportFileGenerator: Allow other message types

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !11458
2025-12-02 15:43:42 -05:00
Christian Walther
71a4e34d97 fileAPI: Expose CMAKE_<LANG>_COMPILER_ARG1
Compiler arguments coming from CC environment variables or multi-element
CMAKE_<LANG>_COMPILER variables set by toolchain files were previously not
exposed in the file API. Among other possible problems, this caused clients
to determine wrong system include paths and built-in preprocessor macros by
calling the compiler without these important arguments.

This is fixed by adding an optional "commandFragment" attribute to the
compiler description in the `toolchains` object, containing these arguments
as a command line fragment. This is already the form in which they are
internally stored in the CMAKE_<LANG>_COMPILER_ARG1 variable, so all that is
required is adding this variable to the set of exported variables, besides
some logic to omit it if empty.

Issue: #22568
2025-12-03 07:34:53 +11:00
Brad King
7a7028eb48 Merge topic 'improve-subcommand-message-consistency'
a1a75f4008 cmake_file_api: Improve error message consistency
61143d7cef export: Improve error message consistency

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !11470
2025-12-02 15:32:01 -05:00
Brad King
e12206b738 Merge topic 'improve-subcommand-message-consistency' into release-4.2
a1a75f4008 cmake_file_api: Improve error message consistency
61143d7cef export: Improve error message consistency

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !11470
2025-12-02 15:31:59 -05:00
Brad King
a294c9ac1a Merge topic 'fix-cps-arg-parsing'
41b6b07527 cmExportCommand: Fix PACKAGE_INFO argument parsing

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11459
2025-12-02 15:20:14 -05:00
Brad King
dd96576e15 Merge topic 'fix-cps-arg-parsing' into release-4.2
41b6b07527 cmExportCommand: Fix PACKAGE_INFO argument parsing

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11459
2025-12-02 15:20:12 -05:00
AJIOB
5b87a5d53e cli tar: implement LZMA support
Fixes: #27433
2025-12-02 10:44:49 +03:00
Kitware Robot
b65b7687cc CMake Nightly Date Stamp 2025-12-02 00:08:11 -05:00
Matthew Woehlke
a1a75f4008 cmake_file_api: Improve error message consistency
Remove literal text "subcommand" from error messages. This addresses the
other use of this and improves consistency (see preceding commit). Also,
omit some unnecessary articles, which also improves consistency.
2025-12-01 15:52:36 -05:00
Matthew Woehlke
61143d7cef export: Improve error message consistency
Remove literal text "subcommand" from error messages. Most other
commands report errors like "<command> <subcommand> <message>", where
the message does not include the literal text "subcommand". The `export`
command was one of two exceptions to this.
2025-12-01 15:41:18 -05:00