41500ba575 CPack/RPM: avoid `ls -la` process fork in tests
963a022782 CPack/RPM: wrap some too long lines
17a39084c2 CPack/RPM: some other simplifications
0966151c73 CPack/RPM: modernize file and path operations
16407d6934 CPack/RPM: escape regex in the modern way
9ed6106a27 CPack/RPM: remove redundant quotes and variable expansions
d7701b758b CPack/RPM: use list transform instead of string manipulations
fd321c02c5 CPack/RPM: `ls -la` execution + parse → `file(READ_SYMLINK)`
...
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11746
Ask `stat` to output only human-readable permissions and nothing else.
Secondly, simplify parsing algorithm. Instead of multiple regex matches
transform permissions into a list and split into groups.
Before it would result in us writing the unescaped backslashes to
`CMakeCXXCompiler.cmake` resulting in invalid escape characters causing
the configure to error out.
Several problems with this feature came up while testing 4.3.0-rc1.
These include both broken stdlib distributions and regressions in our
implementation of the feature since CMake 4.2.
Revert commit 70c1f0f43d (Experimental: Remove import std experimental
gate, 2026-02-04, v4.3.0-rc1~61^2) except for its incidental fixes.
Remove the 4.3 release notes related to `import std`.
Rotate the experimental gate's UUID.
Issue: #27426
Issue: #27597
Issue: #27626
Issue: #27635
d314cad7f1 Ninja,Make,FASTBuild: Avoid unnecessary Windows short paths in placeholders
8099fe4436 CMakeParseImplicitLinkInfo: Fix detection of MSVC link.exe from quoted path
c211b5b7f3 Makefile: Pass includes response file using native path style
728b8b34c2 IAR: Fix `ichecks` invocation on Windows when not using short paths
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11717
5e1440302a FindVulkan: Add support for cross-compiling between Windows x64/ARM64
f9a09f76f3 FindVulkan: Drop support for 32-bit SDK on Windows
b40740f28a FindVulkan: Do not search bin directories for libraries
947adbba91 FindVulkan: Use ENV{VULKAN_SDK} only if it exists
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Francesco Giancane <fgiancan@qti.qualcomm.com>
Merge-request: !11718
The LunarG Vulkan SDK on Windows provides arch-specific library
directories for cross-compiling. On X64 hosts it provides `-ARM64`
directories. On ARM64 hosts it provides `-X64` directories.
It also provides arch-specific `bin` directories, but only for the
`.dll`s of the cross architecture. We still want the plain `bin`
directory containing host-architecture executable tools.
Co-authored-by: Giancane, Francesco <fgiancan@qti.qualcomm.com>
Co-authored-by: Arnaud, Adrien <aarnaud@qti.qualcomm.com>
Tested-by: Giancane, Francesco <fgiancan@qti.qualcomm.com>
Tested-by: Arnaud, Adrien <aarnaud@qti.qualcomm.com>
In commit 12ec3270c4 (GenerateExportHeader: Extend documentation,
2025-05-06, v4.1.0-rc1~214^2) we added a `BASE_DIRS` example value using
a generator expression that cannot be correctly consumed after export.
Update the example to use `CMAKE_CURRENT_BINARY_DIR`, which is where
`generate_export_header` places the header anyway. Also drop the
explicit `target_include_directories`, as it is not needed when
using a file set for the header.
Closes: #27620
The files generated by `install(EXPORT)`, `export()`, and
`install_jar_exports()` commands are known to work with policies
as of CMake 4.2, so enable them in sufficiently new CMake versions.
The fastbuild generator uses clui.dll directly, and assumed it is in
the 1033/ subdirectory. But this doesn't exist on non-US installations
of Visual Studio. With this patch cmake searches for clui.dll, so it can
use the correct path. If the env. var VSLANG is set, it tries that first,
then it tries 1033/ and if none of the two exists, it takes the first
one it finds.
Fixes: #27535
On windows when you run `nvcc -v` all the env variables will
be printed before nvcc verbose output. This allows us to handle
the cases where env variable exists with the same name as a magic
nvcc keyword we parse
Teach our CMake lexer to recognize `[[...]]` multi-line strings, as used
in some 'check source compiles/runs' examples to pass literal C/C++ code
through a CMake function. Previously, this resulted in the lexer trying
to parse such code as CMake, which is obviously incorrect. Also, use the
new `[[` syntax in more places.
Note that, because `[[...]]` can also show up in some instances denoting
optional arguments, we only consider `[[` with no `=` as a string if the
`[[` is followed by a non-identifier character. This heuristic seems to
work for most existing usages.
Co-Authored-By: Georg Brandl <georg@python.org>
d284ce2fd6 Initialize character set encoding on program startup
6ec707312d Make character classification locale-independent
ea47c154e5 Make case-dependent operations locale-independent
c81909f842 Merge branch 'upstream-KWSys' into cmake-locale
5a187b69e7 KWSys 2026-02-11 (dcab76ba)
55842d16ac cmFileCommand: Adopt `file://` URL compatibility helper
6fe7acfe1d curl: Build with support for wide-character filesystem APIs on Windows
9a2ebd7f25 Tests: Add RunCMake.string case covering TOLOWER and TOUPPER with UTF-8
...
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Alex Overchenko <aleksandr9809@gmail.com>
Merge-request: !11647
And change checks to look for a value rather than definition. This fix
keeps the same set of test cases in `RunCMake.CXXModules` selected as
before.
Fixes: #27589