Path to this page:
Subject: CVS commit: pkgsrc/devel/cmake
From: Adam Ciarcinski
Date: 2024-04-02 19:27:41
Message id: 20240402172741.C409CFA2C@cvs.NetBSD.org
Log Message:
cmake: updated to 3.29.0
CMake 3.29 Release Notes
************************
Changes made since CMake 3.28 include the following.
New Features
============
Command-Line
------------
* "cmake(1)" "-E cat" can now print the standard input by \
passing the
"-" argument.
Generators
----------
* Visual Studio Generators now support selecting between the Intel
oneAPI Fortran compiler ("ifx") and the Intel classic Fortran
compiler ("ifort") using a "fortran=" field in
"CMAKE_GENERATOR_TOOLSET".
File-Based API
--------------
* The "cmake-file-api(7)" "codemodel" version 2 \
"version" field has
been updated to 2.7.
* The "cmake-file-api(7)" "codemodel" version 2 \
"target" object gained
a new "launchers" field.
Compilers
---------
* The LLVM/Clang GNU-like frontend on Windows ("clang++") may now be
used to compile "CUDA" language sources.
* Compilers targeting the GNU ABI on Windows (MinGW) may now be used
to compile Objective C ("OBJC") and Objective C++ \
("OBJCXX"). These
include GNU compilers ("gcc" and "g++") and the LLVM/Clang \
GNU-like
frontends ("clang" and "clang++").
* TI Clang-based compilers are now supported with compiler id
"TIClang".
Commands
--------
* The add_custom_command(TARGET) signature now supports adding build
events through Alias Targets.
* The "cmake_language(EXIT)" sub-command was added to terminate "cmake
-P" scripts with a specified exit code.
* The "export(SETUP)" sub-command was added to configure export sets.
Its "TARGET" option's "XCFRAMEWORK_LOCATION" setting \
specifies the
location of a ".xcframework" that can be substituted for an
installed target.
* The "if()" command gained new tests "IS_READABLE", \
"IS_WRITABLE" and
"IS_EXECUTABLE" to check file or directory permissions.
Variables
---------
* The "CMAKE_INSTALL_PREFIX" environment variable was added to provide
a default value for the "CMAKE_INSTALL_PREFIX" variable.
* The "CMAKE_LINKER_TYPE" variable and corresponding \
"LINKER_TYPE"
target property were added to specify what linker to use with some
toolchains.
* The "CMAKE_<LANG>_COMPILER_LINKER",
"CMAKE_<LANG>_COMPILER_LINKER_ID",
"CMAKE_<LANG>_COMPILER_LINKER_VERSION" and
"CMAKE_<LANG>_COMPILER_LINKER_FRONTEND_VARIANT" variables were \
added
to describe the linker used by the language's link step.
* The "CMAKE_PROJECT_INCLUDE", "CMAKE_PROJECT_INCLUDE_BEFORE",
"CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE", and \
"CMAKE_PROJECT_<PROJECT-
NAME>_INCLUDE_BEFORE" variables learned to support a semicolon-
separated list of CMake language files to be included sequentially.
These variables can also reference module names to be found in
"CMAKE_MODULE_PATH" or builtin to CMake.
* The "CMAKE_SKIP_TEST_ALL_DEPENDENCY" variable was added to control
whether the "test" (or "RUN_TESTS") buildsystem target \
depends on
the "all" (or "ALL_BUILD") target.
* A "CMAKE_TEST_LAUNCHER" variable and corresponding \
"TEST_LAUNCHER"
target property were added to specify a launcher to be used by
executable targets when invoked by tests added by the "add_test()"
command.
Properties
----------
* The "CROSSCOMPILING_EMULATOR" target property now supports
"generator expressions".
* The "UNITY_BUILD" target property now supports the Objective C
("OBJC") and Objective C++ ("OBJCXX") languages.
* The "XCODE_EMBED_XPC_SERVICES" target property was added to tell the
"Xcode" generator what targets to put in the "Embed XPC \
Resources"
build phase.
Modules
-------
* The "CMakePackageConfigHelpers" module gained new
"generate_apple_platform_selection_file()" and
"generate_apple_architecture_selection_file()" functions, which can
be used to generate a file that includes another Apple-platform-
specific file or the includes an architecture-specific
implementation of a package for an Apple platform, respectively.
* The "FindOpenGL" module learned to find a GLU include directory
different than the GL include directory. A new
"OPENGL_INCLUDE_DIRS" result variable provides all include
directories.
CTest
-----
* "ctest(1)" gained a "--http-header" option to add custom \
headers on
submission to CDash.
* "ctest(1)" gained the "--tests-from-file" and \
"--exclude-from-file"
options to run or exclude tests named in a file.
* "ctest(1)" now supports job server integration on POSIX systems.
* The "ctest -j" option may now be given without a value to let ctest
choose a default level of parallelism, or with "0" to let ctest use
unbounded parallelism. The corresponding "CTEST_PARALLEL_LEVEL"
environment variable, if set to the empty string, is now equivalent
to passing "-j" with no value.
* The "ctest_test()" command gained options \
"INCLUDE_FROM_FILE" and
"EXCLUDE_FROM_FILE" to run or exclude tests named in a file.
CPack
-----
* The "CPack DEB Generator" "CPACK_DEBIAN_FILE_NAME" \
variable may now
be set without any suffix, and the ".deb" suffix will be added
automatically.
* The "CPack RPM Generator" "CPACK_RPM_FILE_NAME" variable \
may now be
set without any suffix, and the ".rpm" suffix will be added
automatically.
* The "CPack WIX Generator" gained a new variable,
"CPACK_WIX_INSTALL_SCOPE", to control the "InstallScope" \
property of
WiX MSI installers.
Other Changes
=============
* CMake learned to de-duplicate libraries on link lines based on
linker capabilities. See policy "CMP0156".
* The "add_test()" command now honors \
"CMAKE_CROSSCOMPILING_EMULATOR"
only when cross-compiling. See policy "CMP0158".
* On Windows, when targeting the MSVC ABI, the "find_library()"
command now accepts ".a" file names after first considering \
".lib".
This is symmetric with existing behavior when targeting the GNU ABI,
in which the command accepts ".lib" file names after first
considering ".a".
* On Windows, when targeting the MSVC ABI, the "find_library()"
command now considers ".dll.lib" file names before ".lib". \
This is
the default suffix for DLL import libraries created by Rust
toolchains for the MSVC ABI.
* The "Ninja" and "NMake Makefiles" generators now use the
"-external:I" flag for system includes when using IntelLLVM as of
version 2021.4. The "-external:W0" flag is also used as of version
2022.2.
* The "create_test_sourcelist()" command now provides a full path to
the generated driver source file.
* The "CPACK_PRODUCTBUILD_DOMAINS" variable now defaults to true. See
policy "CMP0161".
* The "CPack WIX Generator" now produces WiX MSI installers that
create start menu and uninstall entries for all users by default, as
documented by the "CPACK_WIX_INSTALL_SCOPE" variable \
"perMachine"
value. Previously, without a custom WiX template, it produced
installers that would only create start menu and uninstall entries
for the current user, even though they install for all users.
Files: