diff options
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. |