From a45296218ee5afa6a0443ef825bca2fc9558ea62 Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Mon, 15 Jul 2024 16:38:24 -0600 Subject: [PATCH 1/2] Update version number and changelog for ROCm 6.1 (#169) (#209) * Update version number and changelog for ROCm 6.1 (#169) * Update version in CMakeLists.txt to match changelog (#210) * Update version in CMakeLists.txt to match changelog * Fix markdownlint formatting in changelog --------- Co-authored-by: Cory Bloor --- CHANGELOG.md | 110 ++++++++++++++++++++++++++++++++++++------------- CMakeLists.txt | 2 +- 2 files changed, 83 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 87354422..1ddfe3fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,104 +1,146 @@ # Change Log for rocm-cmake ## [(Unreleased) rocm-cmake 0.13.0 for ROCm 6.2.0] + ### Changed + - ROCmCreatePackage: Accepts a suffix parameter, automatically generating it for static or ASAN builds. - Package names will no longer be pulled from `CPACK__PACKAGE_NAME` - Runtime packages will no longer be generated for static builds + ## [rocm-cmake 0.12.0 for ROCm 6.1.0] + ### Added + - ROCMTest: Add rpath to installed tests - AOCMCreatePackage: Allow additional provides on header-only packages - ROCMSphinxDoc: Allow separate source and config directories + ### Changed + - Renamed CMake package to ROCmCMakeBuildTools. A wrapper has been provided to ensure that `find_package(ROCM)` continues to work, but it is recommended that developers switch to `find_package(ROCmCMakeBuildTools)` - ROCMInstallTargets: Stopped installing executables in ASAN builds + ### Fixed + - ROCMClangTidy: Fixed invalid list index in clang tidy - Fixed test failures when `ROCM_CMAKE_GENERATOR` is an empty string ## [rocm-cmake 0.11.0 for ROCm 6.0.0] + ### Changed + - ROCMSphinxDoc: Improved validation, documentation and rocm-docs-core integration. - Rename CMake package to ROCmCMakeBuildTools + ### Fixed + - ROCMClangTidy: Fixed extra make flags passed for clang tidy. - ROCMTest: Fixed issues when using module in a subdirectory. ## [rocm-cmake 0.10.0 for ROCm 5.7.0] + ### Added + - Added ROCMTest module - ROCMCreatePackage: Added support for ASAN packages ## [rocm-cmake 0.9.0 for ROCm 5.6.0] + ### Added + - Added the option ROCM_HEADER_WRAPPER_WERROR - - Compile-time C macro in the wrapper headers causes errors to be emitted instead of warnings. - - Configure-time CMake option sets the default for the C macro. + - Compile-time C macro in the wrapper headers causes errors to be emitted instead of warnings. + - Configure-time CMake option sets the default for the C macro. ## [rocm-cmake 0.8.1 for ROCm 5.5] + ### Fixed + - ROCMInstallTargets: Added compatibility symlinks for included cmake files in `/lib/cmake/`. + ### Changed + - ROCMHeaderWrapper: The wrapper header deprecation message is now a deprecation warning. ## [rocm-cmake 0.8.0 for ROCm 5.4] + ### Fixed + - ROCMCreatePackage: Fixed error in prerm scripts that could break package upgrades when using the `PTH` option. - Removed unnecessary requirement for having C and C++ compilers available when building rocm-cmake from source. + ### Known issues + - This release did not have a unique version number. ## [rocm-cmake 0.8.0 for ROCm 5.3] + ### Fixed + - Fixed error in prerm scripts created by `rocm_create_package` that could break uninstall for packages using the `PTH` option. + ### Changed + - `ROCM_USE_DEV_COMPONENT` set to on by default for all platforms. This means that Windows will now generate runtime and devel packages by default - ROCMInstallTargets now defaults `CMAKE_INSTALL_LIBDIR` to `lib` if not otherwise specified. - Changed default Debian compression type to xz and enabled multi-threaded package compression. - `rocm_create_package` will no longer warn upon failure to determine version of program rpmbuild. ## [0.7.3] + ### Added + - Header wrapper functionality included. This is to support the change in header file locations in ROCm 5.2, while providing backwards compatibility via header file wrappers. The associated deprecation warning can be disabled by defining `ROCM_NO_WRAPPER_HEADER_WARNING` before including the wrapper header. + ### Fixed + - Fixed spurious failures in `rocm_check_target_ids` for target ids with target features when `-Werror` is enabled. The `HAVE_` result variable has been renamed to `COMPILER_HAS_TARGET_ID_`. ## [0.7.2] + - `rocm_create_package` now will attempt to set a default `CPACK_GENERATOR` based on the `ROCM_PKGTYPE` environment variable if one is not already set. ## [0.7.1] + ### Added + - `CLANG_TIDY_USE_COLOR` variable added to control the color output from `clang-tidy`, by default this is `On`. - If `CPACK_RESOURCE_FILE_LICENSE` is not set, `rocm_create_package` will now automatically attempt to find a LICENSE, LICENSE.txt, or LICENSE.md file in the top-level CMake source directory. If one is found, it is set up as the license file for the package. ## [0.7.0] + ### Added + - Component packaging functionality: - - `rocm_package_setup_component` sets up a component for packaging, with the given name and values for the component and associated package. + - `rocm_package_setup_component` sets up a component for packaging, with the given name and values for the component and associated package. - - The variable `ROCM_PACKAGE_COMPONENTS` stores a list of the components which have been set up with `rocm_package_setup_component`. - - `rocm_package_add_rpm_dependencies` adds any number of dependencies to the RPM package for an optional specified component, including version checks (e.g. `foo >= 1.0`) - - `rocm_package_add_deb_dependencies` adds any number of dependencies to the DEB package for an optional specified component, including version checks (e.g. `foo >= 1.0`) - - Note that this version format matches RPM, it is reformatted to the Debian package format. This is to reduce code duplication. - - `rocm_package_add_dependencies` is a convenience wrapper which calls both `rocm_add_rpm_dependencies` and `rocm_add_deb_dependencies` to add any number of dependencies to both packages for an optional specified component. + - The variable `ROCM_PACKAGE_COMPONENTS` stores a list of the components which have been set up with `rocm_package_setup_component`. + - `rocm_package_add_rpm_dependencies` adds any number of dependencies to the RPM package for an optional specified component, including version checks (e.g. `foo >= 1.0`) + - `rocm_package_add_deb_dependencies` adds any number of dependencies to the DEB package for an optional specified component, including version checks (e.g. `foo >= 1.0`) + - Note that this version format matches RPM, it is reformatted to the Debian package format. This is to reduce code duplication. + - `rocm_package_add_dependencies` is a convenience wrapper which calls both `rocm_add_rpm_dependencies` and `rocm_add_deb_dependencies` to add any number of dependencies to both packages for an optional specified component. - Client packaging functions: - - `rocm_package_setup_client_component` is a convenience wrapper which adds the library as a runtime dependency if shared libraries were built, and sets the parent of the client package to `clients`. + - `rocm_package_setup_client_component` is a convenience wrapper which adds the library as a runtime dependency if shared libraries were built, and sets the parent of the client package to `clients`. - Utility functions: - - `rocm_join_if_set` joins any number of non-empty strings to the end of a given variable interspersed with a specified glue string, setting that variable if it was previously empty - - `rocm_find_program_version` checks to see if the given command is available, and if it is available that the version matches some criteria. The detected version is returned in ``, and whether it matches all given criteria in `_OK`. - - `` defaults to `_VERSION` if not specified. + - `rocm_join_if_set` joins any number of non-empty strings to the end of a given variable interspersed with a specified glue string, setting that variable if it was previously empty + - `rocm_find_program_version` checks to see if the given command is available, and if it is available that the version matches some criteria. The detected version is returned in ``, and whether it matches all given criteria in `_OK`. + - `` defaults to `_VERSION` if not specified. + ### Changed + - If `ROCM_PACKAGE_COMPONENTS` is set (either manually or by `rocm_package_setup_component`), then the components listed in `ROCM_PACKAGE_COMPONENTS` will be built as separate packages. - `rocm_read_os_release` and `rocm_set_os_id` moved to the utilities file. As this file is included in `ROCMCreatePackage.cmake`, this change is backwards compatible. - `rocm_install_symlink_subdir` now accepts a `COMPONENT` argument, which controls the component that the symlinks are installed into. ## [0.6.2] + ### Changed + - If the ROCm platform version that is being built for is less than version 4.5.0, `ROCM_DEP_ROCMCORE` is automatically disabled. - The ROCm platform version is determined by: - the user-set CMake variable `ROCM_PLATFORM_VERSION`; otherwise @@ -107,44 +149,56 @@ - If the ROCm platform version is not set, then it is assumed to be greater than 4.5.0. ## [0.6.1] + ### Added + - Modules added to generate documentation: - - `ROCMDocs` - - `ROCMDoxygenDoc` - - `ROCMSphinxDoc` + - `ROCMDocs` + - `ROCMDoxygenDoc` + - `ROCMSphinxDoc` + ## [0.6.0] + ### Added + - `ADDONS` flag added to `rocm_enable_cppcheck` in order to run with addons - The cache variable `ROCM_USE_DEV_COMPONENT` may be set to `OFF` to build with legacy behaviour. - - On Windows, this variable defaults to `OFF`. + - On Windows, this variable defaults to `OFF`. - `rocm_install_targets` can now install to a specific component using COMPONENT argument. - `rocm_install` is a wrapper on `install`: - - If the installation mode is TARGETS, call `rocm_install_targets` with the same arguments. - - If `ROCM_USE_DEV_COMPONENT` is `OFF` or COMPONENT is specified, call `install` with the same arguments. - - Otherwise, insert the correct arguments to install everything except libraries to the `devel` package, and install libraries to the base package with namelinks in the `devel` package. + - If the installation mode is TARGETS, call `rocm_install_targets` with the same arguments. + - If `ROCM_USE_DEV_COMPONENT` is `OFF` or COMPONENT is specified, call `install` with the same arguments. + - Otherwise, insert the correct arguments to install everything except libraries to the `devel` package, and install libraries to the base package with namelinks in the `devel` package. + ### Changed + - If `ROCM_USE_DEV_COMPONENT` is `ON`: - - `rocm_install_targets`: - - Unless COMPONENT is specified, library targets will be installed to the default package and namelinked in the devel package. - - Unless COMPONENT is specified, everything else (including any files/folders specified by INCLUDE) will be installed to the devel package. - - If COMPONENT was specified in the call to `rocm_install_targets`, that component is used instead of the above behaviour. - - `rocm_export_targets`: - - All cmake files will be installed to the devel package. - - `rocm_create_package`: - - Package generation will be performed component-wise, and automatically include the devel component, even if the COMPONENTS argument was not provided. - - If provided with the `HEADER_ONLY` option (accepting no arguments), then only the devel package will be generated. The devel package will also have the "Provides" field populated with the name/version of the runtime package for backwards compatibility. This provides field is introduced as a deprecated feature, and will be removed in a future release. + - `rocm_install_targets`: + - Unless COMPONENT is specified, library targets will be installed to the default package and namelinked in the devel package. + - Unless COMPONENT is specified, everything else (including any files/folders specified by INCLUDE) will be installed to the devel package. + - If COMPONENT was specified in the call to `rocm_install_targets`, that component is used instead of the above behaviour. + - `rocm_export_targets`: + - All cmake files will be installed to the devel package. + - `rocm_create_package`: + - Package generation will be performed component-wise, and automatically include the devel component, even if the COMPONENTS argument was not provided. + - If provided with the `HEADER_ONLY` option (accepting no arguments), then only the devel package will be generated. The devel package will also have the "Provides" field populated with the name/version of the runtime package for backwards compatibility. This provides field is introduced as a deprecated feature, and will be removed in a future release. - Corrects semantic versioning to SameMajorVersion compatibility (e.g. 0.6 is compatible if 0.5 is requested). - Moved ROCMConfigVersion.cmake file to share/rocm/cmake directory for better compatibility with automatic installation. - Correct CHANGELOG.md formatting ## [0.5.1] + ### Added + - Add ROCMConfigVersion.cmake file so cmake can check the version - Switched to semantic versioning ## [0.5] + ### Added + - Change Log added and version number incremented ## [0.4] + Pre Change Log versions diff --git a/CMakeLists.txt b/CMakeLists.txt index b5a38199..01b04bf6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,7 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/share/rocmcmakebuildtool include(ROCMCreatePackage) include(ROCMSetupVersion) -rocm_setup_version(VERSION 0.11.0) +rocm_setup_version(VERSION 0.13.0) include(CMakePackageConfigHelpers) write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/ROCmCMakeBuildToolsConfigVersion.cmake From 0f3cadab979fa15a5c97d90a565fcbbecb3e5992 Mon Sep 17 00:00:00 2001 From: Lauren Wrubleski Date: Fri, 19 Jul 2024 03:10:08 -0600 Subject: [PATCH 2/2] Don't set `CPACK_RPM_MAIN_COMPONENT' for ASAN builds Setting `CPACK_RPM_MAIN_COMPONENT` to any component causes the package name for that component to be automatically generated from `CPACK_PACKAGE_NAME` (ignoring the other work we've done to correct the name), which in particular causes the runtime packages for ASAN builds to not be generated with the ASAN suffix. In order to minimize the impact, I'm disabling this call only in the case that we're doing an ASAN build, I don't want to break any other spots where it is actually working correctly, but I think we should investigate removing this entirely. --- share/rocmcmakebuildtools/cmake/ROCMCreatePackage.cmake | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/share/rocmcmakebuildtools/cmake/ROCMCreatePackage.cmake b/share/rocmcmakebuildtools/cmake/ROCMCreatePackage.cmake index 3733c74a..1cab2d8d 100755 --- a/share/rocmcmakebuildtools/cmake/ROCMCreatePackage.cmake +++ b/share/rocmcmakebuildtools/cmake/ROCMCreatePackage.cmake @@ -531,7 +531,9 @@ macro(rocm_set_comp_cpackvar HEADER_ONLY NAME_SUFFIX components) set(CPACK_DEBIAN_RUNTIME_FILE_NAME "DEB-DEFAULT") endif() if (NOT ${HEADER_ONLY} AND BUILD_SHARED_LIBS) - set(CPACK_RPM_MAIN_COMPONENT "runtime") + if (NOT ENABLE_ASAN_PACKAGING) + set(CPACK_RPM_MAIN_COMPONENT "runtime") + endif() list(APPEND CPACK_COMPONENTS_ALL runtime) endif() endif()