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
The latter:
* uses a type-safe representation of text attributes,
* works with `StdIo::Console` to print arbitrary UTF-8 text in color, and
* writes VT100 sequences to Windows Consoles when supported, eliminating
racy console text attribute changes in parallel `make` output.
Fixes: #22450, #26689, #26924
Abstract over VT100 sequences and Windows Console text attributes.
This will replace KWSys Terminal, which does not integrate with C++
streams.
Issue: #26924
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
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
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>
When the arrays are empty, the YAML ends up with `foo:` which is
equivalent to `foo: null`, not `foo: []`. Avoid writing the key when it
has no information to provide.
Move logic from commit c85524a94a (Ensure stdin, stdout, and stderr pipes
are always open, 2019-05-02, v3.15.0-rc1~171^2) and commit 96010cc968
(Ensure stdin, stdout, stderr FILE streams are open on Windows, 2024-01-24,
v3.29.0-rc1~65^2) to a dedicated source. Expose it through an `Init` class
constructor to make it optionally available during static initialization.
Issue: #26924
EXCLUDE_EMPTY_DIRECTORIES option excludes empty directories under the
directory to install. A directory is considered not empty if and only if
the directory contains at least one file or one symbolic link or one
none-empty sub-directory.
Closes: #19189