2025-10-21 23:04:23 -04:00
|
|
|
##Copyright © Advanced Micro Devices, Inc., or its affiliates.
|
|
|
|
|
##SPDX-License-Identifier: MIT
|
2022-10-18 10:35:37 +05:30
|
|
|
|
|
|
|
|
cmake_minimum_required( VERSION 3.16 )
|
|
|
|
|
set( CORE_TARGET "rocm-core" )
|
|
|
|
|
|
|
|
|
|
project( ${CORE_TARGET} CXX )
|
|
|
|
|
|
2024-01-22 09:25:02 -08:00
|
|
|
## Define Lib Target Name and Lib Target Install Dir to be available to c++ source
|
|
|
|
|
add_definitions( -DTARGET_LIBRARY_NAME=\"${CORE_TARGET}\" -DTARGET_LIBRARY_INSTALL_DIR=\"${CMAKE_INSTALL_LIBDIR}\" )
|
|
|
|
|
|
2024-09-17 10:16:24 -07:00
|
|
|
## Build Type Settings
|
|
|
|
|
set( CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." )
|
|
|
|
|
|
2022-10-18 10:35:37 +05:30
|
|
|
## Verbose output.
|
|
|
|
|
set( CMAKE_VERBOSE_MAKEFILE on )
|
2025-05-12 17:22:02 +05:30
|
|
|
include( GNUInstallDirs )
|
|
|
|
|
|
|
|
|
|
if(ENABLE_ASAN_PACKAGING)
|
|
|
|
|
# Only libraries required for ASAN Package
|
|
|
|
|
set( CPACK_COMPONENTS_ALL CORE_ASAN )
|
|
|
|
|
set( COMP_TYPE "CORE_ASAN" )
|
|
|
|
|
set( PKG_DESCRIPTION "ROCm AddressSanitizer Instrumented Runtime software stack" )
|
|
|
|
|
set( CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DOCDIR}-asan" )
|
|
|
|
|
else()
|
|
|
|
|
if(BUILD_SHARED_LIBS)
|
|
|
|
|
set( CPACK_COMPONENTS_ALL CORE_RUNTIME )
|
|
|
|
|
set( COMP_TYPE "CORE_RUNTIME" )
|
|
|
|
|
set( PKG_DESCRIPTION "ROCm Runtime software stack" )
|
|
|
|
|
else()
|
|
|
|
|
set( CPACK_COMPONENTS_ALL CORE_STATIC )
|
|
|
|
|
set( STATIC_COMP_TYPE "CORE_STATIC" )
|
|
|
|
|
set( PKG_DESCRIPTION "ROCm Static software stack" )
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
2022-10-18 10:35:37 +05:30
|
|
|
|
|
|
|
|
include( utils.cmake )
|
|
|
|
|
|
2023-01-06 12:37:49 +05:30
|
|
|
#Parse Version
|
|
|
|
|
message( STATUS "ROCM_VERSION = ${ROCM_VERSION}" )
|
|
|
|
|
parse_rocm_version( ${ROCM_VERSION} )
|
|
|
|
|
|
2022-10-18 10:35:37 +05:30
|
|
|
set( CPACK_PACKAGING_INSTALL_PREFIX "/opt/rocm" CACHE PATH "default cpack directory" )
|
|
|
|
|
set( BUILD_SHARED_LIBS ON CACHE BOOL "Build shared library (.so) or not." )
|
|
|
|
|
set( CPACK_GENERATOR "TGZ;DEB;RPM" CACHE STRING "package types to be produced " )
|
2025-09-10 12:06:14 -04:00
|
|
|
set( LICENSE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md" CACHE PATH "Path to License File in source dir" )
|
2022-10-18 10:35:37 +05:30
|
|
|
set( BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR} )
|
2025-05-07 18:48:46 -04:00
|
|
|
set( EXTENDED_PACKAGE_DESCRIPTION
|
2025-06-01 18:48:30 -04:00
|
|
|
"ROCM-CORE package helps to get ROCm release version,get install path.
|
|
|
|
|
It is also important to note that ROCM-CORE takes the role as a base
|
|
|
|
|
component on which all of ROCm can depend, to make it easy to remove
|
|
|
|
|
all of ROCm with a package manager." )
|
2022-10-18 10:35:37 +05:30
|
|
|
|
2025-05-27 12:20:55 -04:00
|
|
|
set( BUILD_ENABLE_LINTIAN_OVERRIDES OFF CACHE BOOL "Enable/Disable Lintian Overrides" )
|
|
|
|
|
set( BUILD_DEBIAN_PKGING_FLAG OFF CACHE BOOL "Internal Status Flag to indicate Debian Packaging Build" )
|
|
|
|
|
|
2023-01-06 12:37:49 +05:30
|
|
|
## Set variables
|
2022-10-18 10:35:37 +05:30
|
|
|
set_variables()
|
|
|
|
|
|
2023-01-06 12:37:49 +05:30
|
|
|
set( SO_MAJOR "1")
|
|
|
|
|
set( SO_MINOR "0" )
|
|
|
|
|
|
2022-12-02 22:43:40 +05:30
|
|
|
if( NOT DEFINED BUILD_ID )
|
|
|
|
|
set( BUILD_ID "9999")
|
2022-10-18 10:35:37 +05:30
|
|
|
endif()
|
|
|
|
|
|
2024-09-10 15:29:28 -05:00
|
|
|
#Add the libpatch version if available
|
|
|
|
|
if( DEFINED VERSION_POINT )
|
|
|
|
|
set( PACKAGE_BUILD_INFO "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_POINT}.${VERSION_COMMIT_COUNT}-${BUILD_ID}-${VERSION_HASH}" )
|
|
|
|
|
message ( STATUS "PACKAGE_BUILD_INFO ${PACKAGE_BUILD_INFO}" )
|
|
|
|
|
else ()
|
|
|
|
|
set( PACKAGE_BUILD_INFO "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_COMMIT_COUNT}-${BUILD_ID}-${VERSION_HASH}" )
|
|
|
|
|
endif()
|
2022-12-02 22:43:40 +05:30
|
|
|
|
2022-10-18 10:35:37 +05:30
|
|
|
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/rocmmod.in ${BUILD_DIR}/rocmmod @ONLY )
|
2025-04-29 15:49:53 -04:00
|
|
|
|
|
|
|
|
# Setting Permission 0755 for pre/post install scripts
|
|
|
|
|
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/rocm-core.postinst ${BUILD_DIR}/postinst
|
|
|
|
|
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE @ONLY )
|
|
|
|
|
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/rocm-core.prerm ${BUILD_DIR}/prerm
|
|
|
|
|
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE @ONLY )
|
2022-10-18 10:35:37 +05:30
|
|
|
|
|
|
|
|
#Generate BUILD_INFO
|
|
|
|
|
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/rocm_version.h.in ${BUILD_DIR}/rocm_version.h @ONLY )
|
2024-01-22 09:25:02 -08:00
|
|
|
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/rocm_getpath.h.in ${BUILD_DIR}/rocm_getpath.h @ONLY )
|
2023-08-03 14:26:45 -07:00
|
|
|
|
2022-10-18 10:35:37 +05:30
|
|
|
#Make the rocmlib
|
2024-01-22 09:25:02 -08:00
|
|
|
set( SRCS rocm_version.cpp rocm_getpath.cpp)
|
2022-10-18 10:35:37 +05:30
|
|
|
add_library( ${CORE_TARGET} ${SRCS} )
|
|
|
|
|
|
|
|
|
|
set( CXX_FLAGS ${CXX_FLAGS} -g -fPIC -fvisibility=hidden -W -Wall -Wextra -Wno-unused-parameter -Wformat-security -Wundef -Wshadow -Wpointer-arith -Wcast-qual -Wmissing-declarations -Wredundant-decls -Wunreachable-code -std=c++11 )
|
2023-03-03 00:24:25 -08:00
|
|
|
set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,nodelete -Wl,-no-undefined" )
|
2022-10-18 10:35:37 +05:30
|
|
|
target_include_directories( ${CORE_TARGET} PRIVATE ${BUILD_DIR} )
|
2024-03-28 08:14:22 -07:00
|
|
|
if(BUILD_SHARED_LIBS)
|
|
|
|
|
target_link_libraries( ${CORE_TARGET} PRIVATE dl )
|
|
|
|
|
endif()
|
2022-10-18 10:35:37 +05:30
|
|
|
|
|
|
|
|
## Set the VERSION and SOVERSION values
|
2023-01-06 12:37:49 +05:30
|
|
|
set( SO_VERSION_STRING "${SO_MAJOR}.${SO_MINOR}.${ROCM_LIBPATCH_VERSION}" )
|
2022-10-18 10:35:37 +05:30
|
|
|
set_property( TARGET ${CORE_TARGET} PROPERTY VERSION "${SO_VERSION_STRING}" )
|
2023-01-06 12:37:49 +05:30
|
|
|
set_property( TARGET ${CORE_TARGET} PROPERTY SOVERSION "${SO_MAJOR}" )
|
2022-10-18 10:35:37 +05:30
|
|
|
|
2024-09-10 15:29:28 -05:00
|
|
|
#Add the libpatch version if available to the version file
|
|
|
|
|
if( DEFINED VERSION_POINT )
|
2025-04-30 18:56:11 -04:00
|
|
|
file ( WRITE "${CMAKE_CURRENT_BINARY_DIR}/version" "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_POINT}\n" )
|
2024-09-10 15:29:28 -05:00
|
|
|
else()
|
2025-04-30 18:56:11 -04:00
|
|
|
file ( WRITE "${CMAKE_CURRENT_BINARY_DIR}/version" "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}\n" )
|
2024-09-10 15:29:28 -05:00
|
|
|
endif()
|
2024-01-22 09:25:02 -08:00
|
|
|
|
2024-03-28 08:14:22 -07:00
|
|
|
## Support for Static and Shared Target Packaging
|
|
|
|
|
if(BUILD_SHARED_LIBS)
|
2025-05-07 18:48:46 -04:00
|
|
|
install ( FILES ${BUILD_DIR}/version DESTINATION .info COMPONENT CORE_RUNTIME )
|
2024-03-28 08:14:22 -07:00
|
|
|
|
|
|
|
|
# Target Library needs to installed/packaged to same destination
|
|
|
|
|
# in both ASAN and nonASAN Shared library builds
|
2024-09-17 10:16:24 -07:00
|
|
|
install ( TARGETS ${CORE_TARGET} EXPORT rocmCoreTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
2024-03-28 08:14:22 -07:00
|
|
|
COMPONENT ${COMP_TYPE} )
|
|
|
|
|
install ( FILES ${BUILD_DIR}/rocm_version.h ${BUILD_DIR}/rocm_getpath.h
|
|
|
|
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rocm-core
|
|
|
|
|
COMPONENT CORE_RUNTIME )
|
|
|
|
|
|
2025-06-01 18:48:30 -04:00
|
|
|
install ( PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/runpath_to_rpath.py
|
2024-03-28 08:14:22 -07:00
|
|
|
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/rocm-core
|
|
|
|
|
COMPONENT CORE_RUNTIME )
|
2025-05-07 18:48:46 -04:00
|
|
|
install ( FILES ${BUILD_DIR}/rocmmod
|
2024-03-28 08:14:22 -07:00
|
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
|
|
|
COMPONENT CORE_RUNTIME )
|
|
|
|
|
|
2025-10-22 19:54:40 +05:30
|
|
|
if( NOT WIN32 )
|
|
|
|
|
# rdhc tool is developed and tested for Linux based systems only.
|
|
|
|
|
# rdhc tool is not supported on Windows.
|
|
|
|
|
# Install rdhc files
|
|
|
|
|
install ( FILES
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/rdhc/README.md
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/rdhc/requirements.txt
|
|
|
|
|
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/rdhc
|
|
|
|
|
COMPONENT CORE_RUNTIME)
|
|
|
|
|
|
|
|
|
|
install ( PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/rdhc/rdhc.py
|
|
|
|
|
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${CORE_TARGET}
|
|
|
|
|
COMPONENT CORE_RUNTIME )
|
|
|
|
|
|
|
|
|
|
# Create symlink for rdhc in bin directory
|
|
|
|
|
add_custom_target ( rdhc_symlink ALL
|
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E create_symlink
|
|
|
|
|
../${CMAKE_INSTALL_LIBEXECDIR}/${CORE_TARGET}/rdhc.py rdhc-link )
|
|
|
|
|
|
|
|
|
|
install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/rdhc-link
|
|
|
|
|
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
|
|
|
RENAME rdhc
|
|
|
|
|
COMPONENT CORE_RUNTIME )
|
|
|
|
|
endif()
|
|
|
|
|
|
2024-03-28 08:14:22 -07:00
|
|
|
else()
|
2025-05-07 18:48:46 -04:00
|
|
|
install ( FILES ${BUILD_DIR}/version
|
2024-03-28 08:14:22 -07:00
|
|
|
DESTINATION .info
|
|
|
|
|
COMPONENT ${STATIC_COMP_TYPE} )
|
|
|
|
|
install ( TARGETS ${CORE_TARGET}
|
2024-09-17 10:16:24 -07:00
|
|
|
EXPORT rocmCoreTargets
|
2024-03-28 08:14:22 -07:00
|
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
|
|
|
COMPONENT ${STATIC_COMP_TYPE} )
|
|
|
|
|
|
|
|
|
|
install ( FILES ${BUILD_DIR}/rocm_version.h ${BUILD_DIR}/rocm_getpath.h
|
|
|
|
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rocm-core
|
|
|
|
|
COMPONENT ${STATIC_COMP_TYPE} )
|
|
|
|
|
|
|
|
|
|
install ( FILES ${CMAKE_CURRENT_SOURCE_DIR}/runpath_to_rpath.py
|
|
|
|
|
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/rocm-core
|
|
|
|
|
COMPONENT ${STATIC_COMP_TYPE} )
|
2025-05-07 18:48:46 -04:00
|
|
|
install ( FILES ${BUILD_DIR}/rocmmod
|
2024-03-28 08:14:22 -07:00
|
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
|
|
|
COMPONENT ${STATIC_COMP_TYPE} )
|
2025-10-22 19:54:40 +05:30
|
|
|
|
|
|
|
|
if( NOT WIN32 )
|
|
|
|
|
# rdhc tool is developed and tested for Linux based systems only.
|
|
|
|
|
# rdhc tool is not supported on Windows.
|
|
|
|
|
# Install rdhc files
|
|
|
|
|
install ( FILES
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/rdhc/README.md
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/rdhc/requirements.txt
|
|
|
|
|
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/rdhc
|
|
|
|
|
COMPONENT ${STATIC_COMP_TYPE})
|
|
|
|
|
|
|
|
|
|
install ( PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/rdhc/rdhc.py
|
|
|
|
|
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${CORE_TARGET}
|
|
|
|
|
COMPONENT ${STATIC_COMP_TYPE} )
|
|
|
|
|
|
|
|
|
|
# Create symlink for rdhc in bin directory
|
|
|
|
|
add_custom_target ( rdhc_symlink_static ALL
|
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E create_symlink
|
|
|
|
|
../${CMAKE_INSTALL_LIBEXECDIR}/${CORE_TARGET}/rdhc.py rdhc-link-static )
|
|
|
|
|
|
|
|
|
|
install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/rdhc-link-static
|
|
|
|
|
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
|
|
|
RENAME rdhc
|
|
|
|
|
COMPONENT ${STATIC_COMP_TYPE} )
|
|
|
|
|
endif()
|
|
|
|
|
|
2024-03-28 08:14:22 -07:00
|
|
|
endif()
|
2022-10-18 10:35:37 +05:30
|
|
|
|
2024-09-17 10:16:24 -07:00
|
|
|
## Cmake module config file configurations
|
|
|
|
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/" CACHE INTERNAL "Default module path.")
|
|
|
|
|
|
|
|
|
|
## Export the package for use from the build-tree
|
|
|
|
|
## (this registers the build-tree with a global CMake-registry)
|
|
|
|
|
export(PACKAGE ${CORE_TARGET})
|
|
|
|
|
set(CONF_LIB_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
|
|
|
|
|
|
|
|
|
|
## Create the rocm-core-config.cmake and rocm-core-config-version files
|
|
|
|
|
include(CMakePackageConfigHelpers)
|
|
|
|
|
set(CONFIG_PACKAGE_INSTALL_DIR ${CONF_LIB_DIR}/cmake/${CORE_TARGET})
|
|
|
|
|
set(LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}")
|
|
|
|
|
set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}")
|
|
|
|
|
set(BIN_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}")
|
2025-05-07 18:48:46 -04:00
|
|
|
set(PKG_MAINTAINER_NM "ROCm Dev Support")
|
|
|
|
|
set(PKG_MAINTAINER_EMAIL "rocm-dev.support@amd.com")
|
2024-09-17 10:16:24 -07:00
|
|
|
|
|
|
|
|
## Generate Config File for rocm-core
|
|
|
|
|
configure_package_config_file(
|
|
|
|
|
${CMAKE_MODULE_PATH}/${CORE_TARGET}-config.cmake.in
|
2025-05-07 18:48:46 -04:00
|
|
|
${BUILD_DIR}/${CORE_TARGET}-config.cmake
|
2024-09-17 10:16:24 -07:00
|
|
|
INSTALL_DESTINATION ${CONFIG_PACKAGE_INSTALL_DIR}
|
|
|
|
|
PATH_VARS LIB_INSTALL_DIR INCLUDE_INSTALL_DIR BIN_INSTALL_DIR
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
## Generate config Version File for rocm-core
|
|
|
|
|
write_basic_package_version_file(
|
2025-05-07 18:48:46 -04:00
|
|
|
${BUILD_DIR}/${CORE_TARGET}-config-version.cmake
|
2024-09-17 10:16:24 -07:00
|
|
|
VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"
|
|
|
|
|
COMPATIBILITY SameMajorVersion)
|
|
|
|
|
|
|
|
|
|
## Install the rocm-core-config.cmake and rocm-core-config-version.cmake
|
|
|
|
|
install(FILES
|
|
|
|
|
"${PROJECT_BINARY_DIR}/${CORE_TARGET}-config.cmake"
|
|
|
|
|
"${PROJECT_BINARY_DIR}/${CORE_TARGET}-config-version.cmake"
|
|
|
|
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${CORE_TARGET}"
|
|
|
|
|
COMPONENT ${COMP_TYPE})
|
|
|
|
|
|
|
|
|
|
## Install the export set for use with the install-tree
|
|
|
|
|
install(EXPORT rocmCoreTargets DESTINATION
|
|
|
|
|
"${CMAKE_INSTALL_LIBDIR}/cmake/${CORE_TARGET}" COMPONENT ${COMP_TYPE})
|
2023-03-14 10:43:32 -07:00
|
|
|
|
2022-10-18 10:35:37 +05:30
|
|
|
## Packaging directives
|
|
|
|
|
set ( CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc." )
|
|
|
|
|
set ( CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR} )
|
|
|
|
|
set ( CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR} )
|
|
|
|
|
set ( CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH} )
|
|
|
|
|
set ( CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}" )
|
2025-05-07 18:48:46 -04:00
|
|
|
set ( CPACK_PACKAGE_CONTACT "${PKG_MAINTAINER_NM} <${PKG_MAINTAINER_EMAIL}>" )
|
2023-03-14 10:43:32 -07:00
|
|
|
set ( CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PKG_DESCRIPTION}" )
|
2025-05-07 18:48:46 -04:00
|
|
|
set ( CPACK_RESOURCE_FILE_LICENSE "${LICENSE_FILE}" )
|
2022-10-18 10:35:37 +05:30
|
|
|
## packaging variables
|
|
|
|
|
if ( DEFINED ROCM_LIBPATCH_VERSION )
|
|
|
|
|
set ( CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}.${ROCM_LIBPATCH_VERSION}" )
|
|
|
|
|
message ( STATUS "Using CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION}" )
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
## Debian package specific variables
|
2023-03-03 00:24:25 -08:00
|
|
|
set ( CPACK_DEB_COMPONENT_INSTALL ON )
|
2024-03-28 08:14:22 -07:00
|
|
|
set ( CPACK_DEBIAN_CORE_RUNTIME_PACKAGE_NAME "${CORE_TARGET}" )
|
2023-03-03 00:24:25 -08:00
|
|
|
# ASAN package name
|
2024-03-28 08:14:22 -07:00
|
|
|
set ( CPACK_DEBIAN_CORE_ASAN_PACKAGE_NAME ${CORE_TARGET}-asan )
|
|
|
|
|
# STATIC package name - For Now, No change for static package Name from default
|
|
|
|
|
set ( CPACK_DEBIAN_CORE_STATIC_PACKAGE_NAME ${CORE_TARGET} )
|
2022-10-18 10:35:37 +05:30
|
|
|
message ( STATUS "Using CPACK_DEBIAN_PACKAGE_RELEASE ${CPACK_DEBIAN_PACKAGE_RELEASE}" )
|
|
|
|
|
set ( CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT" )
|
|
|
|
|
|
2025-05-07 18:48:46 -04:00
|
|
|
# Debian specific packaging configuration
|
2025-05-12 11:45:20 +05:30
|
|
|
if(COMP_TYPE)
|
2025-05-27 12:20:55 -04:00
|
|
|
configure_debian_pkg( ${CORE_TARGET} ${COMP_TYPE} ${CPACK_PACKAGE_VERSION} ${PKG_MAINTAINER_NM} ${PKG_MAINTAINER_EMAIL} )
|
2025-05-12 11:45:20 +05:30
|
|
|
elseif(STATIC_COMP_TYPE)
|
2025-05-27 12:20:55 -04:00
|
|
|
configure_debian_pkg( ${CORE_TARGET} ${STATIC_COMP_TYPE} ${CPACK_PACKAGE_VERSION} ${PKG_MAINTAINER_NM} ${PKG_MAINTAINER_EMAIL} )
|
2025-05-12 11:45:20 +05:30
|
|
|
endif()
|
2025-05-07 18:48:46 -04:00
|
|
|
|
2022-10-18 10:35:37 +05:30
|
|
|
## RPM package specific variables
|
2023-03-03 00:24:25 -08:00
|
|
|
set ( CPACK_RPM_COMPONENT_INSTALL ON )
|
2024-03-28 08:14:22 -07:00
|
|
|
set ( CPACK_RPM_CORE_RUNTIME_PACKAGE_NAME "${CORE_TARGET}" )
|
2023-03-03 00:24:25 -08:00
|
|
|
# ASAN package name
|
2024-03-28 08:14:22 -07:00
|
|
|
set ( CPACK_RPM_CORE_ASAN_PACKAGE_NAME ${CORE_TARGET}-asan )
|
|
|
|
|
# STATIC package name - For Now, No change for static package Name from default
|
|
|
|
|
set ( CPACK_RPM_CORE_STATIC_PACKAGE_NAME ${CORE_TARGET} )
|
|
|
|
|
|
2022-10-18 10:35:37 +05:30
|
|
|
## 'dist' breaks manual builds on debian systems due to empty Provides
|
|
|
|
|
execute_process( COMMAND rpm --eval %{?dist}
|
|
|
|
|
RESULT_VARIABLE PROC_RESULT
|
|
|
|
|
OUTPUT_VARIABLE EVAL_RESULT
|
|
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE )
|
|
|
|
|
|
|
|
|
|
if ( PROC_RESULT EQUAL "0" AND NOT EVAL_RESULT STREQUAL "" )
|
|
|
|
|
string ( APPEND CPACK_RPM_PACKAGE_RELEASE "%{?dist}" )
|
|
|
|
|
endif()
|
|
|
|
|
message(STATUS "Using CPACK_RPM_PACKAGE_RELEASE: ${CPACK_RPM_PACKAGE_RELEASE}")
|
|
|
|
|
set ( CPACK_RPM_FILE_NAME "RPM-DEFAULT" )
|
2025-06-18 09:27:05 -07:00
|
|
|
# #!/usr/bin/env is converted to /usr/libexec/platform-python in some OS like RHEL
|
|
|
|
|
# Prevent the modification of python interpreter directives in runpath_to_rpath.py
|
|
|
|
|
set( CPACK_RPM_SPEC_MORE_DEFINE "\n%undefine __brp_mangle_shebangs")
|
2022-10-18 10:35:37 +05:30
|
|
|
|
2025-06-01 18:48:30 -04:00
|
|
|
# Debian Lintian Fix - Add Dependency for Python Script delivered
|
2025-06-18 19:27:49 -04:00
|
|
|
set( DEB_DEPENDS_STRING "python3, libc6" )
|
2025-06-01 18:48:30 -04:00
|
|
|
|
2022-10-18 10:35:37 +05:30
|
|
|
# Debian package specific variables
|
|
|
|
|
set ( CPACK_DEBIAN_PACKAGE_DEPENDS ${DEB_DEPENDS_STRING} )
|
2025-01-31 12:06:41 -05:00
|
|
|
set ( CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/ROCm/rocm-core" )
|
2025-05-07 18:48:46 -04:00
|
|
|
set ( CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${BUILD_DIR}/postinst;${BUILD_DIR}/prerm" )
|
2025-06-01 18:48:30 -04:00
|
|
|
set ( CPACK_DEBIAN_CORE_RUNTIME_PACKAGE_DEPENDS ${DEB_DEPENDS_STRING} )
|
2024-03-28 08:14:22 -07:00
|
|
|
set ( CPACK_DEBIAN_CORE_ASAN_PACKAGE_DEPENDS ${CORE_TARGET} )
|
2025-05-07 18:48:46 -04:00
|
|
|
set ( CPACK_DEBIAN_CORE_RUNTIME_PACKAGE_CONTROL_EXTRA "${CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA}" )
|
|
|
|
|
set ( CPACK_DEBIAN_CORE_STATIC_PACKAGE_CONTROL_EXTRA "${CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA}" )
|
|
|
|
|
set ( CPACK_DEBIAN_PACKAGE_DESCRIPTION "${EXTENDED_PACKAGE_DESCRIPTION}" )
|
2022-10-18 10:35:37 +05:30
|
|
|
|
|
|
|
|
## RPM package specific variables
|
|
|
|
|
set ( CPACK_RPM_PACKAGE_REQUIRES ${RPM_DEPENDS_STRING} )
|
2023-02-06 17:38:19 -06:00
|
|
|
set ( CPACK_RPM_PACKAGE_LICENSE "MIT" )
|
2024-03-28 08:14:22 -07:00
|
|
|
set ( CPACK_RPM_CORE_ASAN_PACKAGE_REQUIRES ${CORE_TARGET} )
|
2025-05-07 18:48:46 -04:00
|
|
|
set ( CPACK_RPM_CORE_RUNTIME_POST_INSTALL_SCRIPT_FILE "${BUILD_DIR}/postinst" )
|
|
|
|
|
set ( CPACK_RPM_CORE_RUNTIME_POST_UNINSTALL_SCRIPT_FILE "${BUILD_DIR}/prerm" )
|
|
|
|
|
set ( CPACK_RPM_CORE_STATIC_POST_INSTALL_SCRIPT_FILE "${BUILD_DIR}/postinst" )
|
|
|
|
|
set ( CPACK_RPM_CORE_STATIC_POST_UNINSTALL_SCRIPT_FILE "${BUILD_DIR}/prerm" )
|
|
|
|
|
set ( CPACK_RPM_PACKAGE_DESCRIPTION "${EXTENDED_PACKAGE_DESCRIPTION}" )
|
2022-10-18 10:35:37 +05:30
|
|
|
|
|
|
|
|
if ( DEFINED CPACK_PACKAGING_INSTALL_PREFIX )
|
2025-12-07 12:29:38 -06:00
|
|
|
set ( CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION
|
2025-05-07 18:48:46 -04:00
|
|
|
"${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/.info" )
|
|
|
|
|
endif()
|
|
|
|
|
|
2024-05-01 12:54:05 -07:00
|
|
|
# Backward compatibility support for deprecated package rocm-clang-ocl
|
|
|
|
|
# TODO: To be removed after two releases
|
|
|
|
|
set(CPACK_DEBIAN_RUNTIME_PACKAGE_REPLACES "rocm-clang-ocl")
|
|
|
|
|
set(CPACK_DEBIAN_RUNTIME_PACKAGE_CONFLICTS "rocm-clang-ocl")
|
|
|
|
|
set(CPACK_RPM_RUNTIME_PACKAGE_OBSOLETES "rocm-clang-ocl")
|
2022-10-18 10:35:37 +05:30
|
|
|
|
2025-05-27 12:20:55 -04:00
|
|
|
# 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}" )
|
|
|
|
|
if(COMP_TYPE)
|
|
|
|
|
set( OVERRIDE_TEMP_INSTALL_LOC "/_CPack_Packages/Linux/DEB/${CORE_TARGET}-${CPACK_PACKAGE_VERSION}-Linux/${COMP_TYPE}" )
|
|
|
|
|
elseif(STATIC_COMP_TYPE)
|
|
|
|
|
set( OVERRIDE_TEMP_INSTALL_LOC "/_CPack_Packages/Linux/DEB/${CORE_TARGET}-${CPACK_PACKAGE_VERSION}-Linux/${STATIC_COMP_TYPE}" )
|
|
|
|
|
endif()
|
|
|
|
|
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}"
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
|
2022-10-18 10:35:37 +05:30
|
|
|
## Include packaging
|
|
|
|
|
include ( CPack )
|