Commit Graph
38369 Commits
Author SHA1 Message Date
Brad King 397d4b796f Merge topic 'sarif-path-encoding' into release-4.2
2eef2baf93 cmake: Fix SARIF diagnostics output path encoding on Windows

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11538
2025-12-20 09:30:57 -05:00
Brad King 2eef2baf93 cmake: Fix SARIF diagnostics output path encoding on Windows
Avoid using `filesystem::path` to hold the output path.  It performs
encoding conversions that violate our internal UTF-8 encoding.

Fixes: #27471
Issue: #27472
2025-12-19 14:33:42 -05:00
Brad King b6defd96c9 VS: Restore subsystem link flag for DLLs
In commit 99d09ec45a (VS: Suppress MSBuild default link flags not
specified by project or user, 2025-06-17, v4.1.0-rc1~6^2) we removed our
default `-subsystem:...` link flag from `SHARED` and `MODULE` libraries
in Visual Studio generators for consistency with command-line generators.
However, unlike other flag suppressions for #27004, this change did not
just suppress MSBuild defaults, but actually changed flags the generator
was previously adding itself.

For the linker subsystem flag, consistency across generators should
perhaps achieved by adding the flag in other generators instead of
removing it from Visual Studio generators.  Restore the previous
behavior pending further investigation.

Issue: #27466
Fixes: #27464
2025-12-17 17:41:36 -05:00
Brad King 5ffebf3b67 Merge topic 'linux32-system-libarchive' into release-4.2
cea7f7fc32 Linux: Do not force 64-bit `time_t` on 32-bit archs with system libarchive
16cc3e25d4 Utilities: Select bundled or external dependencies very early

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !11505
2025-12-12 09:44:20 -05:00
Brad King 1c3d9cdcdf Merge topic 'stdio-ctrl-c' into release-4.2
c55dfbf656 StdIo: Restore compilation on 32-bit MinGW

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11503
2025-12-12 09:42:44 -05:00
Brad King 16cc3e25d4 Utilities: Select bundled or external dependencies very early 2025-12-11 14:40:16 -05:00
Brad King c55dfbf656 StdIo: Restore compilation on 32-bit MinGW
In commit e419429616 (StdIo: Restore Windows Console I/O modes on
Ctrl-C, 2025-11-26, v4.1.4~4^2) we relied on the compiler to generate a
lambda with an `operator()` for each calling convention.  MSVC does
this, but the GNU compiler for MinGW does not seem to.
2025-12-11 10:52:18 -05:00
Brad King 485f11a780 CMake 4.2.1 2025-12-08 13:33:58 -05:00
Brad King 892fad3d23 CMake 4.1.4 2025-12-08 11:30:41 -05:00
Brad King cb16ce6503 Merge topic 'pdb-locations' into release-4.2
cd92cbae7e MSVC: Restore pre-4.2 default PDB paths

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11475
2025-12-08 10:17:35 -05:00
Brad King 9f1953f1b4 Merge topic 'fastbuild-pdb-quoting' into release-4.2
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:55 -05:00
Brad King 7d113b9b84 Merge topic 'vs2019-v142' into release-4.2
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:55 -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
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
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
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
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 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
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
Brad King 121234b968 Merge topic 'fix-cps-export-definitions' into release-4.1
b2ca9fba8b CPS: Fix exporting definitions in CMake 4.1

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11469
2025-12-01 13:59:36 -05:00
Brad King d79bcf219c Merge topic 'stdio-ctrl-c' into release-4.2
e419429616 StdIo: Restore Windows Console I/O modes on Ctrl-C

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !11457
2025-12-01 12:29:49 -05:00
Matthew Woehlke b2ca9fba8b CPS: Fix exporting definitions in CMake 4.1
Backport commit 37b15eda3b (CPS: Fix exporting definitions, 2025-11-21)
to CMake 4.1.

Export compile definitions to CPS using the correct attribute name.

Fixes: #27403
2025-12-01 12:15:51 -05:00
Matthew Woehlke 41b6b07527 cmExportCommand: Fix PACKAGE_INFO argument parsing
While I'm unsure about why `cmPackageInfoArguments` was originally
written the way it was, in its current form, the way command sub-parsers
work, the parser never considers arguments associated with a sub-parser
if the sub-parser keyword isn't present. This means that the arguments
associated with `cmPackageInfoArguments` are treated as unknown, and the
logic to reject them being set if `PACKAGE_INFO` is not present can
never actually execute. Therefore, remove it, and remove the associated
(and effectively useless) `enable` argument to its `Check` method.

Instead, ensure that the package name is actually specified. The only
case in which the parser will create the `optional` associated with the
sub-parser arguments is if the relevant keyword (i.e. `PACKAGE_INFO`) is
present. However, while the associated value is `NonEmpty`, the way we
are using the parser does not actually enforce this, and it looks like a
correct fix may be a breaking change. Therefore, enforce it manually for
now.
2025-12-01 11:22:58 -05:00
Brad King e419429616 StdIo: Restore Windows Console I/O modes on Ctrl-C
Extend commit fb3e7825f3 (StdIo: Restore Windows Console I/O modes on
exit, 2025-05-23, v4.1.0-rc1~114^2) to cover termination by Ctrl-C.

