summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Help/command/cmake_language.rst5
-rw-r--r--Help/command/if.rst7
-rw-r--r--Help/release/3.29.rst201
-rw-r--r--Help/release/dev/0-sample-topic.rst7
-rw-r--r--Help/release/dev/IntelLLVM-isystem-flag.rst6
-rw-r--r--Help/release/dev/Linker-user-selection.rst6
-rw-r--r--Help/release/dev/add_custom_command-target-alias.rst5
-rw-r--r--Help/release/dev/cmake-E-cat-stdin.rst5
-rw-r--r--Help/release/dev/cmake-language-exit.rst5
-rw-r--r--Help/release/dev/cmake-test-launcher.rst14
-rw-r--r--Help/release/dev/compiler-linker.rst8
-rw-r--r--Help/release/dev/cpack-auto-suffixes.rst10
-rw-r--r--Help/release/dev/create_test_sourcelist-full-filepath.rst5
-rw-r--r--Help/release/dev/ctest-cli-http-headers.rst5
-rw-r--r--Help/release/dev/ctest-jobserver-client.rst5
-rw-r--r--Help/release/dev/ctest-tests-from-file.rst10
-rw-r--r--Help/release/dev/cuda-clang-windows.rst5
-rw-r--r--Help/release/dev/env-cmake-install-prefix.rst5
-rw-r--r--Help/release/dev/export-find_dependency-calls.rst16
-rw-r--r--Help/release/dev/fileapi-exe-launcher.rst7
-rw-r--r--Help/release/dev/find-rustc-importlibs.rst6
-rw-r--r--Help/release/dev/find_library-msvc-libfoo.a.rst7
-rw-r--r--Help/release/dev/if-check-file-permissions.rst5
-rw-r--r--Help/release/dev/install-export-xcframework.rst9
-rw-r--r--Help/release/dev/link-deduplicate-libs.rst5
-rw-r--r--Help/release/dev/make-test-depend-on-all.rst6
-rw-r--r--Help/release/dev/package-dispatch-apple.rst7
-rw-r--r--Help/release/dev/productbuild-domains-policy.rst5
-rw-r--r--Help/release/dev/project-include-multiple.rst11
-rw-r--r--Help/release/dev/unity-build-objc.rst5
-rw-r--r--Help/release/dev/vs-ifx.rst7
-rw-r--r--Help/release/dev/wix-installscope.rst13
-rw-r--r--Help/release/dev/xcode-embed-xpc-services6
-rw-r--r--Help/release/index.rst3
-rw-r--r--Modules/FindOpenGL.cmake30
-rw-r--r--Source/CMakeVersion.cmake6
-rw-r--r--Tests/RunCMake/CMakeLists.txt3
-rw-r--r--Tests/RunCMake/FindOpenGL/CMP0072-common.cmake1
-rw-r--r--Tests/RunCMake/RunCMake.cmake3
-rw-r--r--Tests/RunCMake/RunCTest.cmake3
40 files changed, 247 insertions, 231 deletions
diff --git a/Help/command/cmake_language.rst b/Help/command/cmake_language.rst
index 45ac569..4944f5c 100644
--- a/Help/command/cmake_language.rst
+++ b/Help/command/cmake_language.rst
@@ -513,11 +513,6 @@ Terminating Scripts
.. versionadded:: 3.29
-.. _EXIT:
-.. _exit-code:
-
-.. code-block:: cmake
-
.. signature::
cmake_language(EXIT <exit-code>)
diff --git a/Help/command/if.rst b/Help/command/if.rst
index 1afbe04..a4ccd97 100644
--- a/Help/command/if.rst
+++ b/Help/command/if.rst
@@ -178,10 +178,9 @@ File Operations
False if the given path is an empty string.
- .. warning::
- To check the readability of a file, use preferably ``if(IS_READABLE)``
- because this test will evolve to check file existence only in a future
- release.
+ .. note::
+ Prefer ``if(IS_READABLE)`` to check file readability. ``if(EXISTS)``
+ may be changed in the future to to only check file existence.
.. signature:: if(IS_READABLE <path-to-file-or-directory>)
diff --git a/Help/release/3.29.rst b/Help/release/3.29.rst
new file mode 100644
index 0000000..a655f62
--- /dev/null
+++ b/Help/release/3.29.rst
@@ -0,0 +1,201 @@
+CMake 3.29 Release Notes
+************************
+
+.. only:: html
+
+ .. contents::
+
+Changes made since CMake 3.28 include the following.
+
+New Features
+============
+
+Command-Line
+------------
+
+* :manual:`cmake(1)` :option:`-E cat <cmake-E cat>` can now print the standard
+ input by passing the ``-`` argument.
+
+Generators
+----------
+
+* :ref:`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
+ :variable:`CMAKE_GENERATOR_TOOLSET`.
+
+File-Based API
+--------------
+
+* The :manual:`cmake-file-api(7)` "codemodel" version 2 ``version`` field has
+ been updated to 2.7.
+
+* The :manual:`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.
+
+Commands
+--------
+
+* The :ref:`add_custom_command(TARGET) <add_custom_command(TARGET)>`
+ signature now supports adding build events through :ref:`Alias Targets`.
+
+* The :command:`cmake_language(EXIT)` sub-command was added to terminate
+ :option:`cmake -P` scripts with a specified exit code.
+
+* The :command:`export(SETUP)` sub-command was added to configure export sets.
+ Its ``PACKAGE_DEPENDENCY`` option configures how :command:`find_dependency`
+ calls are exported. Its ``TARGET`` option's ``XCFRAMEWORK_LOCATION``
+ setting specifies the location of a ``.xcframework`` that can be
+ substituted for an installed target.
+
+* The :command:`if` command gained new tests ``IS_READABLE``, ``IS_WRITABLE``
+ and ``IS_EXECUTABLE`` to check file or directory permissions.
+
+* :command:`install(EXPORT)` and :command:`export(EXPORT)` learned a new
+ ``EXPORT_PACKAGE_DEPENDENCIES`` argument, which can be used to generate
+ :command:`find_dependency` calls based on what targets the exported targets
+ depend on.
+
+Variables
+---------
+
+* The :envvar:`CMAKE_INSTALL_PREFIX` environment variable was added to
+ provide a default value for the :variable:`CMAKE_INSTALL_PREFIX` variable.
+
+* The :variable:`CMAKE_LINKER_TYPE` variable and corresponding
+ :prop_tgt:`LINKER_TYPE` target property were added to specify
+ what linker to use with some toolchains.
+
+* The :variable:`CMAKE_<LANG>_COMPILER_LINKER`,
+ :variable:`CMAKE_<LANG>_COMPILER_LINKER_ID`,
+ :variable:`CMAKE_<LANG>_COMPILER_LINKER_VERSION` and
+ :variable:`CMAKE_<LANG>_COMPILER_LINKER_FRONTEND_VARIANT` variables
+ were added to describe the linker used by the language's link step.
+
+* The :variable:`CMAKE_PROJECT_INCLUDE`,
+ :variable:`CMAKE_PROJECT_INCLUDE_BEFORE`,
+ :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE`, and
+ :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE` variables learned
+ to support a :ref:`semicolon-separated list <CMake Language Lists>` of
+ CMake language files to be included sequentially. These variables can also
+ reference module names to be found in :variable:`CMAKE_MODULE_PATH` or
+ builtin to CMake.
+
+* The :variable:`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 :variable:`CMAKE_TEST_LAUNCHER` variable and corresponding
+ :prop_tgt:`TEST_LAUNCHER` target property were added to specify
+ a launcher to be used by executable targets when invoked by
+ tests added by the :command:`add_test` command.
+
+Properties
+----------
+
+* The :prop_tgt:`CROSSCOMPILING_EMULATOR` target property now
+ supports :manual:`generator expressions <cmake-generator-expressions(7)>`.
+
+* The :prop_tgt:`EXPORT_FIND_PACKAGE_NAME` target property was added to
+ allow targets to specify what package name to pass when exporting
+ :command:`find_dependency` calls. This property is initialized with a new
+ :variable:`CMAKE_EXPORT_FIND_PACKAGE_NAME` variable.
+
+* The :prop_tgt:`UNITY_BUILD` target property now supports the
+ Objective C (``OBJC``) and Objective C++ (``OBJCXX``) languages.
+
+* The :prop_tgt:`XCODE_EMBED_XPC_SERVICES <XCODE_EMBED_<type>>` target property
+ was added to tell the :generator:`Xcode` generator what targets to put in
+ the ``Embed XPC Resources`` build phase.
+
+Modules
+-------
+
+* The :module:`CMakePackageConfigHelpers` module gained new
+ :command:`generate_apple_platform_selection_file` and
+ :command:`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 :module:`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
+-----
+
+* :manual:`ctest(1)` gained a :option:`--http-header <ctest --http-header>`
+ option to add custom headers on submission to CDash.
+
+* :manual:`ctest(1)` gained the :option:`--tests-from-file <ctest
+ --tests-from-file>` and :option:`--exclude-from-file <ctest
+ --exclude-from-file>` options to run or exclude tests named in a file.
+
+* :manual:`ctest(1)` now supports :ref:`job server integration
+ <ctest-job-server-integration>` on POSIX systems.
+
+* The :command:`ctest_test` command gained options
+ ``INCLUDE_FROM_FILE`` and ``EXCLUDE_FROM_FILE`` to run or exclude
+ tests named in a file.
+
+CPack
+-----
+
+* The :cpack_gen:`CPack DEB Generator` :variable:`CPACK_DEBIAN_FILE_NAME`
+ variable may now be set without any suffix, and the ``.deb`` suffix
+ will be added automatically.
+
+* The :cpack_gen:`CPack RPM Generator` :variable:`CPACK_RPM_FILE_NAME`
+ variable may now be set without any suffix, and the ``.rpm`` suffix
+ will be added automatically.
+
+* The :cpack_gen:`CPack WIX Generator` gained a new variable,
+ :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 :policy:`CMP0156`.
+
+* The :command:`add_test` command now honors
+ :variable:`CMAKE_CROSSCOMPILING_EMULATOR` only when cross-compiling.
+ See policy :policy:`CMP0158`.
+
+* :command:`FetchContent_MakeAvailable` now sets the
+ :variable:`CMAKE_EXPORT_FIND_PACKAGE_NAME` variable for CMake projects.
+
+* On Windows, when targeting the MSVC ABI, the :command:`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 :command:`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 :generator:`Ninja` and :generator:`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 :command:`create_test_sourcelist` command now provides a full path to
+ the generated driver source file.
+
+* The :variable:`CPACK_PRODUCTBUILD_DOMAINS` variable now defaults to true.
+ See policy :policy:`CMP0161`.
+
+* The :cpack_gen:`CPack WIX Generator` now produces WiX MSI installers
+ that create start menu and uninstall entries for all users by default,
+ as documented by the :variable:`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.
diff --git a/Help/release/dev/0-sample-topic.rst b/Help/release/dev/0-sample-topic.rst
deleted file mode 100644
index e4cc01e..0000000
--- a/Help/release/dev/0-sample-topic.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-0-sample-topic
---------------
-
-* This is a sample release note for the change in a topic.
- Developers should add similar notes for each topic branch
- making a noteworthy change. Each document should be named
- and titled to match the topic name to avoid merge conflicts.
diff --git a/Help/release/dev/IntelLLVM-isystem-flag.rst b/Help/release/dev/IntelLLVM-isystem-flag.rst
deleted file mode 100644
index bba3d26..0000000
--- a/Help/release/dev/IntelLLVM-isystem-flag.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-IntelLLVM-isystem-flag
-----------------------
-
-* The :generator:`Ninja` and :generator:`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.
diff --git a/Help/release/dev/Linker-user-selection.rst b/Help/release/dev/Linker-user-selection.rst
deleted file mode 100644
index ed78099..0000000
--- a/Help/release/dev/Linker-user-selection.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-Linker-user-selection
----------------------
-
-* The linker tool can now be specified for a selection of compilers/platforms
- by setting :variable:`CMAKE_LINKER_TYPE` variable or :prop_tgt:`LINKER_TYPE`
- target property.
diff --git a/Help/release/dev/add_custom_command-target-alias.rst b/Help/release/dev/add_custom_command-target-alias.rst
deleted file mode 100644
index 7646a53..0000000
--- a/Help/release/dev/add_custom_command-target-alias.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-add_custom_command-target-alias
--------------------------------
-
-* The :ref:`add_custom_command(TARGET) <add_custom_command(TARGET)>`
- signature now supports adding build events through :ref:`Alias Targets`.
diff --git a/Help/release/dev/cmake-E-cat-stdin.rst b/Help/release/dev/cmake-E-cat-stdin.rst
deleted file mode 100644
index 43a8aed..0000000
--- a/Help/release/dev/cmake-E-cat-stdin.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-cmake-E-cat-stdin
------------------
-
-* :manual:`cmake(1)` :option:`-E cat <cmake-E cat>` can now print the standard
- input by passing the ``-`` argument.
diff --git a/Help/release/dev/cmake-language-exit.rst b/Help/release/dev/cmake-language-exit.rst
deleted file mode 100644
index 42e8ae2..0000000
--- a/Help/release/dev/cmake-language-exit.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-cmake-language-exit
--------------------
-
-* The :command:`cmake_language()` command gained a new ``EXIT``
- sub-command to exit scripts with a specified exit code.
diff --git a/Help/release/dev/cmake-test-launcher.rst b/Help/release/dev/cmake-test-launcher.rst
deleted file mode 100644
index 0a5db77..0000000
--- a/Help/release/dev/cmake-test-launcher.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-cmake-test-launcher
--------------------
-
-* A :variable:`CMAKE_TEST_LAUNCHER` variable and corresponding
- :prop_tgt:`TEST_LAUNCHER` target property were added to specify
- a launcher to be used by executable targets when invoked by
- tests added by the :command:`add_test` command.
-
-* The :command:`add_test` command now honors
- :variable:`CMAKE_CROSSCOMPILING_EMULATOR` only when cross-compiling.
- See policy :policy:`CMP0158`.
-
-* The :prop_tgt:`CROSSCOMPILING_EMULATOR` target property now
- supports :manual:`generator expressions <cmake-generator-expressions(7)>`.
diff --git a/Help/release/dev/compiler-linker.rst b/Help/release/dev/compiler-linker.rst
deleted file mode 100644
index 4783656..0000000
--- a/Help/release/dev/compiler-linker.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-compiler-linker
----------------
-
-* The linker effectively used for the link step is now documented with the
- :variable:`CMAKE_<LANG>_COMPILER_LINKER`,
- :variable:`CMAKE_<LANG>_COMPILER_LINKER_ID`,
- :variable:`CMAKE_<LANG>_COMPILER_LINKER_VERSION` and
- :variable:`CMAKE_<LANG>_COMPILER_LINKER_FRONTEND_VARIANT` variables.
diff --git a/Help/release/dev/cpack-auto-suffixes.rst b/Help/release/dev/cpack-auto-suffixes.rst
deleted file mode 100644
index f3fd2af..0000000
--- a/Help/release/dev/cpack-auto-suffixes.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-cpack-auto-suffixes
--------------------
-
-* The :cpack_gen:`CPack DEB Generator` :variable:`CPACK_DEBIAN_FILE_NAME`
- variable may now be set without any suffix, and the ``.deb`` suffix
- will be added automatically.
-
-* The :cpack_gen:`CPack RPM Generator` :variable:`CPACK_RPM_FILE_NAME`
- variable may now be set without any suffix, and the ``.rpm`` suffix
- will be added automatically.
diff --git a/Help/release/dev/create_test_sourcelist-full-filepath.rst b/Help/release/dev/create_test_sourcelist-full-filepath.rst
deleted file mode 100644
index 1afa82c..0000000
--- a/Help/release/dev/create_test_sourcelist-full-filepath.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-create_test_sourcelist-full-filepath
-------------------------------------
-
-* The :command:`create_test_sourcelist` command now provides a full path to
- the generated driver source file.
diff --git a/Help/release/dev/ctest-cli-http-headers.rst b/Help/release/dev/ctest-cli-http-headers.rst
deleted file mode 100644
index 81d4c7b..0000000
--- a/Help/release/dev/ctest-cli-http-headers.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-ctest-cli-http-headers
-----------------------
-
-* :manual:`ctest(1)` gained a :option:`--http-header <ctest --http-header>`
- option to add custom headers on submission to CDash.
diff --git a/Help/release/dev/ctest-jobserver-client.rst b/Help/release/dev/ctest-jobserver-client.rst
deleted file mode 100644
index 37e22c0..0000000
--- a/Help/release/dev/ctest-jobserver-client.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-ctest-jobserver-client
-----------------------
-
-* :manual:`ctest(1)` now supports :ref:`job server integration
- <ctest-job-server-integration>` on POSIX systems.
diff --git a/Help/release/dev/ctest-tests-from-file.rst b/Help/release/dev/ctest-tests-from-file.rst
deleted file mode 100644
index aa49368..0000000
--- a/Help/release/dev/ctest-tests-from-file.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-ctest-tests-from-file
----------------------
-
-* :manual:`ctest(1)` gained the :option:`--tests-from-file <ctest
- --tests-from-file>` and :option:`--exclude-from-file <ctest
- --exclude-from-file>` options to run or exclude tests named in a file.
-
-* The :command:`ctest_test` command gained options
- ``INCLUDE_FROM_FILE`` and ``EXCLUDE_FROM_FILE`` to run or exclude
- tests named in a file.
diff --git a/Help/release/dev/cuda-clang-windows.rst b/Help/release/dev/cuda-clang-windows.rst
deleted file mode 100644
index 082fe2f..0000000
--- a/Help/release/dev/cuda-clang-windows.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-cuda-clang-windows
-------------------
-
-* The ``CUDA`` language can now be compiled with Clang on Windows
- using its GNU-like frontend, ``clang++``.
diff --git a/Help/release/dev/env-cmake-install-prefix.rst b/Help/release/dev/env-cmake-install-prefix.rst
deleted file mode 100644
index db97855..0000000
--- a/Help/release/dev/env-cmake-install-prefix.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-env-cmake-install-prefix
-------------------------
-
-* The :envvar:`CMAKE_INSTALL_PREFIX` environment variable was added to
- provide a default value for the :variable:`CMAKE_BUILD_TYPE` variable.
diff --git a/Help/release/dev/export-find_dependency-calls.rst b/Help/release/dev/export-find_dependency-calls.rst
deleted file mode 100644
index 58064b7..0000000
--- a/Help/release/dev/export-find_dependency-calls.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-export-find_dependency-calls
-----------------------------
-
-* :command:`install(EXPORT)` and :command:`export(EXPORT)` learned a new
- ``EXPORT_PACKAGE_DEPENDENCIES`` argument, which can be used to generate
- :command:`find_dependency` calls based on what targets the exported targets
- depend on.
-* A new :command:`export(SETUP)` signature was created to configure export
- sets. This can be used to configure how :command:`find_dependency` calls are
- exported.
-* A new :prop_tgt:`EXPORT_FIND_PACKAGE_NAME` target property was created to
- allow targets to specify what package name to pass when exporting
- :command:`find_dependency` calls. This property is initialized with a new
- :variable:`CMAKE_EXPORT_FIND_PACKAGE_NAME` variable.
-* :command:`FetchContent_MakeAvailable` now sets the
- :variable:`CMAKE_EXPORT_FIND_PACKAGE_NAME` variable for CMake projects.
diff --git a/Help/release/dev/fileapi-exe-launcher.rst b/Help/release/dev/fileapi-exe-launcher.rst
deleted file mode 100644
index 09fc2ae..0000000
--- a/Help/release/dev/fileapi-exe-launcher.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-fileapi-exe-launcher
---------------------
-
-* The :manual:`cmake-file-api(7)` "codemodel" version 2 ``version`` field has
- been updated to 2.7.
-* The :manual:`cmake-file-api(7)` "codemodel" version 2 "target" object gained
- a new "launchers" field.
diff --git a/Help/release/dev/find-rustc-importlibs.rst b/Help/release/dev/find-rustc-importlibs.rst
deleted file mode 100644
index 646afff..0000000
--- a/Help/release/dev/find-rustc-importlibs.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-find-rustc-importlibs
----------------------
-
-* On Windows, when targeting the MSVC ABI, the :command:`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.
diff --git a/Help/release/dev/find_library-msvc-libfoo.a.rst b/Help/release/dev/find_library-msvc-libfoo.a.rst
deleted file mode 100644
index 23ba226..0000000
--- a/Help/release/dev/find_library-msvc-libfoo.a.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-find_library-msvc-libfoo.a
---------------------------
-
-* On Windows, when targeting the MSVC ABI, the :command:`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``.
diff --git a/Help/release/dev/if-check-file-permissions.rst b/Help/release/dev/if-check-file-permissions.rst
deleted file mode 100644
index ec69b00..0000000
--- a/Help/release/dev/if-check-file-permissions.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-if-check-file-permissions
--------------------------
-
-* The :command:`if` command gained new tests ``IS_READABLE``, ``IS_WRITABLE``
- and ``IS_EXECUTABLE`` to check file or directory permissions.
diff --git a/Help/release/dev/install-export-xcframework.rst b/Help/release/dev/install-export-xcframework.rst
deleted file mode 100644
index 513a552..0000000
--- a/Help/release/dev/install-export-xcframework.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-install-export-xcframework
---------------------------
-
-* The :command:`export(SETUP)` command gained a new ``XCFRAMEWORK_LOCATION``
- argument, which can be used to specify the location of a ``.xcframework``
- that can be substituted for the installed library.
-* The :module:`CMakePackageConfigHelpers` module gained a new
- :command:`generate_apple_platform_selection_file` function, which can be
- used to generate a file that includes another Apple-platform-specific file.
diff --git a/Help/release/dev/link-deduplicate-libs.rst b/Help/release/dev/link-deduplicate-libs.rst
deleted file mode 100644
index 4a03f2c..0000000
--- a/Help/release/dev/link-deduplicate-libs.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-link-deduplicate-libs
----------------------
-
-* CMake learned to de-duplicate libraries on link lines based on linker
- capabilities. See policy :policy:`CMP0156`.
diff --git a/Help/release/dev/make-test-depend-on-all.rst b/Help/release/dev/make-test-depend-on-all.rst
deleted file mode 100644
index ef43faf..0000000
--- a/Help/release/dev/make-test-depend-on-all.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-make-test-depend-on-all
------------------------
-
-* The :variable:`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.
diff --git a/Help/release/dev/package-dispatch-apple.rst b/Help/release/dev/package-dispatch-apple.rst
deleted file mode 100644
index d49cce1..0000000
--- a/Help/release/dev/package-dispatch-apple.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-package-dispatch-apple
-----------------------
-
-* The :module:`CMakePackageConfigHelpers` module gained a new
- :command:`generate_apple_architecture_selection_file` function, which can be
- used to generate a file that includes an architecture-specific implementation
- of a package for an Apple platform.
diff --git a/Help/release/dev/productbuild-domains-policy.rst b/Help/release/dev/productbuild-domains-policy.rst
deleted file mode 100644
index 2009453..0000000
--- a/Help/release/dev/productbuild-domains-policy.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-productbuild-domains-policy
----------------------------
-
-* The :variable:`CPACK_PRODUCTBUILD_DOMAINS` variable now defaults to true.
- See policy :policy:`CMP0161`.
diff --git a/Help/release/dev/project-include-multiple.rst b/Help/release/dev/project-include-multiple.rst
deleted file mode 100644
index 3f7b360..0000000
--- a/Help/release/dev/project-include-multiple.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-project-include-multiple
-------------------------
-
-* The :variable:`CMAKE_PROJECT_INCLUDE`,
- :variable:`CMAKE_PROJECT_INCLUDE_BEFORE`,
- :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE`, and
- :variable:`CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE` variables learned
- to support a :ref:`semicolon-separated list <CMake Language Lists>` of
- CMake language files to be included sequentially. These variables can also
- reference module names to be found in :variable:`CMAKE_MODULE_PATH` or
- builtin to CMake.
diff --git a/Help/release/dev/unity-build-objc.rst b/Help/release/dev/unity-build-objc.rst
deleted file mode 100644
index ce6460b..0000000
--- a/Help/release/dev/unity-build-objc.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-unity-build-objc
-----------------
-
-* The :prop_tgt:`UNITY_BUILD` target property now supports the
- Objective C (``OBJC``) and Objective C++ (``OBJCXX``) languages.
diff --git a/Help/release/dev/vs-ifx.rst b/Help/release/dev/vs-ifx.rst
deleted file mode 100644
index 9e72cc7..0000000
--- a/Help/release/dev/vs-ifx.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-vs-ifx
-------
-
-* :ref:`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
- :variable:`CMAKE_GENERATOR_TOOLSET`.
diff --git a/Help/release/dev/wix-installscope.rst b/Help/release/dev/wix-installscope.rst
deleted file mode 100644
index 1978698..0000000
--- a/Help/release/dev/wix-installscope.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-wix-installscope
-----------------
-
-* The :cpack_gen:`CPack WIX Generator` gained a new variable,
- :variable:`CPACK_WIX_INSTALL_SCOPE`, to control the
- ``InstallScope`` property of WiX MSI installers.
-
-* The :cpack_gen:`CPack WIX Generator` now produces WiX MSI installers
- that create start menu and uninstall entries for all users by default,
- as documented by the :variable:`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.
diff --git a/Help/release/dev/xcode-embed-xpc-services b/Help/release/dev/xcode-embed-xpc-services
deleted file mode 100644
index f758285..0000000
--- a/Help/release/dev/xcode-embed-xpc-services
+++ /dev/null
@@ -1,6 +0,0 @@
-xcode-embed-xpc-services
-------------------------
-
-* The :prop_tgt:`XCODE_EMBED_XPC_SERVICES <XCODE_EMBED_<type>>` target property
- was added to tell the :generator:`Xcode` generator what targets to put in
- the ``Embed XPC Resources`` build phase.
diff --git a/Help/release/index.rst b/Help/release/index.rst
index ea13fdc..76adcac 100644
--- a/Help/release/index.rst
+++ b/Help/release/index.rst
@@ -7,14 +7,13 @@ CMake Release Notes
This file should include the adjacent "dev.txt" file
in development versions but not in release versions.
-.. include:: dev.txt
-
Releases
========
.. toctree::
:maxdepth: 1
+ 3.29 <3.29>
3.28 <3.28>
3.27 <3.27>
3.26 <3.26>
diff --git a/Modules/FindOpenGL.cmake b/Modules/FindOpenGL.cmake
index 5c4839c..0c77cfc 100644
--- a/Modules/FindOpenGL.cmake
+++ b/Modules/FindOpenGL.cmake
@@ -92,12 +92,17 @@ This module sets the following variables:
Defined if the system has GLES3.
``OPENGL_INCLUDE_DIR``
Path to the OpenGL include directory.
+ The ``OPENGL_INCLUDE_DIRS`` variable is preferred.
``OPENGL_EGL_INCLUDE_DIRS``
Path to the EGL include directory.
``OPENGL_LIBRARIES``
Paths to the OpenGL library, windowing system libraries, and GLU libraries.
On Linux, this assumes GLX and is never correct for EGL-based targets.
Clients are encouraged to use the ``OpenGL::*`` import targets instead.
+``OPENGL_INCLUDE_DIRS``
+ .. versionadded:: 3.29
+
+ Paths to the OpenGL include directories.
.. versionadded:: 3.10
Variables for GLVND-specific libraries ``OpenGL``, ``EGL`` and ``GLX``.
@@ -127,6 +132,11 @@ The following cache variables may also be set:
Path to the OpenGL GLES3 library.
+``OPENGL_GLU_INCLUDE_DIR``
+ .. versionadded:: 3.29
+
+ Path to the OpenGL GLU include directory.
+
.. versionadded:: 3.10
Variables for GLVND-specific libraries ``OpenGL``, ``EGL`` and ``GLX``.
@@ -230,10 +240,13 @@ elseif (APPLE)
"OpenGL GLU library")
find_path(OPENGL_INCLUDE_DIR NAMES OpenGL/gl.h GL/gl.h DOC
"Include for OpenGL")
+ find_path(OPENGL_GLU_INCLUDE_DIR NAMES OpenGL/glu.h GL/glu.h DOC
+ "Include for the OpenGL GLU library")
list(APPEND _OpenGL_REQUIRED_VARS OPENGL_INCLUDE_DIR)
list(APPEND _OpenGL_CACHE_VARS
OPENGL_INCLUDE_DIR
+ OPENGL_GLU_INCLUDE_DIR
OPENGL_gl_LIBRARY
OPENGL_glu_LIBRARY
)
@@ -289,6 +302,8 @@ else()
/opt/graphics/OpenGL/include
)
+ find_path(OPENGL_GLU_INCLUDE_DIR GL/glu.h ${_OPENGL_INCLUDE_PATH})
+
list(APPEND _OpenGL_CACHE_VARS
OPENGL_INCLUDE_DIR
OPENGL_GLX_INCLUDE_DIR
@@ -296,6 +311,7 @@ else()
OPENGL_GLES2_INCLUDE_DIR
OPENGL_GLES3_INCLUDE_DIR
OPENGL_xmesa_INCLUDE_DIR
+ OPENGL_GLU_INCLUDE_DIR
)
# Search for the GLVND libraries. We do this regardless of COMPONENTS; we'll
@@ -509,7 +525,7 @@ else()
set( OPENGL_XMESA_FOUND "NO" )
endif()
-if(OPENGL_glu_LIBRARY)
+if(OPENGL_glu_LIBRARY AND (WIN32 OR OPENGL_GLU_INCLUDE_DIR))
set( OPENGL_GLU_FOUND "YES" )
else()
set( OPENGL_GLU_FOUND "NO" )
@@ -567,6 +583,8 @@ unset(_OpenGL_REQUIRED_VARS)
# OpenGL:: targets
if(OPENGL_FOUND)
+ set(OPENGL_INCLUDE_DIRS ${OPENGL_INCLUDE_DIR})
+
# ::OpenGL is a GLVND library, and thus Linux-only: we don't bother checking
# for a framework version of this library.
if(OPENGL_opengl_LIBRARY AND NOT TARGET OpenGL::OpenGL)
@@ -600,6 +618,7 @@ if(OPENGL_FOUND)
OpenGL::OpenGL)
set_target_properties(OpenGL::GLX PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
"${OPENGL_GLX_INCLUDE_DIR}")
+ list(APPEND OPENGL_INCLUDE_DIRS ${OPENGL_GLX_INCLUDE_DIR})
endif()
# ::GLES2 is a GLVND library, and thus Linux-only: we don't bother checking
@@ -629,6 +648,7 @@ if(OPENGL_FOUND)
INTERFACE_INCLUDE_DIRECTORIES
"${OPENGL_GLES2_INCLUDE_DIR}"
)
+ list(APPEND OPENGL_INCLUDE_DIRS ${OPENGL_GLES2_INCLUDE_DIR})
if (OPENGL_USE_GLES2)
set(_OpenGL_EGL_IMPL OpenGL::GLES2)
@@ -662,6 +682,7 @@ if(OPENGL_FOUND)
INTERFACE_INCLUDE_DIRECTORIES
"${OPENGL_GLES3_INCLUDE_DIR}"
)
+ list(APPEND OPENGL_INCLUDE_DIRS ${OPENGL_GLES3_INCLUDE_DIR})
if (OPENGL_USE_GLES3)
set(_OpenGL_EGL_IMPL OpenGL::GLES3)
@@ -713,6 +734,7 @@ if(OPENGL_FOUND)
# Note that EGL's include directory is different from OpenGL/GLX's!
set_target_properties(OpenGL::EGL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
"${OPENGL_EGL_INCLUDE_DIR}")
+ list(APPEND OPENGL_INCLUDE_DIRS ${OPENGL_EGL_INCLUDE_DIR})
endif()
if(OPENGL_GLU_FOUND AND NOT TARGET OpenGL::GLU)
@@ -727,6 +749,10 @@ if(OPENGL_FOUND)
endif()
set_target_properties(OpenGL::GLU PROPERTIES
INTERFACE_LINK_LIBRARIES OpenGL::GL)
+ # Note that GLU's include directory may be different from OpenGL's!
+ set_target_properties(OpenGL::GLU PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
+ "${OPENGL_GLU_INCLUDE_DIR}")
+ list(APPEND OPENGL_INCLUDE_DIRS ${OPENGL_GLU_INCLUDE_DIR})
endif()
# OPENGL_LIBRARIES mirrors OpenGL::GL's logic ...
@@ -743,6 +769,8 @@ if(OPENGL_FOUND)
endif()
endif()
+list(REMOVE_DUPLICATES OPENGL_INCLUDE_DIRS)
+
# This deprecated setting is for backward compatibility with CMake1.4
set(OPENGL_LIBRARY ${OPENGL_LIBRARIES})
# This deprecated setting is for backward compatibility with CMake1.4
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index 3087b80..67788a8 100644
--- a/Source/CMakeVersion.cmake
+++ b/Source/CMakeVersion.cmake
@@ -1,8 +1,8 @@
# CMake version number components.
set(CMake_VERSION_MAJOR 3)
-set(CMake_VERSION_MINOR 28)
-set(CMake_VERSION_PATCH 20240206)
-#set(CMake_VERSION_RC 0)
+set(CMake_VERSION_MINOR 29)
+set(CMake_VERSION_PATCH 0)
+set(CMake_VERSION_RC 0)
set(CMake_VERSION_IS_DIRTY 0)
# Start with the full version number used in tags. It has no dev info.
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index 245d550..3e22247 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
# See adjacent README.rst for documentation of this test infrastructure.
# Note that the _isMultiConfig variable is set in the parent directory's
diff --git a/Tests/RunCMake/FindOpenGL/CMP0072-common.cmake b/Tests/RunCMake/FindOpenGL/CMP0072-common.cmake
index 3fe8030..ae0ce27 100644
--- a/Tests/RunCMake/FindOpenGL/CMP0072-common.cmake
+++ b/Tests/RunCMake/FindOpenGL/CMP0072-common.cmake
@@ -2,6 +2,7 @@ set(CYGWIN 0)
set(WIN32 0)
set(APPLE 0)
set(OPENGL_INCLUDE_DIR GL/include)
+set(OPENGL_GLU_INCLUDE_DIR GLU/include)
set(OPENGL_GLX_INCLUDE_DIR GLX/include)
set(OPENGL_gl_LIBRARY GL)
set(OPENGL_opengl_LIBRARY OpenGL)
diff --git a/Tests/RunCMake/RunCMake.cmake b/Tests/RunCMake/RunCMake.cmake
index 179c80e..9bc510b 100644
--- a/Tests/RunCMake/RunCMake.cmake
+++ b/Tests/RunCMake/RunCMake.cmake
@@ -1,3 +1,6 @@
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
foreach(
arg
IN ITEMS
diff --git a/Tests/RunCMake/RunCTest.cmake b/Tests/RunCMake/RunCTest.cmake
index d46f6ad..87d17f2 100644
--- a/Tests/RunCMake/RunCTest.cmake
+++ b/Tests/RunCMake/RunCTest.cmake
@@ -1,3 +1,6 @@
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
include(RunCMake)
# Isolate our ctest runs from external environment.