Commit Graph

12436 Commits

Author SHA1 Message Date
Jens Carl e71396c8db CPack/NuGet: Enable the generation of NuGet symbol package(s)
Enable the generation of NuGet symbol package(s) with the new variable
`CPACK_NUGET_SYMBOL_PACKAGE`. CPack generates then normal nuget package
(*.nupkg) and a symbol nuget package (*.snupkg). The new generate
package contains PDB files.

Fixes: #26976
2025-06-05 10:41:22 -04:00
Brad King 81bcc806d3 Merge topic 'allow-assigning-argument-helpers'
5eec48ee40 cmArgumentParser: Simplify assignment of marker types

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10845
2025-06-02 09:18:38 -04:00
Brad King 91cdfe6676 Merge topic 'linker-launcher'
cdf2a36f48 HIP: Add support for [CMAKE_]HIP_LINKER_LAUNCHER
77312cc636 CUDA: Add support for [CMAKE_]CUDA_LINKER_LAUNCHER

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10847
2025-06-02 09:02:46 -04:00
Brad King 457bb06f51 Merge topic 'test-tutorial'
2d712a760e Tests: Convert Tutorial tests to RunCMake infrastructure

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10843
2025-06-02 09:01:01 -04:00
Matthew Woehlke 5eec48ee40 cmArgumentParser: Simplify assignment of marker types
Explicitly allow argument markers to be assigned. Make use of this in
parsing. This simplifies working with these types, by allowing them to
be assigned from the underlying types using simple `a = b` syntax,
rather than requiring gymnastics to access the underlying assignment
operations. It also makes assignment more consistent with
initialization.
2025-05-30 11:10:41 -04:00
Maximilian Sander cdf2a36f48 HIP: Add support for [CMAKE_]HIP_LINKER_LAUNCHER
`CMAKE_<LANG>_LINKER_LAUNCHER` and `<LANG>_LINKER_LAUNCHER` are
already support for C, CXX, CUDA, OBJC, OBJCXX, and Fortran.  Add HIP.

Closes: #26967
2025-05-30 10:05:46 -04:00
Maximilian Sander 77312cc636 CUDA: Add support for [CMAKE_]CUDA_LINKER_LAUNCHER
`CMAKE_<LANG>_LINKER_LAUNCHER` and `<LANG>_LINKER_LAUNCHER` are
already support for C, CXX, OBJC, OBJCXX, and Fortran.  Add CUDA.

Issue: #26967
2025-05-30 10:00:18 -04:00
Brad King 2d712a760e Tests: Convert Tutorial tests to RunCMake infrastructure
RunCMake matches output more robustly than `PASS_REGULAR_EXPRESSION`,
and provides more details on failure.
2025-05-30 09:54:39 -04:00
Brad King 26460454b7 Merge topic 'patch-CheckCompilerFlag'
ac67631b02 Check{,C,CXX,Fortran,OBJC,OBJCXX}CompilerFlag: Update documentation

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10840
2025-05-30 09:35:17 -04:00
Brad King a385cafc59 Merge topic 'renesas-compiler'
514135f563 Renesas: Add support for Renesas compilers

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10669
2025-05-29 13:13:08 -04:00
Brad King 1c8fa92921 Merge topic 'windows-module-def-per-lang'
8b710d8264 Linker: Generate per-language module -DEF: flags on Windows

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Markus Mützel <markus.muetzel@gmx.de>
Merge-request: !10836
2025-05-29 10:11:13 -04:00
Peter Kokot ac67631b02 Check{,C,CXX,Fortran,OBJC,OBJCXX}CompilerFlag: Update documentation
- Added intro code blocks showing how to include these modules.
- Used word "command" instead of "macro".
- Added examples sections.
- Updated and synced descriptions of commands and arguments.
- Added a rubric title for variables that affect the checks.
- Listed CMAKE_TRY_COMPILE_TARGET_TYPE variable in the rubric together
  with CMAKE_REQUIRED_* variables.
- Added link to CheckCompilerFlag module in the target_compile_options()
  docs.
- Used lowercase style for check_fortran_compiler_flag() command.
- Added a link to `$<COMPILE_LANGUAGE:languages>` generator expression
  so it can be linked from other pages (See commit
  2e37a20f02 for more info on the initial
  style used).
- Fixed the GENEX_NOTE inclusion (starting with line after the 2nd line)
  where part of the sentence was rendered in the output.
2025-05-29 00:16:39 +02:00
Brad King 8b710d8264 Linker: Generate per-language module -DEF: flags on Windows
With IntelLLVM on Windows, we link using the compiler driver.
With MSVC on Windows, we invoke the linker directly.  If we
use both in a single build tree, for separate languages,
the value of `CMAKE_LINK_DEF_FILE_FLAG` conflicts.  Add a
per-language `CMAKE_<LANG>_LINK_DEF_FILE_FLAG` variable to
avoid the conflict.  Preserve the language-agnostic variable
for compatibility with projects that reference it.

Fixes: #26005
2025-05-28 13:48:26 -04:00
Brad King 39da33ae81 CMakeDetermineVSServicePack: Add policy to remove this module
It has been documented as deprecated since CMake 3.0.
2025-05-28 09:47:06 -04:00
Hirofumi Nakamura 514135f563 Renesas: Add support for Renesas compilers
- CC-RX for RX architecture
- CC-RL for RL78 architecture
- CC-RH for RH850 architecture

Closes: #26880
2025-05-28 09:22:38 -04:00
Brad King bc9785a12b Merge topic 'linker-launcher'
d176a8c5ce Fortran: Add support for [CMAKE_]Fortran_LINKER_LAUNCHER

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10831
2025-05-28 09:17:17 -04:00
Brad King 8ae87de5f3 Merge topic 'patch-check-source-compiles'
e6f9ebbbe1 Check{,C,CXX,OBJC,OBJCXX,Fortran}SourceCompiles: Update documentation

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10824
2025-05-28 08:51:50 -04:00
Maximilian Sander d176a8c5ce Fortran: Add support for [CMAKE_]Fortran_LINKER_LAUNCHER
`CMAKE_<LANG>_LINKER_LAUNCHER` and `<LANG>_LINKER_LAUNCHER` are
already support for C, CXX, OBJC, and OBJCXX.  Add Fortran.

Closes: #26951
2025-05-27 11:00:54 -04:00
Brad King 2cf735a5dc Merge topic 'target-file-dir-refactoring'
c95a8348ce cmLocalGenerator: add an override for CMakeFiles-using paths
35d32b8741 cmLocalGenerator: move the `CMakeFiles` subdir from the target to output root
bc19e42461 generators: use `GetObjectOutputRoot` to compute target directories
b1d9a5313c cmLocalGenerator: add a `GetObjectOutputRoot` method
b82a74d918 generators: use GetSupportDirectory() in more places
36f85ee0cc cmGeneratorTarget: query the local generator for the target directory
ff5d7bc301 cmLocalXCodeGenerator: use a per-target directory
aafd771529 cmNinjaTargetGenerator: use `GetObjectFileDir` where possible
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10812
2025-05-27 09:40:42 -04:00
Peter Kokot e6f9ebbbe1 Check{,C,CXX,OBJC,OBJCXX,Fortran}SourceCompiles: Update documentation
Changes:

- Added intro code blocks showing how to include these modules.
- Added examples sections.
- Used "command" instead of "macro".
- Commands sections added to have a clearer overview of the modules at
  first encounter.
- Reworded commands arguments a bit.
- Added a rubric title for variables that affect the checks.
- CheckFortranSourceCompiles: Added CMake version when SRC_EXT option
  was introduced.
- Listed CMAKE_TRY_COMPILE_TARGET_TYPE variable in the rubric together
  with CMAKE_REQUIRED_* variables and added an include RST file for it.
