Windows is heading toward making UTF-8 the preferred MBCS. As CMake's
internal encoding, `UTF-8` is effectively equivalent to `NONE`, which
was CMake's behavior prior to 3.15's accidental change to `AUTO`.
Behavior of `ENCODING UTF-8` is independent of CMake's internal
encoding, making it in principle a better default than `NONE`.
Add policy CMP0176 for compatibility and to document the default's
history.
Fixes: #26262
The default was originally AUTO in commit 2ed473b3b8 (execute_process:
Add ENCODING option for Windows child process output, 2016-11-23,
v3.8.0-rc1~232^2) but was changed back to NONE by commit 07c3380a6e
(execute_process: Restore no-decoding default behavior, 2017-02-13,
v3.8.0-rc2~26^2) for CMake 3.8. Later it was accidentally changed back
to AUTO by commit b783e62533 (cmExecuteProcessCommand: Port to
cmArgumentParser, 2019-03-25, v3.15.0-rc1~270^2) in CMake 3.15 but the
documentation was not updated. Document the current default, AUTO, and
add a test case to verify it.
Issue: #26262
Add a new CMP0175 policy to preserve backward compatibility
for projects that were using unsupported keywords or arguments.
Fixes: #26096, #21089, #18976
e77655555c cmExperimental: gate build database support behind a flag
23cbeb5035 ci: enable `build_database` CXXModules tests
6863c1d823 Tests/CXXModules: add tests for module commands
123107c1a4 Tests/CXXModules: add support for running targets under a given config
438038b5e1 Tests/CXXModules: support building specific targets of example trees
84bc710d84 cmGlobalGenerator: generate build database files for targets
670f753f24 cmDyndepCollation: write build database metadata
dcf9a66ffe cxxmodules: plumb control data for exporting build databases
...
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9708
2000abe74f Help: Recommend good prefixes for cmake_parse_arguments, expand example
bb37d0e1a5 Help: Improve grammar and wording for cmake_parse_arguments
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9788
Detect Windows Kernel-Mode Driver include directories and library search
paths from the WDK command-line environment. Require toolchain files to
specify the KMDF target version via a new variable.
Since this changes the behavior of the WindowsKernelModeDriver
experimental feature, update its UUID.
This includes the target property, its initializing variable, its
initializing environment variable, and updating related docs to mention
the new bits.
10abd2ac5a FindPython: ensure a usable environment is set for the free threaded Python
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9775
Define the `Python_DEFINITIONS` variable for the support of free
threaded Python developments on Windows.
This is a complement to commit 9a0dee7257 (FindPython: Add support for
free threaded python, 2024-05-30).
ceeea4e511 cmake_parse_arguments: Set variable if empty string given after keyword
2f5cc6afa1 cmParseArgumentsCommand: Use cmStrCat() for string concatenation
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9748
a1fdcb9d47 Help: get_property() result var is unset if property is not set
edee1b18b2 Help: Minor formatting and grammar fixes for get_property()
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9769
If a single-value keyword is followed by an empty string, the
command unsets the variable for that keyword instead of setting
it to the empty string. This is inconsistent and unexpected. Add
policy CMP0174 which ensures the variable for a single-value
keyword is always set when any value is given, not just for a
non-empty value.
The new CMP0174 policy only affects the PARSE_ARGV form of
cmake_parse_arguments. The older form silently drops all empty
string arguments before processing the argument list.
Fixes: #25972
Previously this behavior was only mentioned implicitly by the command
signature. Describe it explicitly as we do for other conditions that
automatically expand variables.
Fixes: #26234