diff --git a/amd/comgr/CMakeLists.txt b/amd/comgr/CMakeLists.txt index 21a544402c48a..ebe727afd7148 100644 --- a/amd/comgr/CMakeLists.txt +++ b/amd/comgr/CMakeLists.txt @@ -9,8 +9,8 @@ set (ver_minor ${CMAKE_MATCH_1}) message("Comgr Version: ${ver_major}.${ver_minor}.0") -project(amd_comgr VERSION "${ver_major}.${ver_minor}.0" LANGUAGES C CXX) -set(amd_comgr_NAME "${PROJECT_NAME}") +project(amd-comgr VERSION "${ver_major}.${ver_minor}.0" LANGUAGES C CXX) +set(amd_comgr_NAME "amd_comgr") # Get git branch and commit hash to add to log for easier debugging. execute_process( @@ -256,11 +256,16 @@ list(APPEND AMD_COMGR_PRIVATE_COMPILE_DEFINITIONS AMD_COMGR_EXPORT) include(bc2h) include(opencl_header) include(DeviceLibs) +include(utils) + +# Set Lintian Support Flags +set( BUILD_ENABLE_LINTIAN_OVERRIDES ON CACHE BOOL "Enable/Disable Lintian Overrides" ) +set( BUILD_DEBIAN_PKGING_FLAG ON CACHE BOOL "Internal Status Flag to indicate Debian Packaging Build" ) # Add major version to the name on windows, including Win64 if (WIN32) set_target_properties(amd_comgr PROPERTIES - OUTPUT_NAME "amd_comgr_${amd_comgr_VERSION_MAJOR}") + OUTPUT_NAME "amd_comgr_${amd-comgr_VERSION_MAJOR}") endif() set_target_properties(amd_comgr PROPERTIES @@ -268,8 +273,8 @@ set_target_properties(amd_comgr PROPERTIES CXX_STANDARD_REQUIRED Yes CXX_EXTENSIONS No) set_target_properties(amd_comgr PROPERTIES - SOVERSION "${amd_comgr_VERSION_MAJOR}" - VERSION "${amd_comgr_VERSION_MAJOR}.${amd_comgr_VERSION_MINOR}.${amd_comgr_VERSION_PATCH}") + SOVERSION "${amd-comgr_VERSION_MAJOR}" + VERSION "${amd-comgr_VERSION_MAJOR}.${amd-comgr_VERSION_MINOR}.${amd-comgr_VERSION_PATCH}") if (NOT COMGR_BUILD_SHARED_LIBS) set_target_properties(amd_comgr PROPERTIES POSITION_INDEPENDENT_CODE ON) @@ -337,15 +342,17 @@ configure_file("cmake/${AMD_COMGR_CONFIG_NAME}.in" "lib/${AMD_COMGR_PACKAGE_PREFIX}/${AMD_COMGR_CONFIG_NAME}" @ONLY) write_basic_package_version_file("${AMD_COMGR_VERSION_PATH}" - VERSION "${amd_comgr_VERSION}" + VERSION "${amd-comgr_VERSION}" COMPATIBILITY SameMajorVersion) if(ENABLE_ASAN_PACKAGING) + set( COMP_TYPE "asan" ) install(TARGETS amd_comgr EXPORT amd_comgr_export COMPONENT asan LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) else() + set( COMP_TYPE "amd-comgr" ) install(TARGETS amd_comgr EXPORT amd_comgr_export COMPONENT amd-comgr @@ -512,19 +519,27 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) set(CPACK_COMPONENTS_ALL amd-comgr) set(PKG_DESC_SUMMARY "Library to provide support functions for ROCm code objects.") endif() - set(CPACK_PACKAGE_NAME comgr) + set(CPACK_PACKAGE_NAME ${PROJECT_NAME}) set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc.") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PKG_DESC_SUMMARY}) set(CPACK_PACKAGE_DESCRIPTION "This package contains the AMD ${CPACK_PACKAGE_DESCRIPTION_SUMMARY}.") - set(CPACK_PACKAGE_VERSION_MAJOR "${amd_comgr_VERSION_MAJOR}") - set(CPACK_PACKAGE_VERSION_MINOR "${amd_comgr_VERSION_MINOR}") - set(CPACK_PACKAGE_VERSION_PATCH "${amd_comgr_VERSION_PATCH}") - set(CPACK_PACKAGE_CONTACT "ROCm Compiler Support ") + set(CPACK_PACKAGE_VERSION_MAJOR "${amd-comgr_VERSION_MAJOR}") + set(CPACK_PACKAGE_VERSION_MINOR "${amd-comgr_VERSION_MINOR}") + set(CPACK_PACKAGE_VERSION_PATCH "${amd-comgr_VERSION_PATCH}") + set(PKG_MAINTAINER_NM "ROCm Compiler Support") + set(PKG_MAINTAINER_EMAIL "rocm.compiler.support@amd.com") + set(CPACK_PACKAGE_CONTACT "${PKG_MAINTAINER_NM} <${PKG_MAINTAINER_EMAIL}>") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt") # ASAN Specific variables - set(CPACK_DEBIAN_ASAN_PACKAGE_NAME comgr-asan) - set(CPACK_RPM_ASAN_PACKAGE_NAME comgr-asan) + set(CPACK_DEBIAN_ASAN_PACKAGE_NAME ${PROJECT_NAME}-asan) + set(CPACK_DEBIAN_ASAN_PACKAGE_PROVIDES comgr-asan) + set(CPACK_DEBIAN_ASAN_PACKAGE_CONFLICTS comgr-asan) + set(CPACK_DEBIAN_ASAN_PACKAGE_REPLACES comgr-asan) + set(CPACK_RPM_ASAN_PACKAGE_NAME ${PROJECT_NAME}-asan) + set(CPACK_RPM_ASAN_PACKAGE_PROVIDES comgr-asan) + set(CPACK_RPM_ASAN_PACKAGE_CONFLICTS comgr-asan) + set(CPACK_RPM_ASAN_PACKAGE_OBSOLETES comgr-asan) # Make proper version for appending set(ROCM_VERSION_FOR_PACKAGE "") @@ -543,9 +558,15 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) # Debian package specific variables set(CPACK_DEB_COMPONENT_INSTALL ON) if(COMGR_BUILD_SHARED_LIBS) - set(CPACK_DEBIAN_AMD-COMGR_PACKAGE_NAME comgr) + set(CPACK_DEBIAN_AMD-COMGR_PACKAGE_NAME ${PROJECT_NAME}) + set(CPACK_DEBIAN_AMD-COMGR_PACKAGE_PROVIDES comgr) + set(CPACK_DEBIAN_AMD-COMGR_PACKAGE_CONFLICTS comgr) + set(CPACK_DEBIAN_AMD-COMGR_PACKAGE_REPLACES comgr) else() - set(CPACK_DEBIAN_AMD-COMGR_PACKAGE_NAME comgr-static-dev) + set(CPACK_DEBIAN_AMD-COMGR_PACKAGE_NAME ${PROJECT_NAME}-static-dev) + set(CPACK_DEBIAN_AMD-COMGR_PACKAGE_PROVIDES comgr-static-dev) + set(CPACK_DEBIAN_AMD-COMGR_PACKAGE_CONFLICTS comgr-static-dev) + set(CPACK_DEBIAN_AMD-COMGR_PACKAGE_REPLACES comgr-static-dev) endif() set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/ROCm/llvm-project/tree/amd-staging/amd/comgr") set(DEBIAN_DEPENDENCIES "libzstd1, zlib1g, libc6, libstdc++6, libgcc-s1 | libgcc1") @@ -565,9 +586,15 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) # RPM package specific variables set(CPACK_RPM_COMPONENT_INSTALL ON) if(COMGR_BUILD_SHARED_LIBS) - set(CPACK_RPM_AMD-COMGR_PACKAGE_NAME comgr) + set(CPACK_RPM_AMD-COMGR_PACKAGE_NAME ${PROJECT_NAME}) + set(CPACK_RPM_AMD-COMGR_PACKAGE_PROVIDES comgr) + set(CPACK_RPM_AMD-COMGR_PACKAGE_CONFLICTS comgr) + set(CPACK_RPM_AMD-COMGR_PACKAGE_REPLACES comgr) else() - set(CPACK_RPM_AMD-COMGR_PACKAGE_NAME comgr-static-devel) + set(CPACK_RPM_AMD-COMGR_PACKAGE_NAME ${PROJECT_NAME}-static-devel) + set(CPACK_RPM_AMD-COMGR_PACKAGE_PROVIDES comgr-static-devel) + set(CPACK_RPM_AMD-COMGR_PACKAGE_CONFLICTS comgr-static-devel) + set(CPACK_RPM_AMD-COMGR_PACKAGE_REPLACES comgr-static-devel) endif() execute_process(COMMAND rpm --eval %{?dist} @@ -616,5 +643,27 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) string(REGEX REPLACE ",? ?rocm-core-asan" "" CPACK_DEBIAN_ASAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_ASAN_PACKAGE_DEPENDS}) endif() + # Configure Lintian Specific Package Data + configure_pkg( ${CPACK_PACKAGE_NAME} ${COMP_TYPE} ${CPACK_PACKAGE_VERSION} ${PKG_MAINTAINER_NM} ${PKG_MAINTAINER_EMAIL} ) + + # Custom installation for Debian Lintian File + if( BUILD_ENABLE_LINTIAN_OVERRIDES STREQUAL "ON" AND BUILD_DEBIAN_PKGING_FLAG STREQUAL "ON") + set( OVERRIDE_FILE "${CMAKE_BINARY_DIR}/DEBIAN/${DEB_OVERRIDES_INSTALL_FILENM}" ) + set( OVERRIDE_TEMP_INSTALL_LOC "/_CPack_Packages/Linux/DEB/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-Linux/${COMP_TYPE}" ) + if(BUILD_SHARED_LIBS) + set(CPACK_INSTALL_COMMANDS + "${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}${OVERRIDE_TEMP_INSTALL_LOC}${DEB_OVERRIDES_INSTALL_PATH}" + "${CMAKE_COMMAND} -E copy ${OVERRIDE_FILE} ${CMAKE_BINARY_DIR}${OVERRIDE_TEMP_INSTALL_LOC}${DEB_OVERRIDES_INSTALL_PATH}" + ) + else + set( OVERRIDE_FILE_STATIC "${DEB_OVERRIDES_INSTALL_FILENM}-static-dev" ) + set(CPACK_INSTALL_COMMANDS + "${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}${OVERRIDE_TEMP_INSTALL_LOC}${DEB_OVERRIDES_INSTALL_PATH}" + "${CMAKE_COMMAND} -E copy ${OVERRIDE_FILE} \ + ${CMAKE_BINARY_DIR}${OVERRIDE_TEMP_INSTALL_LOC}${DEB_OVERRIDES_INSTALL_PATH}${OVERRIDE_FILE_STATIC}" + ) + endif() + endif() + include(CPack) endif() diff --git a/amd/comgr/DEBIAN/changelog.in b/amd/comgr/DEBIAN/changelog.in new file mode 100644 index 0000000000000..95ba9572fbd9b --- /dev/null +++ b/amd/comgr/DEBIAN/changelog.in @@ -0,0 +1,5 @@ +@DEB_PACKAGE_NAME@ (@DEB_PACKAGE_VERSION@) stable; urgency=low + + * ROCm Runtime software stack Base Package. + -- @DEB_MAINTAINER_NAME@ <@DEB_MAINTAINER_EMAIL@> @DEB_TIMESTAMP@ + diff --git a/amd/comgr/DEBIAN/copyright.in b/amd/comgr/DEBIAN/copyright.in new file mode 100644 index 0000000000000..d55487b116e57 --- /dev/null +++ b/amd/comgr/DEBIAN/copyright.in @@ -0,0 +1,25 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: @DEB_PACKAGE_NAME@ +Upstream-Contact: @DEB_MAINTAINER_NAME@ <@DEB_MAINTAINER_EMAIL@> +Source: https://github.com/ROCm/llvm-project +Files: * +License: @DEB_LICENSE@ +Copyright: @DEB_COPYRIGHT_YEAR@ Advanced Micro Devices, Inc. All rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/amd/comgr/DEBIAN/overrides.in b/amd/comgr/DEBIAN/overrides.in new file mode 100644 index 0000000000000..6bee886c102b6 --- /dev/null +++ b/amd/comgr/DEBIAN/overrides.in @@ -0,0 +1,3 @@ +@DEB_OVERRIDES_INSTALL_FILENM@: no-copyright-file +@DEB_OVERRIDES_INSTALL_FILENM@: debian-changelog-file-missing +@DEB_OVERRIDES_INSTALL_FILENM@: dir-or-file-in-opt diff --git a/amd/comgr/cmake/utils.cmake b/amd/comgr/cmake/utils.cmake new file mode 100644 index 0000000000000..f1220fda5e897 --- /dev/null +++ b/amd/comgr/cmake/utils.cmake @@ -0,0 +1,102 @@ +## Configure Lintian Specific install Files for Debian Package +function( configure_pkg PACKAGE_NAME_T COMPONENT_NAME_T PACKAGE_VERSION_T MAINTAINER_NM_T MAINTAINER_EMAIL_T) + # Check If Debian Platform + find_file (DEBIAN debian_version debconf.conf PATHS /etc) + if(DEBIAN) + set( BUILD_DEBIAN_PKGING_FLAG ON CACHE BOOL "Internal Status Flag to indicate Debian Packaging Build" FORCE ) + set_debian_pkg_cmake_flags( ${PACKAGE_NAME_T} ${PACKAGE_VERSION_T} + ${MAINTAINER_NM_T} ${MAINTAINER_EMAIL_T} ) + + # Configure the copyright file + configure_file( + "${CMAKE_SOURCE_DIR}/DEBIAN/copyright.in" + "${CMAKE_BINARY_DIR}/DEBIAN/copyright" + @ONLY + ) + + # Install copyright file + install ( FILES "${CMAKE_BINARY_DIR}/DEBIAN/copyright" + DESTINATION "${CMAKE_INSTALL_DOCDIR}" + COMPONENT ${COMPONENT_NAME_T} ) + + # Configure the changelog file + configure_file( + "${CMAKE_SOURCE_DIR}/DEBIAN/changelog.in" + "${CMAKE_BINARY_DIR}/DEBIAN/changelog.Debian" + @ONLY + ) + + if( BUILD_ENABLE_LINTIAN_OVERRIDES ) + if(ENABLE_ASAN_PACKAGING) + string( FIND ${DEB_OVERRIDES_INSTALL_FILENM} "asan" OUT_VAR2) + if(OUT_VAR2 EQUAL -1) + set( DEB_OVERRIDES_INSTALL_FILENM "${DEB_OVERRIDES_INSTALL_FILENM}-asan" ) + endif() + endif() + set( DEB_OVERRIDES_INSTALL_FILENM + "${DEB_OVERRIDES_INSTALL_FILENM}" CACHE STRING "Debian Package Lintian Override File Name" FORCE) + # Configure the changelog file + configure_file( + "${CMAKE_SOURCE_DIR}/DEBIAN/overrides.in" + "${CMAKE_BINARY_DIR}/DEBIAN/${DEB_OVERRIDES_INSTALL_FILENM}" + FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ + @ONLY + ) + endif() + + # Install Change Log + find_program ( DEB_GZIP_EXEC gzip ) + if(EXISTS "${CMAKE_BINARY_DIR}/DEBIAN/changelog.Debian" ) + execute_process( + COMMAND ${DEB_GZIP_EXEC} -f -n -9 "${CMAKE_BINARY_DIR}/DEBIAN/changelog.Debian" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/DEBIAN" + RESULT_VARIABLE result + OUTPUT_VARIABLE output + ERROR_VARIABLE error + ) + if(NOT ${result} EQUAL 0) + message(FATAL_ERROR "Failed to compress: ${error}") + endif() + install ( FILES "${CMAKE_BINARY_DIR}/DEBIAN/${DEB_CHANGELOG_INSTALL_FILENM}" + DESTINATION ${CMAKE_INSTALL_DOCDIR} + COMPONENT ${COMPONENT_NAME_T}) + endif() + + endif() +endfunction() + +# Set variables for changelog and copyright +# For Debian specific Packages +function( set_debian_pkg_cmake_flags DEB_PACKAGE_NAME_T DEB_PACKAGE_VERSION_T DEB_MAINTAINER_NM_T DEB_MAINTAINER_EMAIL_T ) + # Setting configure flags + set( DEB_PACKAGE_NAME "${DEB_PACKAGE_NAME_T}" CACHE STRING "Debian Package Name" ) + set( DEB_PACKAGE_VERSION "${DEB_PACKAGE_VERSION_T}" CACHE STRING "Debian Package Version String" ) + set( DEB_MAINTAINER_NAME "${DEB_MAINTAINER_NM_T}" CACHE STRING "Debian Package Maintainer Name" ) + set( DEB_MAINTAINER_EMAIL "${DEB_MAINTAINER_EMAIL_T}" CACHE STRING "Debian Package Maintainer Email" ) + set( DEB_COPYRIGHT_YEAR "2025" CACHE STRING "Debian Package Copyright Year" ) + set( DEB_LICENSE "NCSA" CACHE STRING "Debian Package License Type" ) + set( DEB_CHANGELOG_INSTALL_FILENM "changelog.Debian.gz" CACHE STRING "Debian Package ChangeLog File Name" ) + + if( BUILD_ENABLE_LINTIAN_OVERRIDES ) + set( DEB_OVERRIDES_INSTALL_FILENM "${DEB_PACKAGE_NAME}" CACHE STRING "Debian Package Lintian Override File Name" ) + set( DEB_OVERRIDES_INSTALL_PATH "/usr/share/lintian/overrides/" CACHE STRING "Deb Pkg Lintian Override Install Loc" ) + endif() + + # Get TimeStamp + find_program( DEB_DATE_TIMESTAMP_EXEC date ) + set ( DEB_TIMESTAMP_FORMAT_OPTION "-R" ) + execute_process ( + COMMAND ${DEB_DATE_TIMESTAMP_EXEC} ${DEB_TIMESTAMP_FORMAT_OPTION} + OUTPUT_VARIABLE TIMESTAMP_T + ) + set( DEB_TIMESTAMP "${TIMESTAMP_T}" CACHE STRING "Current Time Stamp for Copyright/Changelog" ) + + message(STATUS "DEB_PACKAGE_NAME : ${DEB_PACKAGE_NAME}" ) + message(STATUS "DEB_PACKAGE_VERSION : ${DEB_PACKAGE_VERSION}" ) + message(STATUS "DEB_MAINTAINER_NAME : ${DEB_MAINTAINER_NAME}" ) + message(STATUS "DEB_MAINTAINER_EMAIL : ${DEB_MAINTAINER_EMAIL}" ) + message(STATUS "DEB_COPYRIGHT_YEAR : ${DEB_COPYRIGHT_YEAR}" ) + message(STATUS "DEB_LICENSE : ${DEB_LICENSE}" ) + message(STATUS "DEB_TIMESTAMP : ${DEB_TIMESTAMP}" ) + message(STATUS "DEB_CHANGELOG_INSTALL_FILENM : ${DEB_CHANGELOG_INSTALL_FILENM}" ) +endfunction() diff --git a/amd/comgr/include/amd_comgr.h.in b/amd/comgr/include/amd_comgr.h.in index e4d66f3491403..a05507bca6d9b 100644 --- a/amd/comgr/include/amd_comgr.h.in +++ b/amd/comgr/include/amd_comgr.h.in @@ -74,8 +74,8 @@ #endif #endif -#define AMD_COMGR_INTERFACE_VERSION_MAJOR @amd_comgr_VERSION_MAJOR@ -#define AMD_COMGR_INTERFACE_VERSION_MINOR @amd_comgr_VERSION_MINOR@ +#define AMD_COMGR_INTERFACE_VERSION_MAJOR @amd-comgr_VERSION_MAJOR@ +#define AMD_COMGR_INTERFACE_VERSION_MINOR @amd-comgr_VERSION_MINOR@ #ifdef __cplusplus extern "C" {