- Used lowercase style for check_fortran_source_compiles().
2025-05-26 02:49:32 +02:00
Brad King 2bd60d2d2f Merge topic 'swift-module-nested-structure'
1711e86d6c Swift: Generate nested swift modules in build dir
b36175abdb Swift: Detect module triple from compiler

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10664
2025-05-23 08:23:28 -04:00
Ben Boeckel 9847dbb222 Tests/InstallParallel: unset NINJA_STATUS
The install tests check that the output matches content including the
"status" portion of the output. Unset the variable to avoid leakage from
development environments.
2025-05-22 16:02:49 +02:00
Brad King 6be0c6d26a Merge topic 'astgrep-cmstrcat'
557c44b93e cmStrCat: use character literals where possible
23779057fd cmStrCat: combine neighboring arguments where possible
483d13daf4 ast-grep: add a rule to turn strings into characters
61743471d9 ast-grep: add a rule to find adjacent string literals in cmStrCat calls

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !10790
2025-05-22 08:47:15 -04:00
Brad King 80282f57a9 Merge topic 'windows-export-no-operators'
607d9cf561 WINDOWS_EXPORT_ALL_SYMBOLS: Do not export C++ operators declared extern "C"
8f8b2e9429 bindexplib: Truncate short symbol names on first embedded null-terminator

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10791
2025-05-22 08:31:38 -04:00
Evan Wilde 1711e86d6c Swift: Generate nested swift modules in build dir
The nested Swift module structure is recommended for Swift projects.
This structure has an outer directory called
`<Swift_MODULE_NAME>.swiftmodule` that contains generated files for the
interface. The binary swift modules, textual swift interface, and other
supplemental outputs that make up the interface to a Swift library all
go in this outer directory with the Swift module triple as the filename
followed by the appropriate file extension based on what that file
contains.

Issue: #19284
2025-05-21 10:19:58 -07:00
Brad King fc9e9d1196 Merge topic 'automoc-specific-include-dirs'
39677f4cc6 AUTOMOC: Add option to specify moc include directories explicitly

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Acked-by: Osyotr <zhenchik35026@gmail.com>
Merge-request: !10640
2025-05-21 08:46:35 -04:00
Tolga Mizrak 607d9cf561 WINDOWS_EXPORT_ALL_SYMBOLS: Do not export C++ operators declared extern "C"
The pattern `extern "C" { inline bool operator==(...) {} }` appears
in at least one Windows SDK header, `winnt.h`.  Translation units that
instantiate the inline symbol produce object files with a symbol named
just `==`.  Avoid exporting such symbols because the linker will not
recognize them.

Fixes: #24999
2025-05-21 08:07:54 -04:00
Brad King 6aa604ef10 StdIo: Honor NO_COLOR environment variable
This convention is documented by https://bixense.com/clicolors/

Closes: #26458
2025-05-20 11:57:29 -04:00
Brad King 54e775cf22 Merge topic 'stdio-terminal'
a61c60edae Merge branch 'upstream-KWSys' into stdio-terminal
bbe52677df KWSys 2025-05-20 (7e1ee2d9)
d7dbfa22a1 cmSystemTools: Drop unused MakefileColorEcho function
509c424472 StdIo: Replace uses of KWSys Terminal with StdIo::Print
329d755dbd StdIo: Add a Terminal abstraction to print color text
03c97133e8 Makefile: De-duplicate dependency message color code

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10779
2025-05-20 08:40:19 -04:00
David Worley 39677f4cc6 AUTOMOC: Add option to specify moc include directories explicitly
Add a `AUTOMOC_INCLUDE_DIRECTORIES` target property and a corresponding
`CMAKE_AUTOMOC_INCLUDE_DIRECTORIES` variable to initialize it.
This is useful for targets that do not need moc to search include
directories from all dependencies.

Closes: #26414
2025-05-19 21:07:48 -04:00
Brad King b91a376350 Merge topic 'configure-log-find-foo-fixes'
3ac505f79d cmFindCommon: log search path variables
e98381af21 cmFindBase: skip writing `names` and `*_directories` when empty

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !10772
2025-05-19 08:31:17 -04:00
Brad King db4e27eb64 Merge topic 'per-target-license-info'
df3e246bc1 export: Import/export target property for license

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !10424
2025-05-19 08:29:12 -04:00
Brad King 329d755dbd StdIo: Add a Terminal abstraction to print color text
Abstract over VT100 sequences and Windows Console text attributes.

This will replace KWSys Terminal, which does not integrate with C++
streams.

