2016-09-20 13:55:35 -05:00
################################################################################
##
## Copyright (c) 2016 Advanced Micro Devices, Inc. All rights reserved.
##
## MIT LICENSE:
## 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.
##
################################################################################
2020-05-08 09:49:21 -07:00
cmake_minimum_required ( VERSION 3.6.3 )
2020-06-19 20:11:34 -05:00
2017-07-18 13:33:30 -05:00
set ( HSAKMT "hsakmt" )
set ( HSAKMT_PACKAGE "hsakmt-roct" )
set ( HSAKMT_COMPONENT "lib${HSAKMT}" )
set ( HSAKMT_TARGET "${HSAKMT}" )
2016-09-20 13:55:35 -05:00
2018-09-25 19:16:43 +02:00
project ( ${ HSAKMT_TARGET } VERSION 1.9.0 )
2016-09-20 13:55:35 -05:00
2021-03-22 09:59:41 -04:00
# Build thunk as static by default
2020-04-21 11:09:39 -04:00
if ( NOT DEFINED BUILD_SHARED_LIBS )
2021-03-22 09:59:41 -04:00
set ( BUILD_SHARED_LIBS "off" )
2020-04-21 11:09:39 -04:00
endif ()
set ( BUILD_SHARED_LIBS ${ BUILD_SHARED_LIBS } CACHE BOOL "Build shared library (.so) or not." )
2019-07-31 14:18:27 -04:00
# Optionally, build HSAKMT with ccache.
set ( ROCM_CCACHE_BUILD OFF CACHE BOOL "Set to ON for a ccache enabled build" )
if ( ROCM_CCACHE_BUILD )
find_program ( CCACHE_PROGRAM ccache )
if ( CCACHE_PROGRAM )
set_property ( GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${ CCACHE_PROGRAM } )
else ()
message ( WARNING "Unable to find ccache. Falling back to real compiler" )
endif () # if (CCACHE_PROGRAM)
endif () # if (ROCM_CCACHE_BUILD)
2020-06-24 12:48:16 -04:00
list ( APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules" )
2017-11-17 21:35:11 -06:00
2017-07-18 13:33:30 -05:00
## Include common cmake modules
2016-09-20 13:55:35 -05:00
include ( utils )
2018-05-28 15:56:01 -04:00
include ( GNUInstallDirs )
2016-09-20 13:55:35 -05:00
2017-07-18 13:33:30 -05:00
## Setup the package version.
2017-02-08 14:39:15 -06:00
get_version ( "1.0.0" )
2016-09-20 13:55:35 -05:00
2017-02-08 14:39:15 -06:00
set ( BUILD_VERSION_MAJOR ${ VERSION_MAJOR } )
set ( BUILD_VERSION_MINOR ${ VERSION_MINOR } )
set ( BUILD_VERSION_PATCH ${ VERSION_PATCH } )
2019-02-28 21:32:45 -08:00
set ( LIB_VERSION_MAJOR 1 )
set ( LIB_VERSION_MINOR 0 )
2019-09-17 18:11:50 -04:00
if ( ${ ROCM_PATCH_VERSION } )
set ( LIB_VERSION_PATCH ${ ROCM_PATCH_VERSION } )
else ()
set ( LIB_VERSION_PATCH 6 )
endif ()
2019-02-28 21:32:45 -08:00
set ( LIB_VERSION_STRING "${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${LIB_VERSION_PATCH}" )
2017-07-18 13:33:30 -05:00
2017-02-08 14:39:15 -06:00
if ( DEFINED VERSION_BUILD AND NOT ${ VERSION_BUILD } STREQUAL "" )
message ( "VERSION BUILD DEFINED ${VERSION_BUILD}" )
set ( BUILD_VERSION_PATCH "${BUILD_VERSION_PATCH}-${VERSION_BUILD}" )
endif ()
set ( BUILD_VERSION_STRING "${BUILD_VERSION_MAJOR}.${BUILD_VERSION_MINOR}.${BUILD_VERSION_PATCH}" )
2016-09-20 13:55:35 -05:00
## Compiler flags
2019-04-12 12:23:21 +03:00
set ( HSAKMT_C_FLAGS -fPIC -W -Wall -Wextra -Wno-unused-parameter -Wformat-security -Wswitch-default -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wunreachable-code -std=gnu99 -fvisibility=hidden )
if ( CMAKE_COMPILER_IS_GNUCC )
set ( HSAKMT_C_FLAGS "${HSAKMT_C_FLAGS}" -Wlogical-op )
endif ()
2019-05-07 16:06:51 -04:00
if ( ${ HSAKMT_WERROR } )
2018-09-07 10:31:59 +02:00
set ( HSAKMT_C_FLAGS "${HSAKMT_C_FLAGS}" -Werror )
2017-07-31 19:25:59 -04:00
endif ()
2017-11-06 16:47:47 -05:00
if ( "${CMAKE_BUILD_TYPE}" STREQUAL Release )
2018-09-07 10:31:59 +02:00
set ( HSAKMT_C_FLAGS "${HSAKMT_C_FLAGS}" -O2 )
2017-11-06 16:47:47 -05:00
else ()
2018-09-07 10:31:59 +02:00
set ( HSAKMT_C_FLAGS "${HSAKMT_C_FLAGS}" -g )
2017-11-06 16:47:47 -05:00
endif ()
2016-09-20 13:55:35 -05:00
set ( HSAKMT_LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/src/libhsakmt.ver" )
## Linker Flags
2019-09-22 22:28:40 -07:00
## Add --enable-new-dtags to generate DT_RUNPATH
2020-10-26 13:49:01 -04:00
set ( HSAKMT_LINK_FLAGS "${HSAKMT_LINK_FLAGS} -Wl,--enable-new-dtags -Wl,--version-script=${HSAKMT_LINKER_SCRIPT} -Wl,-soname=${HSAKMT_COMPONENT}.so.${LIB_VERSION_MAJOR} -Wl,-z,nodelete" )
2020-10-23 13:43:43 -04:00
2020-10-09 18:00:02 -07:00
## Address Sanitize Flag
2020-10-16 12:49:26 -07:00
if ( ${ ADDRESS_SANITIZER } )
2020-10-14 06:13:39 -07:00
set ( HSAKMT_C_FLAGS "${HSAKMT_C_FLAGS}" -fsanitize=address )
2021-03-24 14:58:39 +01:00
set ( HSAKMT_LINK_FLAGS "${HSAKMT_LINK_FLAGS} -fsanitize=address" )
2021-01-06 14:20:19 -05:00
if ( BUILD_SHARED_LIBS )
2021-03-24 14:58:39 +01:00
set ( HSAKMT_LINK_FLAGS "${HSAKMT_LINK_FLAGS} -shared-libsan" )
2020-11-10 07:26:51 -05:00
else ()
2021-03-24 14:58:39 +01:00
set ( HSAKMT_LINK_FLAGS "${HSAKMT_LINK_FLAGS} -static-libsan" )
2020-11-10 07:26:51 -05:00
endif ()
2020-10-26 13:49:01 -04:00
else ()
if ( CMAKE_COMPILER_IS_GNUCC )
2021-03-24 14:58:39 +01:00
set ( HSAKMT_LINK_FLAGS "${HSAKMT_LINK_FLAGS} -Wl,-no-undefined" )
2020-10-26 13:49:01 -04:00
else ()
2021-03-24 14:58:39 +01:00
set ( HSAKMT_LINK_FLAGS "${HSAKMT_LINK_FLAGS} -Wl,-undefined,error" )
2020-10-26 13:49:01 -04:00
endif ()
2020-10-09 18:00:02 -07:00
endif ()
2016-09-20 13:55:35 -05:00
## Source files
2017-07-18 13:33:30 -05:00
set ( HSAKMT_SRC "src/debug.c"
"src/events.c"
"src/fmm.c"
"src/globals.c"
"src/libhsakmt.c"
"src/memory.c"
"src/openclose.c"
"src/perfctr.c"
"src/pmc_table.c"
"src/queues.c"
"src/time.c"
"src/topology.c"
2018-06-28 18:24:54 +08:00
"src/rbtree.c"
2020-11-02 22:45:54 -05:00
"src/spm.c"
2021-03-19 15:34:13 -04:00
"src/version.c"
"src/svm.c" )
2016-09-20 13:55:35 -05:00
2020-05-22 16:50:45 -05:00
## Declare the library target name
add_library ( ${ HSAKMT_TARGET } "" )
## Add sources
target_sources ( ${ HSAKMT_TARGET } PRIVATE ${ HSAKMT_SRC } )
## Add headers. The public headers need to point at their location in both build and install
## directory layouts. This declaration allows publishing library use data to downstream clients.
target_include_directories ( ${ HSAKMT_TARGET }
PUBLIC
$< BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include >
2022-02-23 16:15:40 -08:00
$< INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >
2020-05-22 16:50:45 -05:00
PRIVATE
${ CMAKE_CURRENT_SOURCE_DIR } /src )
2016-09-20 13:55:35 -05:00
2018-09-07 10:31:59 +02:00
set_property ( TARGET ${ HSAKMT_TARGET } PROPERTY LINK_FLAGS ${ HSAKMT_LINK_FLAGS } )
2016-09-20 13:55:35 -05:00
## Set the VERSION and SOVERSION values
2017-02-08 14:39:15 -06:00
set_property ( TARGET ${ HSAKMT_TARGET } PROPERTY VERSION "${LIB_VERSION_STRING}" )
2019-02-28 21:32:45 -08:00
set_property ( TARGET ${ HSAKMT_TARGET } PROPERTY SOVERSION "${LIB_VERSION_MAJOR}" )
2016-09-20 13:55:35 -05:00
2021-07-30 12:50:08 -04:00
find_package ( PkgConfig )
2021-05-17 10:37:41 -04:00
# get OS-info for OS-specific build dependencies
get_os_info ()
find_package ( PkgConfig )
# Check for libraries required for building
2022-10-13 10:42:21 -04:00
find_library ( LIBC NAMES c REQUIRED )
2022-06-28 18:20:49 -04:00
find_library ( NUMA NAMES numa REQUIRED )
2021-05-17 10:37:41 -04:00
message ( STATUS "LIBC:" ${ LIBC } )
message ( STATUS "NUMA:" ${ NUMA } )
2021-09-01 07:44:17 -04:00
## If environment variable DRM_DIR is set, the script
## will pick up the corresponding libraries from that path.
2023-04-05 13:49:01 -04:00
list ( PREPEND CMAKE_PREFIX_PATH "${DRM_DIR}" )
2021-09-01 07:44:17 -04:00
# The module name passed to pkg_check_modules() is determined by the
# name of file *.pc
2023-04-05 13:49:01 -04:00
pkg_check_modules ( DRM REQUIRED libdrm )
pkg_check_modules ( DRM_AMDGPU REQUIRED libdrm_amdgpu )
include_directories ( ${ DRM_AMDGPU_INCLUDE_DIRS } )
2021-09-01 07:44:17 -04:00
include_directories ( ${ DRM_INCLUDE_DIRS } )
2016-09-20 13:55:35 -05:00
target_link_libraries ( ${ HSAKMT_TARGET }
2022-10-13 10:42:21 -04:00
PRIVATE ${ DRM_LDFLAGS } ${ DRM_AMDGPU_LDFLAGS } pthread rt c numa
2016-09-20 13:55:35 -05:00
)
2021-09-01 07:44:17 -04:00
target_compile_options ( ${ HSAKMT_TARGET } PRIVATE ${ DRM_CFLAGS } ${ HSAKMT_C_FLAGS } )
2021-07-30 12:50:08 -04:00
2020-05-22 16:50:45 -05:00
## Define default paths and packages.
if ( CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT )
set ( CMAKE_INSTALL_PREFIX "/opt/rocm" )
endif ()
set ( CMAKE_INSTALL_PREFIX ${ CMAKE_INSTALL_PREFIX } CACHE STRING "Default installation directory." FORCE )
2019-10-25 15:01:58 -04:00
set ( CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE STRING "Default packaging prefix." )
2017-07-18 13:33:30 -05:00
set ( CPACK_GENERATOR "DEB;RPM" CACHE STRING "Default packaging generators." )
2023-02-03 08:15:54 -08:00
## set components
if ( ENABLE_ASAN_PACKAGING )
# ASAN Package requires only asan component with libraries and license file
set ( CPACK_COMPONENTS_ALL asan )
else ()
set ( CPACK_COMPONENTS_ALL devel )
endif ()
2020-05-22 16:50:45 -05:00
# Installs binaries and exports the library usage data to ${HSAKMT_TARGET}Targets
install ( TARGETS ${ HSAKMT_TARGET } EXPORT ${ HSAKMT_TARGET } Targets
2023-02-03 08:15:54 -08:00
ARCHIVE DESTINATION ${ CMAKE_INSTALL_LIBDIR } COMPONENT asan
LIBRARY DESTINATION ${ CMAKE_INSTALL_LIBDIR } COMPONENT asan )
install ( TARGETS ${ HSAKMT_TARGET }
ARCHIVE DESTINATION ${ CMAKE_INSTALL_LIBDIR } COMPONENT devel
LIBRARY DESTINATION ${ CMAKE_INSTALL_LIBDIR } COMPONENT devel )
2020-05-22 16:50:45 -05:00
2021-11-18 15:51:09 -05:00
#install ( FILES ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT devel )
2020-05-22 16:50:45 -05:00
# Install public headers
2022-02-23 16:15:40 -08:00
install ( DIRECTORY ${ CMAKE_CURRENT_SOURCE_DIR } /include/ DESTINATION ${ CMAKE_INSTALL_INCLUDEDIR } / ${ HSAKMT_TARGET }
2020-05-22 16:50:45 -05:00
COMPONENT devel PATTERN "linux" EXCLUDE )
2022-02-23 16:15:40 -08:00
# Option to build header path migration helpers.
2023-02-03 08:15:54 -08:00
if ( NOT ENABLE_ASAN_PACKAGING )
option ( INCLUDE_PATH_COMPATIBILITY "Generate backward compatible headers and include paths. Use of these headers will warn when included." ON )
endif ()
2022-02-23 16:15:40 -08:00
if ( INCLUDE_PATH_COMPATIBILITY )
2023-03-10 13:08:33 -08:00
# To enable/disable #error in wrapper header files
if ( NOT DEFINED ROCM_HEADER_WRAPPER_WERROR )
if ( DEFINED ENV{ROCM_HEADER_WRAPPER_WERROR} )
set ( ROCM_HEADER_WRAPPER_WERROR "$ENV{ROCM_HEADER_WRAPPER_WERROR}"
CACHE STRING "Header wrapper warnings as errors." )
else ()
set ( ROCM_HEADER_WRAPPER_WERROR "ON" CACHE STRING "Header wrapper warnings as errors." )
endif ()
endif ()
if ( ROCM_HEADER_WRAPPER_WERROR )
set ( deprecated_error 1 )
else ()
set ( deprecated_error 0 )
endif ()
2022-02-23 16:15:40 -08:00
include ( hsakmt-backward-compat.cmake )
endif ()
2020-05-22 16:50:45 -05:00
# Record our usage data for clients find_package calls.
install ( EXPORT ${ HSAKMT_TARGET } Targets
FILE ${ HSAKMT_TARGET } Targets.cmake
NAMESPACE ${ HSAKMT_TARGET } ::
DESTINATION ${ CMAKE_INSTALL_LIBDIR } /cmake/ ${ HSAKMT_TARGET }
COMPONENT devel )
# Adds the target alias hsakmt::hsakmt to the local cmake cache.
# This isn't necessary today. It's harmless preparation for some
# hypothetical future in which the we might be included by add_subdirectory()
# in some other project's cmake file. It allows uniform use of find_package
# and target_link_library() without regard to whether a target is external or
# a subdirectory of the current build.
add_library ( ${ HSAKMT_TARGET } :: ${ HSAKMT_TARGET } ALIAS ${ HSAKMT_TARGET } )
# Create cmake configuration files
include ( CMakePackageConfigHelpers )
configure_package_config_file ( ${ HSAKMT_TARGET } -config.cmake.in
2023-02-03 08:15:54 -08:00
${ HSAKMT_TARGET } -config.cmake
INSTALL_DESTINATION
${ CMAKE_INSTALL_LIBDIR } /cmake/ ${ HSAKMT_TARGET } )
2020-05-22 16:50:45 -05:00
write_basic_package_version_file ( ${ HSAKMT_TARGET } -config-version.cmake
VERSION ${ BUILD_VERSION_STRING }
2023-02-03 08:15:54 -08:00
COMPATIBILITY
AnyNewerVersion )
2020-05-22 16:50:45 -05:00
install ( FILES
2023-02-03 08:15:54 -08:00
${ CMAKE_CURRENT_BINARY_DIR } / ${ HSAKMT_TARGET } -config.cmake
${ CMAKE_CURRENT_BINARY_DIR } / ${ HSAKMT_TARGET } -config-version.cmake
2020-05-22 16:50:45 -05:00
DESTINATION
2023-02-03 08:15:54 -08:00
${ CMAKE_INSTALL_LIBDIR } /cmake/ ${ HSAKMT_TARGET }
2020-05-22 16:50:45 -05:00
COMPONENT devel )
2020-06-04 20:57:56 -05:00
# Optionally record the package's find module in the user's package cache.
if ( NOT DEFINED EXPORT_TO_USER_PACKAGE_REGISTRY )
set ( EXPORT_TO_USER_PACKAGE_REGISTRY "off" )
endif ()
2023-02-03 08:15:54 -08:00
set ( EXPORT_TO_USER_PACKAGE_REGISTRY ${ EXPORT_TO_USER_PACKAGE_REGISTRY }
CACHE BOOL "Add cmake package config location to the user's cmake package registry." )
2020-06-04 20:57:56 -05:00
if ( ${ EXPORT_TO_USER_PACKAGE_REGISTRY } )
# Enable writing to the registry
set ( CMAKE_EXPORT_PACKAGE_REGISTRY ON )
# Generate a target file for the build
export ( TARGETS ${ HSAKMT_TARGET } NAMESPACE ${ HSAKMT_TARGET } :: FILE ${ HSAKMT_TARGET } Targets.cmake )
# Record the package in the user's cache.
export ( PACKAGE ${ HSAKMT_TARGET } )
endif ()
2020-05-22 16:50:45 -05:00
# CPACK_PACKAGING_INSTALL_PREFIX is needed in libhsakmt.pc.in
# TODO: Add support for relocatable packages.
configure_file ( libhsakmt.pc.in libhsakmt.pc @ONLY )
install ( FILES ${ CMAKE_CURRENT_BINARY_DIR } /libhsakmt.pc DESTINATION ${ CMAKE_INSTALL_DATADIR } /pkgconfig COMPONENT devel )
2020-05-08 09:49:21 -07:00
###########################
# Packaging directives
###########################
2020-05-22 16:50:45 -05:00
# Use component packaging
2020-05-08 09:49:21 -07:00
set ( CPACK_COMPONENTS_GROUPING IGNORE )
set ( CPACK_DEB_COMPONENT_INSTALL ON )
set ( CPACK_RPM_COMPONENT_INSTALL ON )
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_CONTACT "AMD GFX mailing list <amd-gfx@lists.freedesktop.org>" )
set ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md" )
2021-05-17 10:37:41 -04:00
set ( CPACK_COMPONENT_DESCRIPTION "HSAKMT development package.\n This package includes the user-mode API interfaces\nused to interact with the ROCk driver.\n This package contains the headers, pkgonfig and\n cmake files for the ROCT package." )
2021-03-22 13:09:46 -07:00
set ( ENABLE_LDCONFIG ON CACHE BOOL "Set library links and caches using ldconfig." )
2020-05-08 09:49:21 -07:00
2021-11-30 09:17:59 -05:00
# Install License file
2022-06-01 10:28:47 -07:00
install ( FILES ${ CPACK_RESOURCE_FILE_LICENSE } DESTINATION ${ CMAKE_INSTALL_DOCDIR } COMPONENT devel )
2023-02-03 08:15:54 -08:00
install ( FILES ${ CPACK_RESOURCE_FILE_LICENSE } DESTINATION ${ CMAKE_INSTALL_DOCDIR } -asan COMPONENT asan )
2021-11-30 09:17:59 -05:00
2020-05-08 09:49:21 -07:00
# Make proper version for appending
# Default Value is 99999, setting it first
set ( ROCM_VERSION_FOR_PACKAGE "99999" )
if ( DEFINED ENV{ROCM_LIBPATCH_VERSION} )
set ( ROCM_VERSION_FOR_PACKAGE $ENV{ ROCM_LIBPATCH_VERSION } )
2019-08-27 20:32:32 -04:00
endif ()
2021-11-24 17:04:56 -05:00
# Prepare final version for the CPACK use
set ( PACKAGE_VERSION_STR "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}.${ROCM_VERSION_FOR_PACKAGE}" )
set ( CPACK_PACKAGE_VERSION "${PACKAGE_VERSION_STR}" )
2016-09-20 13:55:35 -05:00
# Debian package specific variables
2020-05-08 09:49:21 -07:00
set ( CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface" )
2021-05-17 10:37:41 -04:00
set ( CPACK_DEBIAN_PACKAGE_NAME "hsakmt-roct-dev" )
2020-05-08 09:49:21 -07:00
if ( DEFINED ENV{CPACK_DEBIAN_PACKAGE_RELEASE} )
set ( CPACK_DEBIAN_PACKAGE_RELEASE $ENV{ CPACK_DEBIAN_PACKAGE_RELEASE } )
else ()
set ( CPACK_DEBIAN_PACKAGE_RELEASE "local" )
endif ()
2021-03-22 13:09:46 -07:00
## Process the Debian install/remove scripts to update the CPACK variables
configure_file ( ${ CMAKE_CURRENT_SOURCE_DIR } /DEBIAN/postinst.in DEBIAN/postinst @ONLY )
configure_file ( ${ CMAKE_CURRENT_SOURCE_DIR } /DEBIAN/prerm.in DEBIAN/prerm @ONLY )
2021-05-17 10:37:41 -04:00
set ( CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "DEBIAN/postinst;DEBIAN/prerm" )
# Needed since some packages still say they need hsakmt-roct
set ( CPACK_DEBIAN_PACKAGE_REPLACES "hsakmt-roct" )
set ( CPACK_DEBIAN_PACKAGE_PROVIDES "hsakmt-roct" )
2021-08-27 07:47:20 -04:00
set ( CPACK_RPM_PACKAGE_OBSOLETES "hsakmt-roct" )
set ( CPACK_RPM_PACKAGE_PROVIDES "hsakmt-roct" )
2021-03-22 13:09:46 -07:00
2023-02-03 08:15:54 -08:00
# Debian devel component specific flags
set ( CPACK_DEBIAN_DEVEL_PACKAGE_NAME "hsakmt-roct-dev" )
set ( CPACK_DEBIAN_DEVEL_PACKAGE_REPLACES "hsakmt-roct" )
set ( CPACK_DEBIAN_DEVEL_PACKAGE_PROVIDES "hsakmt-roct" )
set ( CPACK_RPM_DEVEL_PACKAGE_PROVIDES "hsakmt-roct" )
# Debian package specific variable for ASAN
set ( CPACK_DEBIAN_ASAN_PACKAGE_NAME "hsakmt-roct-asan" )
2021-03-22 13:09:46 -07:00
## Process the Rpm install/remove scripts to update the CPACK variables
configure_file ( "${CMAKE_CURRENT_SOURCE_DIR}/RPM/post.in" RPM/post @ONLY )
configure_file ( "${CMAKE_CURRENT_SOURCE_DIR}/RPM/postun.in" RPM/postun @ONLY )
## RPM package specific variables
set ( CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/RPM/post" )
set ( CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/RPM/postun" )
2020-05-08 09:49:21 -07:00
if ( DEFINED CPACK_PACKAGING_INSTALL_PREFIX )
set ( CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}" )
endif ()
2021-05-17 10:37:41 -04:00
set ( CPACK_RPM_PACKAGE_NAME "hsakmt-roct-devel" )
2021-11-10 13:49:05 -05:00
set ( CPACK_RPM_PACKAGE_LICENSE "MIT" )
2023-02-03 08:15:54 -08:00
# RPM package specific variable for ASAN
set ( CPACK_RPM_ASAN_PACKAGE_NAME "hsakmt-roct-asan" )
# RPM package devel specific variable
set ( CPACK_RPM_DEVEL_PACKAGE_NAME "hsakmt-roct-devel" )
2020-05-08 09:49:21 -07:00
# Since we changed the package name to match RPM specs, take care of older builds that had -dev installed
2021-05-17 10:37:41 -04:00
# Also cover the fact that this now replaces the old binary package hsakmt-roct
set ( CPACK_RPM_PACKAGE_OBSOLETES "hsakmt-roct-dev hsakmt-roct" )
2023-02-03 08:15:54 -08:00
set ( CPACK_RPM_DEVEL_PACKAGE_OBSOLETES "hsakmt-roct-dev hsakmt-roct" )
2020-05-08 09:49:21 -07:00
if ( DEFINED ENV{CPACK_RPM_PACKAGE_RELEASE} )
set ( CPACK_RPM_PACKAGE_RELEASE $ENV{ CPACK_RPM_PACKAGE_RELEASE } )
else ()
set ( CPACK_RPM_PACKAGE_RELEASE "local" )
endif ()
2021-11-16 12:48:58 -05:00
## Specify a RPM SPEC template
# This template was generated by using "CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE"
# but I've modified it to support CPACK_RPM_PACKAGE_RECOMMENDS for EL8+ and SLE
2021-11-17 17:44:36 -05:00
set ( CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_CURRENT_SOURCE_DIR}/RPM/${CPACK_RPM_PACKAGE_NAME}.spec.in" )
2020-11-18 13:22:05 -05:00
# '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 )
message ( "RESULT_VARIABLE ${PROC_RESULT} OUTPUT_VARIABLE: ${EVAL_RESULT}" )
if ( PROC_RESULT EQUAL "0" AND NOT EVAL_RESULT STREQUAL "" )
string ( APPEND CPACK_RPM_PACKAGE_RELEASE "%{?dist}" )
endif ()
2016-09-20 13:55:35 -05:00
2020-05-08 09:49:21 -07:00
# Setting devel package dependendent version
2022-11-04 17:31:08 -04:00
set ( CPACK_DEBIAN_PACKAGE_DEPENDS "libdrm-amdgpu-dev | libdrm-dev, rocm-core" )
set ( CPACK_DEBIAN_PACKAGE_RECOMMENDS "libdrm-amdgpu-dev" )
2021-05-17 10:37:41 -04:00
set ( CPACK_DEBIAN_PACKAGE_REPLACES "hsakmt-roct" )
2023-02-03 08:15:54 -08:00
set ( CPACK_DEBIAN_DEVEL_PACKAGE_DEPENDS "libdrm-amdgpu-dev | libdrm-dev, rocm-core" )
set ( CPACK_DEBIAN_DEVEL_PACKAGE_RECOMMENDS "libdrm-amdgpu-dev" )
set ( CPACK_DEBIAN_DEVEL_PACKAGE_REPLACES "hsakmt-roct" )
# Debian package specific variable for ASAN
set ( CPACK_DEBIAN_ASAN_PACKAGE_DEPENDS "libdrm-amdgpu-dev | libdrm-dev, rocm-core-asan" )
set ( CPACK_DEBIAN_ASAN_PACKAGE_RECOMMENDS "libdrm-amdgpu-dev" )
2021-05-17 10:37:41 -04:00
2022-11-04 17:31:08 -04:00
set ( CPACK_RPM_PACKAGE_REQUIRES "rocm-core" )
2023-02-03 08:15:54 -08:00
set ( CPACK_RPM_DEVEL_PACKAGE_REQUIRES "rocm-core" )
# RPM package specific variable for ASAN
set ( CPACK_RPM_ASAN_PACKAGE_REQUIRES "rocm-core-asan" )
2021-11-12 14:30:04 -05:00
2021-11-16 12:48:58 -05:00
# NOTE: CentOS/RHEL <8 and SUSE <10 do not have support for rpm recommends,
# so HSAKMT_REQUIRES_LIBDRM should be defined when building EL7 to avoid
# producing binaries which do not install on CentOS7 or RHEL7
if ( HSAKMT_REQUIRES_LIBDRM )
2022-11-04 17:31:08 -04:00
string ( APPEND CPACK_RPM_PACKAGE_REQUIRES ", libdrm-amdgpu-devel" )
2023-02-03 08:15:54 -08:00
string ( APPEND CPACK_RPM_DEVEL_PACKAGE_REQUIRES ", libdrm-amdgpu-devel" )
string ( APPEND CPACK_RPM_ASAN_PACKAGE_REQUIRES ", libdrm-amdgpu-devel" )
2021-11-12 14:30:04 -05:00
else ()
2022-11-04 17:31:08 -04:00
string ( APPEND CPACK_RPM_PACKAGE_REQUIRES ", (libdrm-amdgpu-devel or libdrm-devel)" )
2023-02-03 08:15:54 -08:00
string ( APPEND CPACK_RPM_DEVEL_PACKAGE_REQUIRES ", (libdrm-amdgpu-devel or libdrm-devel)" )
string ( APPEND CPACK_RPM_ASAN_PACKAGE_REQUIRES ", (libdrm-amdgpu-devel or libdrm-devel)" )
2022-11-04 17:31:08 -04:00
set ( CPACK_RPM_PACKAGE_RECOMMENDS "libdrm-amdgpu-devel" )
2023-02-03 08:15:54 -08:00
set ( CPACK_RPM_DEVEL_PACKAGE_RECOMMENDS "libdrm-amdgpu-devel" )
set ( CPACK_RPM_ASAN_PACKAGE_RECOMMENDS "libdrm-amdgpu-devel" )
2021-11-12 14:30:04 -05:00
endif ()
2021-09-17 09:50:32 -04:00
2020-05-08 09:49:21 -07:00
# Set the names now using CPACK utility
set ( CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT" )
set ( CPACK_RPM_FILE_NAME "RPM-DEFAULT" )
2018-02-26 18:18:00 -05:00
2021-07-05 23:01:10 +00:00
# Remove dependency on rocm-core if -DROCM_DEP_ROCMCORE=ON not given to cmake
if ( NOT ROCM_DEP_ROCMCORE )
2021-05-17 10:37:41 -04:00
string ( REGEX REPLACE ",? ?rocm-core" "" CPACK_RPM_PACKAGE_REQUIRES ${ CPACK_RPM_PACKAGE_REQUIRES } )
string ( REGEX REPLACE ",? ?rocm-core" "" CPACK_DEBIAN_PACKAGE_DEPENDS ${ CPACK_DEBIAN_PACKAGE_DEPENDS } )
2023-02-03 08:15:54 -08:00
string ( REGEX REPLACE ",? ?rocm-core" "" CPACK_RPM_DEVEL_PACKAGE_REQUIRES ${ CPACK_RPM_DEVEL_PACKAGE_REQUIRES } )
string ( REGEX REPLACE ",? ?rocm-core" "" CPACK_DEBIAN_DEVEL_PACKAGE_DEPENDS ${ CPACK_DEBIAN_DEVEL_PACKAGE_DEPENDS } )
string ( REGEX REPLACE ",? ?rocm-core-asan" "" CPACK_RPM_ASAN_PACKAGE_REQUIRES ${ CPACK_RPM_ASAN_PACKAGE_REQUIRES } )
string ( REGEX REPLACE ",? ?rocm-core-asan" "" CPACK_DEBIAN_ASAN_PACKAGE_DEPENDS ${ CPACK_DEBIAN_ASAN_PACKAGE_DEPENDS } )
2021-07-05 23:01:10 +00:00
endif ()
2020-05-08 09:49:21 -07:00
include ( CPack )
2023-02-03 08:15:54 -08:00
cpack_add_component ( asan
DISPLAY_NAME "ASAN"
DESCRIPTION "ASAN libraries for the LIBHSAKMT" )