115425e68c Configure CMake itself with policies through CMake 3.29
ed376e470e export: Increase maximum policy version in exported files to 3.29
4394464501 Add deprecation warnings for policies CMP0129 and below
2eb4382d6b Tests: Modernize RunCMake.CMP0129 test conventions and conditions
Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !9585
In commit 60661f6770 (CPack/WiX: Make InstallScope configurable,
2023-11-07, v3.29.0-rc1~413^2) the `CPACK_WIX_INSTALL_SCOPE` default was
set to `perMachine`. While installers created with `perMachine` have
better behavior on their own than installers created without any
`InstallScope`, they do not cleanly convert existing installations on
updates.
Fixes: #26029
In commit 60661f6770 (CPack/WiX: Make InstallScope configurable,
2023-11-07, v3.29.0-rc1~413^2) the `CPACK_WIX_INSTALL_SCOPE` default was
set to `perMachine`. While installers created with `perMachine` have
better behavior on their own than installers created without any
`InstallScope`, they do not cleanly convert existing installations on
updates.
Fixes: #26029
The files generated by `install(EXPORT)`, `export()`, and
`install_jar_exports()` commands are known to work with policies
as of CMake 3.29, so enable them in sufficiently new CMake versions.
The OLD behaviors of all policies are deprecated, but only by
documentation. Add an explicit deprecation diagnostic for policies
introduced in CMake 3.23 and below to encourage projects to port
away from setting policies to OLD.
Add section headers similar to the 3.29 release notes and move each
individual bullet into an appropriate section. Revise a few bullets.
Drop the `CXX_MODULE_STD` release note since it is an experimental
feature.
Set the close-on-exec flag to prevent the jobserver FIFO file
descriptor from leaking to subprocesses spawned by `ctest`.
This leak is usually harmless, but can cause `make test -jN` to hang
at the end of the build if a test leaves a background process running
with the jobserver FIFO file descriptor open.
Fixes: #26027
`matlab_get_release_name_from_version("14.10" release_name)` does not
write the `release_name` variable if the `14.10` is not a known version,
so before checking for the variable to be empty, we should set it to an
empty value.
`matlab_add_mex` uses the plain signature of `target_link_libraries`,
so we need to use the plain signature also outside of `matlab_add_mex`
to avoid a configuration error.
Exporting targets having large FILE_SETs with install(EXPORT) or export(EXPORT)
currently performs poorly on Windows compared to Unix-like systems,
because cmFileSet::EvaluateDirectoryEntries calls SystemTools::SameFile on every
pair of parent directories in the file set. SystemTools::SameFile opens and closes
two read-only filesystem handles. This causes a significant performance drop
on Windows for FILE_SETs with even a couple of dozens of files.
Use the recently added SystemTools::GetFileId function in kwsys
(https://gitlab.kitware.com/utils/kwsys/-/merge_requests/298) instead of SameFile
to cache the identity of a directory in cmFileSet::EvaluateDirectoryEntries.
This means only one filesystem handle is needed per distinct directory path,
instead of two per (even if they're equal) directory pair.
Not all compilers that can be used on APPLE platforms will respect
the architecture(s) set in CMAKE_OSX_ARCHITECTURES and some will
not raise an error if they are unable to do this. For instance,
GCC will accept ignore additional architectures specified after the
first -arch XXX (with a non-fatal warning) and will even link the
simple test applications used in the ABI determination (and other
tests that don't require external libraries) if an architecture
is requested for which it doesn't have the required "multilib"
set-up.
Prevent unexpected build results or build failures that may occur
after a lengthy build process: verify that the binary used to obtain
the ABI information contains the requested architectures.
Fixes: #25952