]> git.ipfire.org Git - ipfire-2.x.git/commit
cmake: Update to version 3.21.0
authorAdolf Belka <adolf.belka@ipfire.org>
Tue, 20 Jul 2021 20:00:46 +0000 (22:00 +0200)
committerArne Fitzenreiter <arne_f@ipfire.org>
Sun, 5 Sep 2021 08:42:35 +0000 (08:42 +0000)
commitba2592ada95060c995b2bc12c3ac9dd2c9e9bf0e
treedb8fb26727542836f57a2bbaf02e73c0bb70175b
parent79516fed9a36cbb9018d4403d4b66840b827baf8
cmake: Update to version 3.21.0

- Update from 3.20.4 to 3.21.0
- Update of rootfile not required
- Changelog
  3.20.4 to 3.20.5
   This version update made no changes to documented features or interfaces. Some
   implementation updates were made to support ecosystem changes and/or fix regressions.
  3.20.5 to 3.21.0
   New Features
     Presets
       cmake-presets(7) gained support for specifying the install prefix in a configure preset.
       cmake-presets(7) gained support for conditional enabling of presets.
       cmake-presets(7) gained support for a ${hostSystemName} macro.
       cmake-presets(7) gained support for omitting the generator and binaryDir fields.
   Generators
     The Visual Studio 17 2022 generator was added. This is experimental and based on "Visual Studio 2022 Preview 1.1" because this version of VS has not been released.
     The Makefile Generators and the Ninja generator learned to add linker launcher tools along with the linker for C, CXX, OBJC, and OBJCXX languages. See the CMAKE_<LANG>_LINKER_LAUNCHER variable and <LANG>_LINKER_LAUNCHER target property for details.
   Languages
     CMake learned to support HIP as a first-class language that can be enabled via the project() and enable_language() commands.
     C_STANDARD, OBJC_STANDARD, and the Compile Features functionality gained support for C17 and C23.
     Source file extensions .ixx and .cppm are now treated as C++.
   Command-Line
     cmake(1) gained the --install-prefix <dir> command-line option to specify the location of the install prefix.
     cmake(1) gained the --toolchain <path/to/file> command-line option to specify a toolchain file.
     cmake(1) -E capabilities output, for some generators, may now contain a supportedPlatforms field listing platforms known to be supported in CMAKE_GENERATOR_PLATFORM.
     Messages printed to a terminal now may be colored by message type.
   Compilers
     The Fujitsu compiler is now supported using compiler id Fujitsu in traditional (Trad) mode, and compiler id FujitsuClang in Clang mode.
   Platforms
     CMake now supports the MSYS runtime environment, much like CYGWIN.
   File-Based API
     The cmake-file-api(7) "codemodel" version 2 version field has been updated to 2.3.
     The cmake-file-api(7) "codemodel" version 2 gained a new "directory" object containing directory-level information. This includes a list of installers generated by the install() command.
   Commands
     The add_custom_command() command DEPFILE option:
        may now use generator expressions,
        is now supported by Visual Studio Generators for VS 2012 and above, and
        is now supported by the Xcode generator.
     The add_custom_command(TARGET) command (for Build Events) gained support for resolving target-dependent generator expressions.
     The build_command() command gained a PARALLEL_LEVEL option.
     The file(COPY_FILE) command was added to copy a single file.
     The file(GET_RUNTIME_DEPENDENCIES) command gained new POST_INCLUDE_FILES and POST_EXCLUDE_FILES arguments.
     The file(REAL_PATH) command gained the option EXPAND_TILDE to replace any leading tilde with the path to the user's home directory.
     The file(RENAME) command learned to optionally capture failure in a result variable. It also gained a NO_REPLACE option to fail if the destination exists.
     The install() command gained a new IMPORTED_RUNTIME_ARTIFACTS mode, which can be used to install the runtime artifacts of imported targets.
     The install() command gained a new RUNTIME_DEPENDENCY_SET mode, which can be used to install runtime dependencies using file(GET_RUNTIME_DEPENDENCIES).
     The install(TARGETS) command gained new RUNTIME_DEPENDENCIES and RUNTIME_DEPENDENCY_SET arguments, which can be used to install runtime dependencies using file(GET_RUNTIME_DEPENDENCIES).
     The install(SCRIPT|CODE) command supports a new option ALL_COMPONENTS which allows the corresponding code to run for every component of a per component installation.
     The project() command now sets variables PROJECT_IS_TOP_LEVEL and <PROJECT-NAME>_IS_TOP_LEVEL to indicate whether it was called in a top-level CMakeLists.txt file.
   Variables
     The CMAKE_TOOLCHAIN_FILE environment variable was added to provide a default value for the CMAKE_TOOLCHAIN_FILE variable.
   Properties
     The IMPORTED_TARGETS directory property was added to get a list of Imported Targets created in the current directory.
     The XCODE_EMBED_APP_EXTENSIONS target property was added to tell the Xcode generator to embed app extensions such as iMessage sticker packs. Aspects of the embedding can be customized with the XCODE_EMBED_APP_EXTENSIONS_PATH, XCODE_EMBED_APP_EXTENSIONS_CODE_SIGN_ON_COPY and XCODE_EMBED_APP_EXTENSIONS_REMOVE_HEADERS_ON_COPY properties.
   Modules
     The FindBLAS and FindLAPACK modules learned to support the serial Fujitsu_SSL2 and parallel Fujitsu_SSL2BLAMP libraries.
     The FindDevIL module now provides imported targets.
     The FindIconv module now has version support.
     The FindIntl module now has version support.
     The FindMPI module learned to support Fujitsu and FujitsuClang in both host and cross compiling modes.
     The FindMsys module was added to find MSYS installations. Like FindCygwin, it is used automatically by some other find modules to locate UNIX-style tools on Windows.
     The FindOpenMP module learned to support Fujitsu and FujitsuClang.
     The FindVulkan module gained imported targets Vulkan::Headers and Vulkan::glslangValidator.
     The UseJava module command add_jar gained a RESOURCES option to allow explicit naming of resources with non-optional namespace.
     The UseSWIG module use now standard library naming conventions for the CSharp language. See policy CMP0122.
     The UseSWIG module now supports using the swig tool to generate implicit dependencies with the Xcode generator.
   Generator Expressions
     A new TARGET_RUNTIME_DLLS generator expression was added.
   CTest
     ctest(1) gained documentation for its ability to capture Additional Test Measurements.
     ctest(1) learned to recognize files attached to a test at run time. Previously it was only possible to attach files to tests at configure time by using the ATTACHED_FILES or ATTACHED_FILES_ON_FAIL test properties. See Additional Test Measurements for more information.
     ctest(1) gained a --output-junit option to write test results to a JUnit XML file.
     The ctest_build() command gained a PARALLEL_LEVEL option.
   CPack
     The CPack DragNDrop Generator gained option CPACK_DMG_FILESYSTEM to control the .dmg filesystem.
     The CPack IFW Generator now supports hyphens in names given to cpack_ifw_configure_component() or cpack_ifw_configure_component_group() as DEPENDS or DEPENDENCIES arguments. This requires QtIFW 3.1 or later.
     The CPack NSIS Generator gained a new CPACK_NSIS_EXECUTABLE variable to specify the makensis executable to use instead of the default one.
     The CPACK_CUSTOM_INSTALL_VARIABLES variable was added to set variables in cmake_install.cmake script invocations made by CPack.
   Deprecated and Removed Features
     Undocumented CMAKE_SYSTEM_NAME version-stripping behavior has been removed entirely. If it is set by a -D flag or by a toolchain file, it is left unaltered, even if it still contains a version number. Similar CMAKE_HOST_SYSTEM_NAME version-stripping behavior, also undocumented, has been moved earlier, before project() or enable_language() is called.
     ARMClang cpu/arch compile and link flags are no longer added automatically based on the CMAKE_SYSTEM_PROCESSOR variable or the undocumented CMAKE_SYSTEM_ARCH variable. They must be specified explicitly. See policy CMP0123.
   Other Changes
     The find_file(), find_path(), find_program(), and find_library() commands handle cache variables in the same way regardless how they are defined. See policy CMP0125 for details.
     The find_file(), find_path(), find_program(), and find_library() commands gained the option NO_CACHE to store find result in normal variable.
     The foreach() command now isolates loop variables in the loop scope. See policy CMP0124 for details.
     The list() command's GET, INSERT, SUBLIST, and REMOVE_AT subcommands now error with invalid (i.e., non-integer) values are given as any of their index arguments based on the setting of policy CMP0121.
     The set(CACHE) command no longer removes a normal variable of the same name, if any. See policy CMP0126.
     target_link_libraries() calls referencing object libraries via the TARGET_OBJECTS generator expression now place the object files before all libraries on the link line, regardless of their specified order. See documentation on Linking Object Libraries via $<TARGET_OBJECTS> for details.
     The Ninja Generators now pass source files and include directories to the compiler using absolute paths. This makes diagnostic messages and debug symbols more consistent, and matches the Makefile Generators.
     The NMake Makefiles generator now encodes the generated makefiles as UTF-8 with a BOM when using nmake from VS 9 or above.
     The Visual Studio Generators for VS 2010 and above now place per-source preprocessor definitions after target-wide preprocssor definitions. This makes VS consistent with the Ninja Generators and the Makefile Generators.
     The precompiled binaries provided on cmake.org now support liblzma multi-threading. See the CPACK_THREADS and CPACK_ARCHIVE_THREADS variables.

Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
lfs/cmake