2025-06-11 20:43:43 -05:00
|
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
|
# Copyright (c) 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.
|
|
|
|
|
|
2017-10-30 12:12:40 -05:00
|
|
|
#
|
|
|
|
|
# Minimum version of cmake required
|
|
|
|
|
#
|
2024-05-02 15:44:06 -05:00
|
|
|
cmake_minimum_required(VERSION 3.20)
|
2017-10-30 12:12:40 -05:00
|
|
|
|
2022-11-03 16:45:06 -05:00
|
|
|
set(AMD_SMI "amd_smi")
|
2025-05-06 17:59:47 -05:00
|
|
|
set(AMD_SMI_LIBS_TARGET "${AMD_SMI}_lib")
|
|
|
|
|
set(CPACK_PACKAGE_NAME amd-smi-lib CACHE STRING "")
|
2020-06-20 17:00:06 -05:00
|
|
|
|
2025-05-06 05:40:18 +00:00
|
|
|
set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared library (.so) or not.")
|
2020-07-07 16:38:25 +05:30
|
|
|
|
2025-05-06 05:40:18 +00:00
|
|
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/" CACHE INTERNAL "Default module path.")
|
2018-09-16 00:13:29 -05:00
|
|
|
## Include common cmake modules
|
|
|
|
|
include(utils)
|
2022-11-03 16:45:06 -05:00
|
|
|
include(help_package)
|
2022-11-03 12:44:23 -05:00
|
|
|
find_package(PkgConfig)
|
2018-09-16 00:13:29 -05:00
|
|
|
|
2022-11-03 16:45:06 -05:00
|
|
|
generic_add_rocm()
|
2018-09-16 00:13:29 -05:00
|
|
|
|
2020-06-20 17:00:06 -05:00
|
|
|
# provide git to utilities
|
2022-11-03 12:44:23 -05:00
|
|
|
find_program(GIT NAMES git)
|
2020-06-20 17:00:06 -05:00
|
|
|
|
2025-12-04 22:01:57 -05:00
|
|
|
# Set Lintian Support Flags
|
|
|
|
|
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"
|
|
|
|
|
)
|
|
|
|
|
|
2020-06-20 17:00:06 -05:00
|
|
|
## Setup the package version based on git tags.
|
2022-11-03 16:45:06 -05:00
|
|
|
set(PKG_VERSION_GIT_TAG_PREFIX "amdsmi_pkg_ver")
|
2025-07-22 15:39:12 +00:00
|
|
|
get_version_from_file("include/amd_smi/amdsmi.h" "MAJOR")
|
|
|
|
|
get_version_from_file("include/amd_smi/amdsmi.h" "MINOR")
|
|
|
|
|
get_version_from_file("include/amd_smi/amdsmi.h" "RELEASE")
|
|
|
|
|
set(DEFAULT_VERSION "${MAJOR}.${MINOR}.${RELEASE}")
|
|
|
|
|
get_package_version_number(${DEFAULT_VERSION} ${PKG_VERSION_GIT_TAG_PREFIX} GIT)
|
2020-06-20 17:00:06 -05:00
|
|
|
message("Package version: ${PKG_VERSION_STR}")
|
2023-10-24 18:37:12 -05:00
|
|
|
set(${AMD_SMI_LIBS_TARGET}_VERSION_MAJOR "${CPACK_PACKAGE_VERSION_MAJOR}")
|
|
|
|
|
set(${AMD_SMI_LIBS_TARGET}_VERSION_MINOR "${CPACK_PACKAGE_VERSION_MINOR}")
|
|
|
|
|
set(${AMD_SMI_LIBS_TARGET}_VERSION_PATCH "${CPACK_PACKAGE_VERSION_PATCH}")
|
2020-06-20 17:00:06 -05:00
|
|
|
set(${AMD_SMI_LIBS_TARGET}_VERSION_BUILD "0")
|
2023-10-24 18:37:12 -05:00
|
|
|
set(${AMD_SMI_LIBS_TARGET}_VERSION_HASH "${PKG_VERSION_HASH}")
|
2025-05-06 05:40:18 +00:00
|
|
|
set(${AMD_SMI_LIBS_TARGET}_VERSION_STRING
|
|
|
|
|
"${${AMD_SMI_LIBS_TARGET}_VERSION_MAJOR}.${${AMD_SMI_LIBS_TARGET}_VERSION_MINOR}.${${AMD_SMI_LIBS_TARGET}_VERSION_PATCH}+${${AMD_SMI_LIBS_TARGET}_VERSION_HASH}"
|
|
|
|
|
)
|
2023-10-24 18:37:12 -05:00
|
|
|
|
2025-07-22 15:39:12 +00:00
|
|
|
set(DEFAULT_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
|
|
|
|
|
update_version_in_file("include/amd_smi/amdsmi.h" ${DEFAULT_VERSION} "#define AMDSMI_LIB_VERSION_" " *" " ")
|
|
|
|
|
update_version_in_file("rust-interface/src/amdsmi_wrapper.rs" ${DEFAULT_VERSION} "AMDSMI_LIB_VERSION_" " *: *u32 *= *"
|
|
|
|
|
": u32 = ")
|
|
|
|
|
|
2023-10-24 18:37:12 -05:00
|
|
|
# Make proper version for appending
|
|
|
|
|
# Default Value is 99999
|
|
|
|
|
set(ROCM_VERSION_FOR_PACKAGE "99999")
|
|
|
|
|
if(DEFINED ENV{ROCM_LIBPATCH_VERSION})
|
|
|
|
|
set(ROCM_VERSION_FOR_PACKAGE $ENV{ROCM_LIBPATCH_VERSION})
|
|
|
|
|
endif()
|
|
|
|
|
#Prepare final version for the CPACK use
|
|
|
|
|
set(CPACK_PACKAGE_VERSION
|
2025-05-06 05:40:18 +00:00
|
|
|
"${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}.${ROCM_VERSION_FOR_PACKAGE}"
|
|
|
|
|
)
|
2020-06-20 17:00:06 -05:00
|
|
|
|
2018-12-06 13:48:59 -06:00
|
|
|
# The following default version values should be updated as appropriate for
|
|
|
|
|
# ABI breaks (update MAJOR and MINOR), and ABI/API additions (update MINOR).
|
|
|
|
|
# Until ABI stabilizes VERSION_MAJOR will be 0. This should be over-ridden
|
|
|
|
|
# by git tags (through "git describe") when they are present.
|
2023-10-24 18:37:12 -05:00
|
|
|
set(PKG_VERSION_MAJOR "${CPACK_PACKAGE_VERSION_MAJOR}")
|
|
|
|
|
set(PKG_VERSION_MINOR "${CPACK_PACKAGE_VERSION_MINOR}")
|
|
|
|
|
set(PKG_VERSION_PATCH "${CPACK_PACKAGE_VERSION_PATCH}")
|
2019-08-11 18:59:04 -05:00
|
|
|
set(PKG_VERSION_NUM_COMMIT 0)
|
2018-12-06 13:48:59 -06:00
|
|
|
|
2025-05-06 17:59:47 -05:00
|
|
|
project(${AMD_SMI_LIBS_TARGET} DESCRIPTION "AMD System Management libraries"
|
|
|
|
|
HOMEPAGE_URL "https://github.com/ROCm/amdsmi")
|
2020-06-20 17:00:06 -05:00
|
|
|
|
2023-09-27 17:58:50 -05:00
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
2023-10-16 11:24:04 -05:00
|
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
2020-06-20 17:00:06 -05:00
|
|
|
|
2025-11-14 12:31:27 -06:00
|
|
|
# Link with stdc++fs for filesystem support (only for GCC < 9.0)
|
|
|
|
|
set(FILESYSTEM_LIB "")
|
|
|
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
|
|
|
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0)
|
|
|
|
|
set(FILESYSTEM_LIB stdc++fs)
|
|
|
|
|
message(STATUS "GCC ${CMAKE_CXX_COMPILER_VERSION} detected, linking with stdc++fs for filesystem support")
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
|
2022-11-03 16:45:06 -05:00
|
|
|
include(GNUInstallDirs)
|
2020-06-20 17:00:06 -05:00
|
|
|
|
2022-11-03 12:44:23 -05:00
|
|
|
option(BUILD_TESTS "Build test suite" OFF)
|
2023-01-26 09:01:55 -08:00
|
|
|
option(ENABLE_ASAN_PACKAGING "" OFF)
|
2024-08-29 12:35:16 -05:00
|
|
|
option(ENABLE_ESMI_LIB "Build ESMI Library" ON)
|
2025-03-26 16:55:44 +00:00
|
|
|
option(BUILD_EXAMPLES "Build examples" OFF)
|
2018-09-16 00:13:29 -05:00
|
|
|
|
2025-08-19 11:39:39 -05:00
|
|
|
# If amdsmi is built as a static library, it should support being embedded in other programs. The setting below essentially enables the -fPIC flag.
|
|
|
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON CACHE BOOL "Enable position independent code for all targets")
|
|
|
|
|
mark_as_advanced(CMAKE_POSITION_INDEPENDENT_CODE)
|
|
|
|
|
|
2024-03-14 03:43:52 -05:00
|
|
|
include(CMakeDependentOption)
|
|
|
|
|
# these options don't work without BUILD_SHARED_LIBS
|
|
|
|
|
cmake_dependent_option(BUILD_WRAPPER "Rebuild AMDSMI-wrapper" OFF "BUILD_SHARED_LIBS" OFF)
|
|
|
|
|
cmake_dependent_option(BUILD_CLI "Build AMDSMI-CLI and install" ON "BUILD_SHARED_LIBS" OFF)
|
2025-01-08 07:19:46 +08:00
|
|
|
cmake_dependent_option(BUILD_RUST_WRAPPER "Build rust wrapper and install" OFF "BUILD_SHARED_LIBS" OFF)
|
2024-03-14 03:43:52 -05:00
|
|
|
cmake_dependent_option(ENABLE_LDCONFIG "Set library links and caches using ldconfig." ON "BUILD_SHARED_LIBS" OFF)
|
|
|
|
|
|
2023-01-18 15:00:21 -06:00
|
|
|
# Set share path here because project name != amd_smi
|
2025-03-26 16:55:44 +00:00
|
|
|
set(SHARE_INSTALL_PREFIX "${CMAKE_INSTALL_DATAROOTDIR}/${AMD_SMI}" CACHE STRING "Tests and Example install directory")
|
2023-01-26 09:01:55 -08:00
|
|
|
|
2022-11-03 16:45:06 -05:00
|
|
|
# Packaging directives
|
2025-12-04 22:01:57 -05:00
|
|
|
set(PKG_MAINTAINER_NM "AMD-SMILib Support")
|
|
|
|
|
set(PKG_MAINTAINER_EMAIL "amd-smi.support@amd.com")
|
|
|
|
|
set(CPACK_PACKAGE_CONTACT
|
|
|
|
|
"${PKG_MAINTAINER_NM} <${PKG_MAINTAINER_EMAIL}>"
|
|
|
|
|
CACHE STRING
|
|
|
|
|
""
|
|
|
|
|
)
|
2022-11-03 16:45:06 -05:00
|
|
|
|
|
|
|
|
generic_package()
|
2020-05-13 14:40:44 -05:00
|
|
|
|
2025-09-24 16:42:04 -07:00
|
|
|
# Dependencies
|
2025-09-24 14:57:26 -07:00
|
|
|
find_package(Threads REQUIRED)
|
|
|
|
|
pkg_check_modules(DRM REQUIRED IMPORTED_TARGET libdrm)
|
|
|
|
|
pkg_check_modules(DRM_AMDGPU REQUIRED IMPORTED_TARGET libdrm_amdgpu)
|
|
|
|
|
|
2025-09-24 16:42:04 -07:00
|
|
|
# Configuration
|
2026-01-06 15:18:20 -08:00
|
|
|
function(get_imported_target_info target out_soname out_include_dirs)
|
|
|
|
|
# Resolve include directories.
|
|
|
|
|
get_target_property(include_dirs "${target}" INTERFACE_INCLUDE_DIRECTORIES)
|
|
|
|
|
set("${out_include_dirs}" "${include_dirs}" PARENT_SCOPE)
|
|
|
|
|
|
|
|
|
|
# Resolve the soname of the link library so that it can be opened with dlopen.
|
|
|
|
|
get_target_property(link_libs "${target}" INTERFACE_LINK_LIBRARIES)
|
|
|
|
|
set(soname)
|
2025-09-24 16:42:04 -07:00
|
|
|
foreach(link_lib ${link_libs})
|
2026-01-06 15:18:20 -08:00
|
|
|
if(soname)
|
2025-09-24 16:42:04 -07:00
|
|
|
message(FATAL_ERROR "Target ${target} has multiple link libraries: ${link_libs}")
|
|
|
|
|
endif()
|
|
|
|
|
execute_process(
|
|
|
|
|
COMMAND objdump -p "${link_lib}"
|
|
|
|
|
OUTPUT_VARIABLE OBJDUMP_OUTPUT
|
|
|
|
|
RESULT_VARIABLE OBJDUMP_RESULT
|
|
|
|
|
)
|
|
|
|
|
if(OBJDUMP_RESULT EQUAL 0)
|
|
|
|
|
string(REGEX MATCH "SONAME +([^ \n]+)" SONAME_MATCH "${OBJDUMP_OUTPUT}")
|
|
|
|
|
if(SONAME_MATCH)
|
|
|
|
|
set(SONAME_OF_MY_PKG "${CMAKE_MATCH_1}")
|
|
|
|
|
message(STATUS "SONAME of my_package_name: ${SONAME_OF_MY_PKG}")
|
|
|
|
|
else()
|
|
|
|
|
message(FATAL_ERROR "Could not find SONAME in objdump output for ${link_lib}")
|
|
|
|
|
endif()
|
2026-01-06 15:18:20 -08:00
|
|
|
set(soname "${SONAME_OF_MY_PKG}")
|
2025-09-24 16:42:04 -07:00
|
|
|
else()
|
|
|
|
|
message(FATAL_ERROR "objdump failed for ${link_lib}")
|
|
|
|
|
endif()
|
|
|
|
|
endforeach()
|
2026-01-06 15:18:20 -08:00
|
|
|
if(NOT soname)
|
2025-09-24 16:42:04 -07:00
|
|
|
message(FATAL_ERROR "Could not find SONAME for target ${target} libs: ${link_libs}")
|
|
|
|
|
endif()
|
2026-01-06 15:18:20 -08:00
|
|
|
set("${out_soname}" "${soname}" PARENT_SCOPE)
|
2025-09-24 16:42:04 -07:00
|
|
|
endfunction()
|
|
|
|
|
|
2026-01-06 15:18:20 -08:00
|
|
|
get_imported_target_info(PkgConfig::DRM_AMDGPU LIBDRM_AMDGPU_SONAME LIBDRM_AMDGPU_INCLUDES)
|
2025-09-24 16:42:04 -07:00
|
|
|
configure_file(
|
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/include/config/amd_smi_config.h.in"
|
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/include/config/amd_smi_config.h"
|
|
|
|
|
@ONLY
|
|
|
|
|
)
|
2025-09-24 14:57:26 -07:00
|
|
|
|
2018-09-16 00:13:29 -05:00
|
|
|
## Compiler flags
|
2023-11-03 02:53:58 -05:00
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -fno-rtti")
|
2025-05-06 05:40:18 +00:00
|
|
|
if(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64")
|
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64 -msse -msse2")
|
2023-10-23 16:28:04 -05:00
|
|
|
endif()
|
2020-01-14 15:37:52 -06:00
|
|
|
# Security options
|
2022-11-03 12:44:23 -05:00
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wconversion -Wcast-align")
|
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wformat=2 -fno-common -Wstrict-overflow")
|
|
|
|
|
# Intentionally leave out -Wsign-promo. It causes spurious warnings.
|
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Woverloaded-virtual -Wreorder")
|
2020-01-14 15:37:52 -06:00
|
|
|
|
2022-09-20 14:57:30 -04:00
|
|
|
set(ROCM_SRC_DIR "${PROJECT_SOURCE_DIR}/rocm_smi/src")
|
|
|
|
|
set(ROCM_INC_DIR "${PROJECT_SOURCE_DIR}/rocm_smi/include/rocm_smi")
|
2020-06-20 17:00:06 -05:00
|
|
|
set(SHR_MUTEX_DIR "${PROJECT_SOURCE_DIR}/third_party/shared_mutex")
|
2023-06-20 21:37:37 -04:00
|
|
|
if(ENABLE_ESMI_LIB)
|
2025-01-30 01:38:20 -07:00
|
|
|
# Supported esmi library version tag
|
2025-04-15 05:51:51 +05:30
|
|
|
set(current_esmi_tag "esmi_pkg_ver-4.2")
|
2025-01-30 01:38:20 -07:00
|
|
|
|
2023-10-13 08:11:21 -04:00
|
|
|
if(NOT EXISTS ${PROJECT_SOURCE_DIR}/esmi_ib_library/src)
|
|
|
|
|
# TODO: use ExternalProject_Add instead or a submodule
|
2025-01-30 01:38:20 -07:00
|
|
|
message(STATUS "Adding esmi_ib_library...")
|
2025-05-06 05:40:18 +00:00
|
|
|
execute_process(COMMAND git clone --depth=1 -b ${current_esmi_tag} https://github.com/amd/esmi_ib_library.git
|
|
|
|
|
${PROJECT_SOURCE_DIR}/esmi_ib_library)
|
2025-01-30 01:38:20 -07:00
|
|
|
else()
|
|
|
|
|
message(STATUS "esmi_ib_library already installed, checking version...")
|
|
|
|
|
|
|
|
|
|
# Grab latest commit and get the tag
|
|
|
|
|
execute_process(
|
|
|
|
|
COMMAND git rev-list --tags --max-count=1
|
|
|
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/esmi_ib_library
|
|
|
|
|
OUTPUT_VARIABLE latest_commit
|
2025-05-06 05:40:18 +00:00
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
2025-01-30 01:38:20 -07:00
|
|
|
execute_process(
|
|
|
|
|
COMMAND git describe --tags ${latest_commit} --match "*pkg*"
|
|
|
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/esmi_ib_library
|
|
|
|
|
OUTPUT_VARIABLE latest_esmi_tag
|
2025-05-06 05:40:18 +00:00
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
2025-01-30 01:38:20 -07:00
|
|
|
|
|
|
|
|
# Update to latest tags if not matched
|
|
|
|
|
if(NOT latest_esmi_tag STREQUAL current_esmi_tag)
|
|
|
|
|
message(STATUS "Updating esmi_ib_library...")
|
|
|
|
|
execute_process(
|
2025-05-06 05:40:18 +00:00
|
|
|
COMMAND git clone --depth=1 -b ${current_esmi_tag} https://github.com/amd/esmi_ib_library.git
|
|
|
|
|
${PROJECT_SOURCE_DIR}/esmi_ib_library_temp RESULT_VARIABLE clone_result)
|
2025-01-30 01:38:20 -07:00
|
|
|
if(clone_result EQUAL 0)
|
|
|
|
|
file(REMOVE_RECURSE ${PROJECT_SOURCE_DIR}/esmi_ib_library)
|
|
|
|
|
file(RENAME ${PROJECT_SOURCE_DIR}/esmi_ib_library_temp ${PROJECT_SOURCE_DIR}/esmi_ib_library)
|
|
|
|
|
message(STATUS "Successfully cloned updated esmi_ib_library")
|
|
|
|
|
else()
|
|
|
|
|
file(REMOVE_RECURSE ${PROJECT_SOURCE_DIR}/esmi_ib_library_temp)
|
|
|
|
|
message(FATAL_ERROR "Failed to clone updated esmi_ib_library")
|
|
|
|
|
endif()
|
|
|
|
|
else()
|
|
|
|
|
message(STATUS "esmi_ib_library is the latest version: ${current_esmi_tag}...")
|
|
|
|
|
endif()
|
2023-10-13 08:11:21 -04:00
|
|
|
endif()
|
2025-01-29 12:39:19 -07:00
|
|
|
|
|
|
|
|
# Make sure to update the amd_hsmp.h file with the corresponding esmi version
|
|
|
|
|
file(COPY "${PROJECT_SOURCE_DIR}/include/amd_smi/impl/amd_hsmp.h"
|
|
|
|
|
DESTINATION "${PROJECT_SOURCE_DIR}/esmi_ib_library/include/asm")
|
|
|
|
|
|
2023-07-13 10:46:25 -04:00
|
|
|
add_definitions("-DENABLE_ESMI_LIB=1")
|
2023-10-13 08:11:21 -04:00
|
|
|
set(ESMI_INC_DIR "${PROJECT_SOURCE_DIR}/esmi_ib_library/include")
|
|
|
|
|
set(ESMI_SRC_DIR "${PROJECT_SOURCE_DIR}/esmi_ib_library/src")
|
|
|
|
|
# esmi has a lot of write-strings warnings - silence them
|
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-write-strings")
|
2023-06-20 21:37:37 -04:00
|
|
|
endif()
|
2017-10-30 12:12:40 -05:00
|
|
|
|
2025-09-24 16:42:04 -07:00
|
|
|
include_directories(
|
2025-12-15 13:20:47 -06:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
2025-09-24 16:42:04 -07:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/include
|
2025-12-15 13:20:47 -06:00
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/third_party/shared_mutex
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include/amd_smi
|
2025-09-24 16:42:04 -07:00
|
|
|
${ESMI_INC_DIR}
|
2026-01-06 15:18:20 -08:00
|
|
|
${LIBDRM_AMDGPU_INCLUDES}
|
2025-09-24 16:42:04 -07:00
|
|
|
)
|
2022-11-03 12:44:23 -05:00
|
|
|
|
|
|
|
|
set(CMN_SRC_LIST
|
|
|
|
|
"${ROCM_SRC_DIR}/rocm_smi_device.cc"
|
|
|
|
|
"${ROCM_SRC_DIR}/rocm_smi_main.cc"
|
|
|
|
|
"${ROCM_SRC_DIR}/rocm_smi_monitor.cc"
|
|
|
|
|
"${ROCM_SRC_DIR}/rocm_smi_power_mon.cc"
|
|
|
|
|
"${ROCM_SRC_DIR}/rocm_smi_utils.cc"
|
2025-05-02 21:58:53 -05:00
|
|
|
"${ROCM_SRC_DIR}/rocm_smi_counters.cc"
|
|
|
|
|
"${ROCM_SRC_DIR}/rocm_smi_kfd.cc"
|
|
|
|
|
"${ROCM_SRC_DIR}/rocm_smi_io_link.cc"
|
|
|
|
|
"${ROCM_SRC_DIR}/rocm_smi_gpu_metrics.cc"
|
2025-10-01 15:46:10 -05:00
|
|
|
"${ROCM_SRC_DIR}/rocm_smi_dyn_gpu_metrics.cc"
|
2025-05-02 21:58:53 -05:00
|
|
|
"${ROCM_SRC_DIR}/rocm_smi.cc"
|
2023-07-14 01:07:00 -05:00
|
|
|
"${ROCM_SRC_DIR}/rocm_smi_logger.cc"
|
2025-05-02 21:58:53 -05:00
|
|
|
"${SHR_MUTEX_DIR}/shared_mutex.cc"
|
2025-08-05 21:37:45 -04:00
|
|
|
"${ROCM_SRC_DIR}/rocm_smi_binary_parser.cc"
|
2025-11-13 21:51:31 -06:00
|
|
|
"${ROCM_SRC_DIR}/rocm_smi_board_temp.cc"
|
|
|
|
|
"${ROCM_SRC_DIR}/rocm_smi_npm.cc")
|
2022-11-03 12:44:23 -05:00
|
|
|
|
2023-10-13 08:11:21 -04:00
|
|
|
if(ENABLE_ESMI_LIB)
|
2025-05-06 05:40:18 +00:00
|
|
|
list(APPEND CMN_SRC_LIST ${ESMI_SRC_DIR}/e_smi.c)
|
|
|
|
|
list(APPEND CMN_SRC_LIST ${ESMI_SRC_DIR}/e_smi_monitor.c)
|
|
|
|
|
list(APPEND CMN_SRC_LIST ${ESMI_SRC_DIR}/e_smi_plat.c)
|
|
|
|
|
list(APPEND CMN_SRC_LIST ${ESMI_SRC_DIR}/e_smi_utils.c)
|
2023-01-16 05:22:45 -06:00
|
|
|
endif()
|
|
|
|
|
|
2022-11-03 12:44:23 -05:00
|
|
|
set(CMN_INC_LIST
|
|
|
|
|
"${ROCM_INC_DIR}/rocm_smi_device.h"
|
|
|
|
|
"${ROCM_INC_DIR}/rocm_smi_main.h"
|
|
|
|
|
"${ROCM_INC_DIR}/rocm_smi_monitor.h"
|
|
|
|
|
"${ROCM_INC_DIR}/rocm_smi_power_mon.h"
|
|
|
|
|
"${ROCM_INC_DIR}/rocm_smi_utils.h"
|
2025-05-02 21:58:53 -05:00
|
|
|
"${ROCM_INC_DIR}/rocm_smi_common.h"
|
|
|
|
|
"${ROCM_INC_DIR}/rocm_smi_exception.h"
|
|
|
|
|
"${ROCM_INC_DIR}/rocm_smi_counters.h"
|
|
|
|
|
"${ROCM_INC_DIR}/rocm_smi_kfd.h"
|
|
|
|
|
"${ROCM_INC_DIR}/rocm_smi_io_link.h"
|
|
|
|
|
"${ROCM_INC_DIR}/rocm_smi_gpu_metrics.h"
|
2025-10-01 15:46:10 -05:00
|
|
|
"${ROCM_INC_DIR}/rocm_smi_dyn_gpu_metrics.h"
|
2025-05-02 21:58:53 -05:00
|
|
|
"${ROCM_INC_DIR}/rocm_smi.h"
|
2023-07-14 01:07:00 -05:00
|
|
|
"${ROCM_INC_DIR}/rocm_smi_logger.h"
|
2025-05-02 21:58:53 -05:00
|
|
|
"${SHR_MUTEX_DIR}/shared_mutex.h"
|
2025-08-05 21:37:45 -04:00
|
|
|
"${ROCM_INC_DIR}/rocm_smi_binary_parser.h"
|
2025-11-13 21:51:31 -06:00
|
|
|
"${ROCM_INC_DIR}/rocm_smi_board_temp.h"
|
|
|
|
|
"${ROCM_INC_DIR}/rocm_smi_npm.h")
|
2020-06-20 17:00:06 -05:00
|
|
|
|
|
|
|
|
add_subdirectory("rocm_smi")
|
2022-11-03 16:45:06 -05:00
|
|
|
add_subdirectory("src")
|
2018-09-16 00:13:29 -05:00
|
|
|
|
2022-11-03 12:44:23 -05:00
|
|
|
if(BUILD_TESTS)
|
2023-07-24 17:18:17 -05:00
|
|
|
set(TESTS_COMPONENT "tests")
|
|
|
|
|
#add_subdirectory("tests/rocm_smi_test")
|
2022-11-03 13:30:16 -05:00
|
|
|
add_subdirectory("tests/amd_smi_test")
|
2024-09-03 16:45:56 -05:00
|
|
|
add_subdirectory("tests/python_unittest")
|
2022-11-03 12:44:23 -05:00
|
|
|
endif()
|
|
|
|
|
|
2024-05-14 17:03:05 -05:00
|
|
|
# python interface, CLI, and py-test depend on shared libraries
|
2024-03-14 03:43:52 -05:00
|
|
|
if(BUILD_SHARED_LIBS)
|
|
|
|
|
add_subdirectory("py-interface")
|
|
|
|
|
if(BUILD_CLI)
|
|
|
|
|
add_subdirectory("amdsmi_cli")
|
|
|
|
|
endif()
|
2025-01-08 07:19:46 +08:00
|
|
|
if(BUILD_RUST_WRAPPER)
|
|
|
|
|
add_subdirectory("rust-interface")
|
|
|
|
|
endif()
|
2023-03-17 05:34:24 -05:00
|
|
|
endif()
|
|
|
|
|
|
2025-03-26 16:55:44 +00:00
|
|
|
if(BUILD_EXAMPLES)
|
|
|
|
|
add_subdirectory("example")
|
|
|
|
|
endif()
|
|
|
|
|
|
2022-02-17 19:30:47 -08:00
|
|
|
include(CMakePackageConfigHelpers)
|
|
|
|
|
|
2022-11-03 16:45:06 -05:00
|
|
|
configure_package_config_file(
|
|
|
|
|
amd_smi-config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/amd_smi-config.cmake
|
2023-03-17 05:34:24 -05:00
|
|
|
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${AMD_SMI}
|
2022-11-03 16:45:06 -05:00
|
|
|
PATH_VARS CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR CMAKE_INSTALL_BINDIR)
|
2022-02-17 19:30:47 -08:00
|
|
|
|
2025-05-06 05:40:18 +00:00
|
|
|
write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/amd_smi-config-version.cmake
|
|
|
|
|
VERSION "${CPACK_PACKAGE_VERSION}" COMPATIBILITY SameMajorVersion)
|
2022-02-17 19:30:47 -08:00
|
|
|
|
|
|
|
|
install(
|
2022-11-03 12:44:23 -05:00
|
|
|
FILES ${CMAKE_CURRENT_BINARY_DIR}/amd_smi-config.cmake ${CMAKE_CURRENT_BINARY_DIR}/amd_smi-config-version.cmake
|
2022-11-03 16:45:06 -05:00
|
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${AMD_SMI}
|
2022-11-03 12:44:23 -05:00
|
|
|
COMPONENT dev)
|
2022-02-17 19:30:47 -08:00
|
|
|
|
2021-08-30 11:08:33 -04:00
|
|
|
# Create cmake target
|
|
|
|
|
# Add all targets to the build-tree export set
|
2025-05-06 17:59:47 -05:00
|
|
|
export(TARGETS ${AMD_SMI} FILE "${PROJECT_BINARY_DIR}/amd_smi_target.cmake")
|
2021-08-30 11:08:33 -04:00
|
|
|
|
|
|
|
|
# Export the package for use from the build-tree
|
|
|
|
|
# (this registers the build-tree with a global CMake-registry)
|
2025-05-06 17:59:47 -05:00
|
|
|
export(PACKAGE ${AMD_SMI})
|
2023-01-26 09:01:55 -08:00
|
|
|
|
2022-11-03 12:44:23 -05:00
|
|
|
install(
|
2022-11-03 16:45:06 -05:00
|
|
|
EXPORT amd_smiTargets
|
|
|
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${AMD_SMI}
|
2022-11-03 12:44:23 -05:00
|
|
|
COMPONENT dev)
|
2021-08-30 11:08:33 -04:00
|
|
|
|
2024-09-04 09:07:06 -05:00
|
|
|
set(CPACK_RPM_PACKAGE_LICENSE "MIT")
|
2025-06-18 15:33:47 -04:00
|
|
|
if(ENABLE_ASAN_PACKAGING)
|
2025-12-04 22:01:57 -05:00
|
|
|
set(COMP_TYPE "asan")
|
2025-08-04 21:03:15 -05:00
|
|
|
# install license file in share/doc/amd_smi-asan folder
|
|
|
|
|
install(
|
|
|
|
|
FILES ${CPACK_RESOURCE_FILE_LICENSE}
|
|
|
|
|
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/doc/${CPACK_PACKAGE_NAME}-asan
|
|
|
|
|
RENAME LICENSE.txt
|
|
|
|
|
COMPONENT asan)
|
2025-12-04 22:01:57 -05:00
|
|
|
else()
|
|
|
|
|
set(COMP_TYPE "dev")
|
2025-06-18 15:33:47 -04:00
|
|
|
endif()
|
2025-12-04 22:01:57 -05:00
|
|
|
|
2023-01-18 15:00:21 -06:00
|
|
|
# docs are installed into different share directory from tests and examples
|
2022-11-03 12:44:23 -05:00
|
|
|
install(
|
|
|
|
|
FILES ${CPACK_RESOURCE_FILE_LICENSE}
|
2025-07-03 03:07:54 -04:00
|
|
|
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/doc/${CPACK_PACKAGE_NAME}
|
2023-01-26 09:01:55 -08:00
|
|
|
RENAME LICENSE.txt
|
|
|
|
|
COMPONENT dev)
|
|
|
|
|
|
|
|
|
|
install(
|
|
|
|
|
FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.md
|
2025-07-03 03:07:54 -04:00
|
|
|
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/doc/${CPACK_PACKAGE_NAME}
|
2025-03-26 16:55:44 +00:00
|
|
|
COMPONENT dev)
|
|
|
|
|
install(
|
|
|
|
|
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/example
|
|
|
|
|
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${AMD_SMI}
|
2025-06-11 07:12:44 -05:00
|
|
|
COMPONENT dev
|
|
|
|
|
FILES_MATCHING
|
|
|
|
|
PATTERN "*.h"
|
|
|
|
|
PATTERN "*.cc"
|
|
|
|
|
PATTERN "*.txt"
|
|
|
|
|
PATTERN "build*" EXCLUDE
|
|
|
|
|
PATTERN ".cache*" EXCLUDE)
|
2020-10-12 16:06:27 +05:30
|
|
|
|
2024-09-15 11:01:28 +00:00
|
|
|
# Make for goamdsmi_shim library
|
|
|
|
|
add_subdirectory(goamdsmi_shim)
|
|
|
|
|
|
2020-10-12 16:06:27 +05:30
|
|
|
#Debian package specific variables
|
2025-08-27 20:10:52 -05:00
|
|
|
set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "python3-argcomplete, libdrm-dev, libdrm-amdgpu-dev")
|
2023-06-07 10:18:06 -05:00
|
|
|
set(CPACK_DEBIAN_ASAN_PACKAGE_RECOMMENDS ${CPACK_DEBIAN_PACKAGE_RECOMMENDS})
|
|
|
|
|
set(CPACK_DEBIAN_DEV_PACKAGE_RECOMMENDS ${CPACK_DEBIAN_PACKAGE_RECOMMENDS})
|
2025-05-06 17:59:47 -05:00
|
|
|
set(CPACK_DEBIAN_PACKAGE_DEPENDS "sudo, libc6, python3 (>= 3.6.8), python3-pip, python3-setuptools, python3-wheel")
|
2023-06-07 10:18:06 -05:00
|
|
|
set(CPACK_DEBIAN_ASAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS})
|
|
|
|
|
set(CPACK_DEBIAN_DEV_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS})
|
2021-04-12 11:18:42 -04:00
|
|
|
|
2025-05-06 17:59:47 -05:00
|
|
|
# $CURRENT_YEAR is used by copyright.in
|
|
|
|
|
string(TIMESTAMP CURRENT_YEAR "%Y")
|
|
|
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/copyright.in DEBIAN/copyright @ONLY)
|
|
|
|
|
|
2021-03-24 15:25:00 -07:00
|
|
|
## Process the Debian install/remove scripts to update the CPACK variables
|
2025-05-06 17:59:47 -05:00
|
|
|
configure_file(
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/postinst.in
|
|
|
|
|
DEBIAN/postinst
|
|
|
|
|
@ONLY
|
|
|
|
|
FILE_PERMISSIONS
|
|
|
|
|
OWNER_READ
|
|
|
|
|
OWNER_WRITE
|
|
|
|
|
OWNER_EXECUTE
|
|
|
|
|
GROUP_READ
|
|
|
|
|
GROUP_EXECUTE
|
|
|
|
|
WORLD_READ
|
|
|
|
|
WORLD_EXECUTE)
|
|
|
|
|
configure_file(
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/prerm.in
|
|
|
|
|
DEBIAN/prerm
|
|
|
|
|
@ONLY
|
|
|
|
|
FILE_PERMISSIONS
|
|
|
|
|
OWNER_READ
|
|
|
|
|
OWNER_WRITE
|
|
|
|
|
OWNER_EXECUTE
|
|
|
|
|
GROUP_READ
|
|
|
|
|
GROUP_EXECUTE
|
|
|
|
|
WORLD_READ
|
|
|
|
|
WORLD_EXECUTE)
|
|
|
|
|
list(APPEND CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_BINARY_DIR}/DEBIAN/postinst"
|
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/DEBIAN/prerm")
|
|
|
|
|
|
|
|
|
|
# Configure pre-rm for tests only
|
|
|
|
|
configure_file(
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/${CPACK_PACKAGE_NAME}-tests/prerm.in
|
|
|
|
|
DEBIAN/${CPACK_PACKAGE_NAME}-tests/prerm
|
|
|
|
|
@ONLY
|
|
|
|
|
FILE_PERMISSIONS
|
|
|
|
|
OWNER_READ
|
|
|
|
|
OWNER_WRITE
|
|
|
|
|
OWNER_EXECUTE
|
|
|
|
|
GROUP_READ
|
|
|
|
|
GROUP_EXECUTE
|
|
|
|
|
WORLD_READ
|
|
|
|
|
WORLD_EXECUTE)
|
2018-09-16 00:13:29 -05:00
|
|
|
|
2025-02-11 14:59:09 -07:00
|
|
|
# Assign control scripts to the AMDSMI Lib & Tests packages
|
2025-05-06 17:59:47 -05:00
|
|
|
set(CPACK_DEBIAN_DEV_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_BINARY_DIR}/DEBIAN/prerm")
|
|
|
|
|
set(CPACK_DEBIAN_TESTS_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_BINARY_DIR}/DEBIAN/${CPACK_PACKAGE_NAME}-tests/prerm")
|
|
|
|
|
|
2025-07-03 03:07:54 -04:00
|
|
|
# install copyright file into share/doc/amd-smi-lib/copyright
|
2025-05-06 17:59:47 -05:00
|
|
|
# required for debian package compliance
|
|
|
|
|
install(
|
|
|
|
|
FILES "${CMAKE_CURRENT_BINARY_DIR}/DEBIAN/copyright"
|
2025-07-03 03:07:54 -04:00
|
|
|
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/doc/${CPACK_PACKAGE_NAME}
|
2025-05-06 17:59:47 -05:00
|
|
|
COMPONENT dev)
|
2025-02-11 14:59:09 -07:00
|
|
|
|
2018-09-16 00:13:29 -05:00
|
|
|
# RPM package specific variables
|
2022-11-03 12:44:23 -05:00
|
|
|
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION
|
|
|
|
|
"${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
|
2020-10-12 16:06:27 +05:30
|
|
|
#Set rpm distro
|
|
|
|
|
if(CPACK_RPM_PACKAGE_RELEASE)
|
2022-11-03 12:44:23 -05:00
|
|
|
set(CPACK_RPM_PACKAGE_RELEASE_DIST ON)
|
2020-10-12 16:06:27 +05:30
|
|
|
endif()
|
2023-11-16 12:18:17 -06:00
|
|
|
# NOTE: RPM SUGGESTS DO NOT WORK! https://bugzilla.redhat.com/show_bug.cgi?id=1811358
|
2025-08-27 20:10:52 -05:00
|
|
|
set(CPACK_RPM_PACKAGE_SUGGESTS "python3-argcomplete, libdrm-dev, libdrm-amdgpu-dev")
|
2023-06-07 11:48:28 -05:00
|
|
|
set(CPACK_RPM_DEV_PACKAGE_SUGGESTS ${CPACK_RPM_PACKAGE_SUGGESTS})
|
|
|
|
|
set(CPACK_RPM_ASAN_PACKAGE_SUGGESTS ${CPACK_RPM_PACKAGE_SUGGESTS})
|
2023-10-25 18:52:46 -05:00
|
|
|
# python version gated by rhel8 :(
|
2025-08-27 20:10:52 -05:00
|
|
|
set(CPACK_RPM_PACKAGE_REQUIRES "sudo, python3 >= 3.6.8, python3-pip, python3-wheel, python3-setuptools")
|
2023-10-25 18:52:46 -05:00
|
|
|
set(CPACK_RPM_DEV_PACKAGE_REQUIRES ${CPACK_RPM_PACKAGE_REQUIRES})
|
|
|
|
|
set(CPACK_RPM_ASAN_PACKAGE_REQUIRES ${CPACK_RPM_PACKAGE_REQUIRES})
|
2023-06-07 11:48:28 -05:00
|
|
|
|
2023-03-20 13:29:28 -05:00
|
|
|
# don't terminate if bytecompile of python files fails
|
|
|
|
|
set(CPACK_RPM_SPEC_MORE_DEFINE "%define _python_bytecompile_errors_terminate_build 0")
|
2024-08-05 10:00:44 -07:00
|
|
|
# Cpack converts !/usr/bin/env python3 to /usr/libexec/platform-python in RHEL8.
|
|
|
|
|
# prevent the BRP(buildroot policy) script from checking and modifying interpreter directives
|
2025-05-06 05:40:18 +00:00
|
|
|
string(APPEND CPACK_RPM_SPEC_MORE_DEFINE "\n%undefine __brp_mangle_shebangs")
|
2022-11-03 16:45:06 -05:00
|
|
|
|
|
|
|
|
# Add rocm-core dependency if -DROCM_DEP_ROCMCORE=ON is passed
|
|
|
|
|
if(ROCM_DEP_ROCMCORE)
|
2023-01-26 09:01:55 -08:00
|
|
|
string(APPEND CPACK_DEBIAN_ASAN_PACKAGE_DEPENDS ", rocm-core-asan")
|
|
|
|
|
string(APPEND CPACK_RPM_ASAN_PACKAGE_REQUIRES ", rocm-core-asan")
|
|
|
|
|
string(APPEND CPACK_DEBIAN_DEV_PACKAGE_DEPENDS ", rocm-core")
|
|
|
|
|
string(APPEND CPACK_RPM_DEV_PACKAGE_REQUIRES ", rocm-core")
|
2022-11-03 16:45:06 -05:00
|
|
|
string(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS ", rocm-core")
|
|
|
|
|
string(APPEND CPACK_RPM_PACKAGE_REQUIRES ", rocm-core")
|
|
|
|
|
endif()
|
2021-01-12 17:15:52 -06:00
|
|
|
|
2023-01-26 09:01:55 -08:00
|
|
|
## Enable Component Mode and set component specific flags
|
|
|
|
|
set(CPACK_DEB_COMPONENT_INSTALL ON)
|
2025-05-06 17:59:47 -05:00
|
|
|
set(CPACK_DEBIAN_DEV_PACKAGE_NAME "${CPACK_PACKAGE_NAME}")
|
|
|
|
|
set(CPACK_DEBIAN_TESTS_PACKAGE_NAME "${CPACK_PACKAGE_NAME}-tests")
|
|
|
|
|
set(CPACK_DEBIAN_ASAN_PACKAGE_NAME "${CPACK_PACKAGE_NAME}-asan")
|
2023-01-26 09:01:55 -08:00
|
|
|
set(CPACK_RPM_COMPONENT_INSTALL ON)
|
2025-05-06 17:59:47 -05:00
|
|
|
set(CPACK_RPM_DEV_PACKAGE_NAME "${CPACK_PACKAGE_NAME}")
|
|
|
|
|
set(CPACK_RPM_TESTS_PACKAGE_NAME "${CPACK_PACKAGE_NAME}-tests")
|
|
|
|
|
set(CPACK_RPM_ASAN_PACKAGE_NAME "${CPACK_PACKAGE_NAME}-asan")
|
2023-01-26 09:01:55 -08:00
|
|
|
if(ENABLE_ASAN_PACKAGING)
|
2025-05-06 05:40:18 +00:00
|
|
|
# ASAN Package requires only asan component with libraries and license file
|
|
|
|
|
set(CPACK_COMPONENTS_ALL asan)
|
2023-01-26 09:01:55 -08:00
|
|
|
else()
|
2025-05-06 05:40:18 +00:00
|
|
|
set(CPACK_COMPONENTS_ALL dev tests)
|
2023-01-26 09:01:55 -08:00
|
|
|
endif()
|
|
|
|
|
|
2021-01-12 17:15:52 -06:00
|
|
|
# The line below doesn't currently work; it may be this issue:
|
|
|
|
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1811358
|
2022-11-03 16:45:06 -05:00
|
|
|
# set(CPACK_RPM_PACKAGE_SUGGESTS "sudo, libdrm-dev")
|
2020-10-12 16:06:27 +05:30
|
|
|
|
2021-03-24 15:25:00 -07:00
|
|
|
## Process the Rpm install/remove scripts to update the CPACK variables
|
2022-11-03 12:44:23 -05:00
|
|
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/RPM/post.in" RPM/post @ONLY)
|
2025-03-06 21:14:36 -07:00
|
|
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/RPM/preun.in" RPM/preun @ONLY)
|
2022-11-03 12:44:23 -05:00
|
|
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/RPM/postun.in" RPM/postun @ONLY)
|
|
|
|
|
set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/RPM/post")
|
2025-03-06 21:14:36 -07:00
|
|
|
set(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/RPM/preun")
|
2022-11-03 12:44:23 -05:00
|
|
|
set(CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/RPM/postun")
|
2021-03-24 15:25:00 -07:00
|
|
|
|
2020-10-12 16:06:27 +05:30
|
|
|
#Set the names now using CPACK utility
|
|
|
|
|
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
|
|
|
|
|
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
|
2019-11-08 12:54:45 -06:00
|
|
|
|
2025-12-04 22:01:57 -05:00
|
|
|
# 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 AND BUILD_DEBIAN_PKGING_FLAG)
|
|
|
|
|
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/runtime"
|
|
|
|
|
)
|
|
|
|
|
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(OVERRIDE_FILE_STATIC_DEST
|
|
|
|
|
"${CMAKE_BINARY_DIR}${OVERRIDE_TEMP_INSTALL_LOC}${DEB_OVERRIDES_INSTALL_PATH}${OVERRIDE_FILE_STATIC}"
|
|
|
|
|
)
|
|
|
|
|
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} ${OVERRIDE_FILE_STATIC_DEST}"
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
|
2022-11-03 12:44:23 -05:00
|
|
|
include(CPack)
|
2022-11-03 16:45:06 -05:00
|
|
|
|
|
|
|
|
generic_package_post()
|