Issue: #26924
2025-05-19 08:16:56 -04:00
Brad King 2647d97ab7 cmext/enum_set: Fix static default construction on older AppleClang versions
AppleClang 8.0 and below do not understand a `= default;` constructor
in static constant default initialization, but do accept `{}`.
2025-05-16 15:03:32 -04:00
Ben Boeckel 557c44b93e cmStrCat: use character literals where possible
Found and replaced using the `cmstrcat-to-char-literal` rule for
`ast-grep`.
2025-05-15 19:12:04 +02:00
Ben Boeckel 3ac505f79d cmFindCommon: log search path variables
No pruning of variables which are not relevant is performed as it would
involve duplication of determining which paths to manage.
2025-05-15 12:24:58 +02:00
Brad King c4b4e26019 Merge topic 'stdio-console'
ce6b0f9e10 ci: Drop unused build artifact
7cf81cdb04 Merge branch 'upstream-KWSys' into stdio-console
ad2d94cb9d KWSys 2025-05-14 (1d72955e)
40b0db5ffb cmConsoleBuf: Remove unused infrastructure
57b24e8fef StdIo: Init() automatically in Console()
3e88020aed StdIo: Replace uses of KWSys ConsoleBuf with StdIo::Console
f9f1f9a8cd StdIo: Add a Windows Console adaptor for cin, cout, and cerr

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10769
2025-05-14 10:11:23 -04:00
Daniel Tierney df3e246bc1 export: Import/export target property for license
Add import/export support and documentation for the SPDX_LICENSE
target property. A target's license can be specified by setting
this property to an SPDX license expression. CMake and CPS-format
export files generated with `export()` or `install()` will
retain the license information. CMake also imports the license
property for imported targets.

Closes: #26706
2025-05-13 17:01:20 -04:00
Brad King f9f1f9a8cd StdIo: Add a Windows Console adaptor for cin, cout, and cerr
On Windows, the only reliable way to read/write Unicode text from/to a
Console is to use `ReadConsoleW` and `WriteConsoleW` and convert from/to
wide-character encoding.  When `cin`, `cout`, and/or `cerr` are attached
to a Windows Console, use a custom C++ `streambuf` to handle the I/O.

This will replace KWSys ConsoleBuf, whose implementation is more complex
to support narrow output streams on Windows non-UTF-8 narrow encodings.
We only need to support UTF-8.

Issue: #26924
2025-05-13 10:35:47 -04:00
Bill Hoffman 9036aa10f3 Experimental: provide useful warning for invalid experimental variable values
Provide a useful warning if an invalid UUID is given in a
`CMAKE_EXPERIMENTAL_` variable.  This can occur if a different CMake
version is used than the one that the feature was implemented with, or
if there is a simple typo in the value.  It should reduce confusion with
the use of experimental features.

Co-authored-by: Brad King <brad.king@kitware.com>
2025-05-13 10:29:58 -04:00
Brad King 348ba701fe Tests/RunCMake/cmake_language: Expect experimental warnings more precisely 2025-05-13 10:21:26 -04:00
Brad King 4802077fb9 Merge topic 'stdio-streams'
d6a1ff59f1 StdIo: Provide metadata about stdin, stdout, stderr streams

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !10759
2025-05-12 09:37:04 -04:00
Brad King d6a1ff59f1 StdIo: Provide metadata about stdin, stdout, stderr streams
Detect the kind of terminal to which they are attached, if any.

Issue: #26924
2025-05-11 09:13:16 -04:00
Ben Boeckel e324478e9b Tests/RunCMake/find_package: test ConfigureLog behaviors (parameters) 2025-05-09 16:46:43 +02:00
Ben Boeckel 632661795d Tests/RunCMake/find_package: test ConfigureLog behaviors (version requests) 2025-05-09 16:46:43 +02:00
Ben Boeckel 3b01fdb761 Tests/RunCMake/find_package: test ConfigureLog behaviors (version skips) 2025-05-09 16:46:43 +02:00
Ben Boeckel 63a90f13c2 Tests/RunCMake/find_package: test ConfigureLog behaviors (nested config)
Test behavior with `Find` module packages which chain to config modules.
This emulates CMake's shipped modules which support config packages
provided by modern upstreams.
2025-05-09 16:46:43 +02:00
Ben Boeckel e594ea8dfb Tests/RunCMake/find_package: test ConfigureLog behaviors (module)
Test behavior with `Find` module packages.
2025-05-09 16:46:43 +02:00
Ben Boeckel 48575b554b Tests/RunCMake/find_package: test ConfigureLog behaviors (config)
This first test covers the basic "find a package with a config file"
behavior. Further tests will cover other behaviors.
2025-05-09 16:46:43 +02:00
Ben Boeckel 8df9819839 find_package: generate find_package-v1 configure log events
Since `find_package` is far more complex than other `find_*` commands,
it gets its own event.

Closes: #24833
2025-05-09 16:46:43 +02:00