Fixes: #27427
2025-11-26 15:18:03 -05:00
Brad King 27c73ff457 Merge topic 'pdb-compile-filename-setting' into release-4.2
1a8712d31a cmGeneratorTarget: always provide a compile PDB filename

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11445
2025-11-26 10:42:33 -05:00
Brad King c379978e0d Merge topic 'fix-fileset-export' into release-4.2
63fc96d856 export: Fix exporting targets with multiple file sets

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !11449
2025-11-26 10:36:16 -05:00
Brad King cea034594f Merge topic 'emscripten-try_run' into release-4.2
a308ea38f3 Emscripten: Fix try_run to run the `.js` file and not the adjacent `.wasm`
ad91bc558a ci: Make node available to Emscripten tests
27cc5d58bf Tests/RunCMake/Emscripten: Add tests covering try_compile COPY_FILE

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11451
2025-11-26 10:00:08 -05:00
Brad King 0f0b06582e Merge topic 'fileapi-order-deps-undefined-target' into release-4.2
0f1d773bd7 fileAPI: Silently ignore non-target order dependencies

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !11447
2025-11-26 09:47:57 -05:00
Brad King a308ea38f3 Emscripten: Fix try_run to run the .js file and not the adjacent .wasm
Since commit 96d9b94a98 (Emscripten: Add platform modules, 2025-05-16,
v4.2.0-rc1~607^2~3) we've considered the `.wasm` to be the `try_compile`
output because we need `COPY_FILE` to get it for extracting `INFO:`
strings during our inspection checks.  This breaks `try_run` because
`node`, used via `CMAKE_CROSSCOMPILING_EMULATOR`, expects the `.js`.
Revert to considering the `.js` to be the primary output file, but
switch to the `.wasm` in `COPY_FILE`'s implementation.

Fixes: #27421
2025-11-25 15:45:46 -05:00
Vito Gamberini 63fc96d856 export: Fix exporting targets with multiple file sets
Reported-By: Eugene Shalygin <eugene.shalygin@gmail.com>
Fixes: #27412
2025-11-25 12:47:24 -05:00
Brad King 32776b4cc6 Merge topic 'cxx-atomic' into release-4.2
37171d9db0 Source: Improve detection of Linux architectures requiring explicit libatomic

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11441
2025-11-25 11:00:50 -05:00
Craig Scott 0f1d773bd7 fileAPI: Silently ignore non-target order dependencies
Non-target order dependencies should be caught as project errors.
Prior to f38f325e08 (fileAPI: Add direct dependencies to target
codemodel files, 2025-10-04), they were silently ignored, but that
change crashed on such cases. Restore the old behavior of silently
ignoring such project errors and prevent the crash.

Fixes: #27415
2025-11-25 20:35:03 +11:00
Ben Boeckel 1a8712d31a cmGeneratorTarget: always provide a compile PDB filename
As of commit f78f592b78 (pchreuse: defer target existence enforcement to
generation time, 2025-06-16) via !10887, the compile PDB directory is
always set. Some codepaths used the total computation as a signal to
build the path themselves. But the filename was not specified, so the
resulting filename ended up changing. Always create the filename as
expected.

Fixes: #27401
2025-11-24 22:43:52 -05:00
Brad King 37171d9db0 Source: Improve detection of Linux architectures requiring explicit libatomic
Extend commit fa3c4b6dbf (Source: Link libatomic when needed on any
Linux architecture, 2023-08-24, v3.27.5~9^2) to decide based on the
architecture targeted by the compiler, known since CMake 4.1.
Use `CMAKE_SYSTEM_PROCESSOR` only as a fallback for older versions.

Fixes: #27406
2025-11-24 11:29:15 -05:00
Brad King 976e8ef053 Merge topic 'fix-cps-export-definitions' into release-4.2
37b15eda3b CPS: Fix exporting definitions

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !11436
2025-11-22 18:52:58 -05:00
Matthew Woehlke 37b15eda3b CPS: Fix exporting definitions
Export compile definitions to CPS using the correct attribute name.

Fixes: #27403
2025-11-21 15:32:41 -05:00
Brad King a0c7f1d29c CMake 4.2.0 2025-11-19 08:57:10 -05:00
Brad King 06178da668 VS: Add include_external_msproject detection of .wapproj type
It is a Windows Application Packaging Project.

Issue: #27392
2025-11-18 11:18:17 -05:00
Brad King b9ce07b85b VS: Add SLNX project types
Extend commit e6aa7742b0 (VS: Generate .slnx files for VS 2026,
2025-09-17, v4.2.0-rc1~151^2) to add the `Type=` attribute on SLNX
`<Project>` elements.

Fixes: #27392
2025-11-18 11:10:22 -05:00
Brad King 5961f5f3bc CMake 4.1.3 2025-11-18 09:55:48 -05:00
Brad King 5517be2bf1 CMake 4.0.5 2025-11-18 09:16:12 -05:00
Brad King 9c091c7d17 CMake 4.2.0-rc4 2025-11-17 10:32:25 -05:00
Brad King 38e86c8ea4 Merge topic 'vs-slnx' into release-4.2
70ed720232 VS: Add SLNX default startup project

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11420
2025-11-15 09:01:48 -05:00
Brad King 9e38d74019 Merge topic 'fbuild_fix_pch' into release-4.2
878d154322 FASTBuild: fix multi-language PCHs

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11404
2025-11-15 08:59:03 -05:00
Brad King 70ed720232 VS: Add SLNX default startup project
At the time of commit e6aa7742b0 (VS: Generate .slnx files for VS 2026,
2025-09-17, v4.2.0-rc1~151^2), the VS 18 Insiders edition did not offer
support for specifying a default startup project in `.slnx` files.
This has since been added, so use it.

Fixes: #27387
2025-11-14 11:03:57 -05:00
Brad King ef89890a1a Merge topic 'vs-slnx' into release-4.2
7c284f4278 VS: Fix SLNX with multiple solution-to-project configuration mappings

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11415
2025-11-14 09:46:31 -05:00
Brad King 7c284f4278 VS: Fix SLNX with multiple solution-to-project configuration mappings
Filter each mapping to apply only to its intended solution-wide config.

Fixes: #27385
2025-11-13 12:01:51 -05:00