Historically, the MD5 checksums in our LFS files serve as a protection
against broken downloads, or accidentally corrupted source files.
While the sources are nowadays downloaded via HTTPS, it make sense to
beef up integrity protection for them, since transparently intercepting
TLS is believed to be feasible for more powerful actors, and the state
of the public PKI ecosystem is clearly not helping.
Therefore, this patch switches from MD5 to BLAKE2, updating all LFS
files as well as make.sh to deal with this checksum algorithm. BLAKE2 is
notably faster (and more secure) than SHA2, so the performance penalty
introduced by this patch is negligible, if noticeable at all.
In preparation of this patch, the toolchain files currently used have
been supplied with BLAKE2 checksums as well on
https://source.ipfire.org/.
Cc: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Peter Müller <peter.mueller@ipfire.org>
Acked-by: Michael Tremer <michael.tremeripfire.org>
- 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>
- Update from 3.20.3 to 3.20.4
- Update of rootfile not required.
- Changelog
Changes in 3.20.4 since 3.20.3:
Ben Boeckel (1):
ci: use consistent sccache builds
Brad King (8):
VS: Add special case for '-T version=14.29.16.10' under VS 16.10
VS: Add flag table entries for '/external:W*' flags in VS 16.10
gitlab-ci: Update Windows builds to MSVC 19.29-16.10 toolset
Makefiles: Fix CMAKE_EXPORT_COMPILE_COMMANDS crash with custom compile rule
presets: Fix buildPreset "jobs" field test case
IRSL: Add Intel oneAPI redist location on Windows
fileapi: Fix codemodel-v2 link command fragment relative paths
John Drouhard (1):
FindBoost: Add check for json component header in Boost 1.75+
Marc Chevrier (1):
Help: cmake_path: fix erroneous example for IS_PREFIX
Raul Tambre (2):
MSVC: C++20 final flag, C++23 support
Clang/MSVC: C++20 final flag, C++23 support
Sam Freed (2):
presets: Fix buildPreset "jobs"
presets: Fix buildPreset "targets" not allowing a single string
Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
- Update from 3.20.2 to 3.20.3
- Update of rootfile not required
- Changelog
Changes made since CMake 3.20.2:
Brad King (7):
Help: Use relative path for IDE Integration guide link to preset schema
BinUtils: Use more-private temporary variable names
ObjectiveC: Respect OSX_ARCHITECTURES for OBJC
FindBoost: Add support for Boost 1.76
Ninja: Restore support for Fortran in a symlinked build tree
Utilities/Sphinx: Update man page config for Sphinx 4
CMake 3.20.3
Craig Scott (2):
ExternalProject: Ensure git fetch if updating to hash we don’t have yet
ExternalProject: Only add git config setting with git 1.7.7 or later
Kyle Edwards (2):
Ninja Multi-Config: Split long command lines by config
CMP0082: Check EXCLUDE_FROM_ALL property at generate time
Raul Tambre (3):
GNU: C++17 default version
GNU: Final C++20 flags
GNU: C++23 support
Robert Maynard (6):
CUDA: improve regex for CUDA Toolkit root from nvcc verbose output
cmCommandLineArgument: Correctly record parsing failures
cmake: --build and --install error out when encountering bad flags
cmCommandLineArgument: Provide more information syntax error messages
NVHPC: Support explicit language flags
NVHPC: Support Ninja dependency scanning
Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
- Update from 3.20.0 to 3.20.2
- Update rootfile
- Changelog
3.20.1
-The FindIntl module in CMake 3.20.0 added checks
Intl_HAVE_GETTEXT_BUILTIN, Intl_HAVE_DCGETTEXT_BUILTIN, and
Intl_IS_BUILTIN, but they were not implemented correctly. These have
been removed and replaced with a single Intl_IS_BUILT_IN check, whose
name is consistent with the FindIconv module.
-The -rpath linker flag is now specified as supported on all Apple
platforms, not just macOS. The install_name_dir used for iOS, tvOS
and watchOS should now default to @rpath instead of using a full
absolute path and failing at runtime when the library or framework
is embedded in an application bundle (see XCODE_EMBED_<type>).
3.20.2
-The Intel Classic 2021 compiler version numbers are now detected
correctly as having major version 2021. CMake 3.20.1 and below were
not aware of a change to the identification macro version scheme
made by Intel starting in version 2021, and detected the version
as 20.2.
-The Intel oneAPI Fortran compiler is now identified as IntelLLVM.
The oneAPI 2021.1 Fortran compiler is missing an identification
macro, so CMake 3.20.1 and below identified it as Intel. CMake now
has a special case to recognize oneAPI 2021.1 Fortran as IntelLLVM.
The oneAPI 2021.2 Fortran compiler defines the proper identification
macro and so is identified as IntelLLVM by all CMake 3.20 versions.
Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Most of these files still used old dates and/or domain names for contact
mail addresses. This is now replaced by an up-to-date copyright line.
Just some housekeeping... :-)
Signed-off-by: Peter Müller <peter.mueller@link38.eu>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Building cmake uses a high amount of memory (>2G) and
fails to build on my system. Using less processes reduces
memory usage and lets the build succeed.
Signed-off-by: Daniel Weismüller <daniel.weismueller@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>