CMAKE: Repackage whole project for ROCm 5.5 release

Signed-off-by: Galantsev, Dmitrii <dmitrii.galantsev@amd.com>
Change-Id: I932b11a111c8e0db04bd8c5e0c3d1a470e5b2386
Этот коммит содержится в:
Galantsev, Dmitrii
2022-11-03 16:45:06 -05:00
родитель d62b399db6
Коммит aeb0bf5832
12 изменённых файлов: 477 добавлений и 277 удалений
+2
Просмотреть файл
@@ -4,7 +4,9 @@ cmake/build/
.cache/
# build artifacts
include/rocm_smi/rocm_smi64Config.h
include/amd_smi/amd_smi64Config.h
include/amd_smi/amd_smiConfig.h
rocm_smi/include/rocm_smi/rocm_smi64Config.h
DEBIAN/postinst
DEBIAN/prerm
+55 -154
Просмотреть файл
@@ -3,6 +3,10 @@
#
cmake_minimum_required(VERSION 3.11)
set(AMD_SMI "amd_smi")
set(AMD_SMI_COMPONENT "lib${AMD_SMI}")
set(AMD_SMI_TARGET "${AMD_SMI}")
set(AMD_SMI_LIB_NAME "lib${AMD_SMI_TARGET}")
set(AMD_SMI_LIBS_TARGET "amd_smi_libraries")
set(BUILD_SHARED_LIBS
@@ -14,23 +18,16 @@ set(CMAKE_MODULE_PATH
CACHE INTERNAL "Default module path.")
## Include common cmake modules
include(utils)
include(GNUInstallDirs)
include(help_package)
find_package(PkgConfig)
if(NOT DEFINED CPACK_RESOURCE_FILE_LICENSE)
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")
endif()
set(ROCM_SMI "amd_smi")
set(ROCM_SMI_COMPONENT "lib${ROCM_SMI}")
set(ROCM_SMI_TARGET "${ROCM_SMI}64")
set(ROCM_SMI_LIB_NAME "lib${ROCM_SMI_TARGET}")
generic_add_rocm()
# provide git to utilities
find_program(GIT NAMES git)
## Setup the package version based on git tags.
set(PKG_VERSION_GIT_TAG_PREFIX "rsmi_pkg_ver")
set(PKG_VERSION_GIT_TAG_PREFIX "amdsmi_pkg_ver")
get_package_version_number("1.0.0" ${PKG_VERSION_GIT_TAG_PREFIX} GIT)
message("Package version: ${PKG_VERSION_STR}")
set(${AMD_SMI_LIBS_TARGET}_VERSION_MAJOR "${VERSION_MAJOR}")
@@ -47,25 +44,29 @@ set(PKG_VERSION_MINOR 0)
set(PKG_VERSION_PATCH 0)
set(PKG_VERSION_NUM_COMMIT 0)
## Define default variable and variables for the optional build target
## amd_smi_lib-dev
set(CMAKE_INSTALL_PREFIX
"/opt/rocm"
CACHE STRING "Default installation directory.")
set(ROCM_SMI_PACKAGE amd-smi-lib)
set(AMD_SMI_PACKAGE
amd-smi-lib
CACHE STRING "")
project(${AMD_SMI_LIBS_TARGET})
option(CMAKE_VERBOSE_MAKEFILE "Enable verbose output" ON)
option(CMAKE_EXPORT_COMPILE_COMMANDS "Export compile commands for linters and autocompleters" ON)
include(GNUInstallDirs)
option(BUILD_TESTS "Build test suite" OFF)
option(ENABLE_LDCONFIG "Set library links and caches using ldconfig." ON)
if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.4.0)
message("Compiler version is " ${CMAKE_CXX_COMPILER_VERSION})
message(FATAL_ERROR "Require at least gcc-5.4.0")
endif()
# Packaging directives
set(CPACK_PACKAGE_NAME
${AMD_SMI_PACKAGE}
CACHE STRING "")
set(CPACK_PACKAGE_CONTACT
"AMD-SMILib Support <amd-smi.support@amd.com>"
CACHE STRING "")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
"AMD System Management libraries"
CACHE STRING "")
generic_package()
## Compiler flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -fno-rtti -m64 -msse -msse2 -std=c++11")
@@ -75,16 +76,8 @@ 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")
# Clang does not set the build-id
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--build-id=sha1")
endif()
## Address Sanitize Flag
if(${ADDRESS_SANITIZER})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -g")
set(CMAKE_EXE_LINKER_FLAGS -fsanitize=address)
if(BUILD_SHARED_LIBS})
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -shared-libsan")
else()
@@ -98,15 +91,6 @@ else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wtrampolines -Wl,-z,now -fPIE")
endif()
# Use this instead of above for 32 bit
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
if("${CMAKE_BUILD_TYPE}" STREQUAL Release)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb -O0 -DDEBUG")
endif()
set(COMMON_SRC_DIR "${PROJECT_SOURCE_DIR}/src")
set(ROCM_SRC_DIR "${PROJECT_SOURCE_DIR}/rocm_smi/src")
set(AMDSMI_SRC_DIR "${PROJECT_SOURCE_DIR}/src/amd_smi")
@@ -119,19 +103,9 @@ pkg_check_modules(DRM REQUIRED libdrm)
pkg_check_modules(AMDGPU_DRM REQUIRED libdrm_amdgpu)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/third_party/shared_mutex
${CMAKE_CURRENT_SOURCE_DIR}/amd_smi/include ${DRM_INCLUDE_DIRS})
${CMAKE_CURRENT_SOURCE_DIR}/include/amd_smi ${DRM_INCLUDE_DIRS})
set(CMN_SRC_LIST
"${AMDSMI_SRC_DIR}/amd_smi.cc"
"${AMDSMI_SRC_DIR}/amd_smi_common.cc"
"${AMDSMI_SRC_DIR}/amd_smi_drm.cc"
"${AMDSMI_SRC_DIR}/amd_smi_gpu_device.cc"
"${AMDSMI_SRC_DIR}/amd_smi_lib_loader.cc"
"${AMDSMI_SRC_DIR}/amd_smi_socket.cc"
"${AMDSMI_SRC_DIR}/amd_smi_system.cc"
"${AMDSMI_SRC_DIR}/amd_smi_utils.cc"
"${AMDSMI_SRC_DIR}/amd_smi_uuid.cc"
"${AMDSMI_SRC_DIR}/fdinfo.cc"
"${ROCM_SRC_DIR}/rocm_smi.cc"
"${ROCM_SRC_DIR}/rocm_smi_counters.cc"
"${ROCM_SRC_DIR}/rocm_smi_device.cc"
@@ -145,14 +119,6 @@ set(CMN_SRC_LIST
"${SHR_MUTEX_DIR}/shared_mutex.cc")
set(CMN_INC_LIST
"${COMMON_INC_DIR}/amd_smi.h"
"${COMMON_INC_DIR}/impl/amd_smi_common.h"
"${COMMON_INC_DIR}/impl/amd_smi_device.h"
"${COMMON_INC_DIR}/impl/amd_smi_drm.h"
"${COMMON_INC_DIR}/impl/amd_smi_gpu_device.h"
"${COMMON_INC_DIR}/impl/amd_smi_lib_loader.h"
"${COMMON_INC_DIR}/impl/amd_smi_socket.h"
"${COMMON_INC_DIR}/impl/amd_smi_system.h"
"${ROCM_INC_DIR}/rocm_smi.h"
"${ROCM_INC_DIR}/rocm_smi_common.h"
"${ROCM_INC_DIR}/rocm_smi_counters.h"
@@ -167,56 +133,14 @@ set(CMN_INC_LIST
"${SHR_MUTEX_DIR}/shared_mutex.h")
add_subdirectory("rocm_smi")
add_subdirectory("src")
add_subdirectory("example")
if(BUILD_TESTS)
add_subdirectory("tests/rocm_smi_test")
add_subdirectory("tests/amd_smi_test")
endif()
# Examples and docs
set(SMI_EXAMPLE_EXE "amd_smi_drm_ex")
add_executable(${SMI_EXAMPLE_EXE} "example/amd_smi_drm_example.cc")
target_link_libraries(${SMI_EXAMPLE_EXE} ${ROCM_SMI_TARGET})
add_dependencies(${SMI_EXAMPLE_EXE} ${ROCM_SMI_TARGET})
set(SMI_NODRM_EXAMPLE_EXE "amd_smi_nodrm_ex")
add_executable(${SMI_NODRM_EXAMPLE_EXE} "example/amd_smi_nodrm_example.cc")
target_link_libraries(${SMI_NODRM_EXAMPLE_EXE} ${ROCM_SMI_TARGET})
add_dependencies(${SMI_NODRM_EXAMPLE_EXE} ${ROCM_SMI_TARGET})
# Generate Doxygen documentation
find_package(Doxygen)
find_package(LATEX COMPONENTS PDFLATEX)
if(DOXYGEN_FOUND AND LATEX_FOUND)
set(RSMI_MANUAL_NAME "AMD_SMI_Manual")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docs/amd_smi_doxygen.cfg ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.tex
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/docs/amd_smi_doxygen.cfg "${AMDSMI_INC_DIR}/amd_smi.h"
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.pdf
COMMAND make > /dev/null
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.pdf
${CMAKE_CURRENT_SOURCE_DIR}/docs/${RSMI_MANUAL_NAME}_new.pdf
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.tex
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/latex)
add_custom_target(amdsmi_docs DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.pdf)
add_dependencies(${ROCM_SMI_TARGET} amdsmi_docs)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.pdf
DESTINATION share/doc/${ROCM_SMI}
RENAME ${RSMI_MANUAL_NAME}.pdf)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.md DESTINATION share/doc/${ROCM_SMI}/)
else()
message("Doxygen or Latex is not found. Will not generate documents.")
endif(DOXYGEN_FOUND AND LATEX_FOUND)
# Generate python_wrapper and package targets
find_program(PYTHON3 "python3")
find_program(PIP3 "pip3")
@@ -238,9 +162,9 @@ if(PYTHON3 AND PIP3)
DEPENDS clang_tools_extract
COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/amdsmi_wrapper
COMMAND cp -r ${CMAKE_CURRENT_SOURCE_DIR}/include/amd_smi/amd_smi.h ${CMAKE_CURRENT_BINARY_DIR}/amdsmi_wrapper
COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/amdsmi_wrapper/rocm_smi
COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/amdsmi_wrapper/amd_smi
COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/rocm_smi/include/rocm_smi/kfd_ioctl.h
${CMAKE_CURRENT_BINARY_DIR}/amdsmi_wrapper/rocm_smi/
${CMAKE_CURRENT_BINARY_DIR}/amdsmi_wrapper/amd_smi/
COMMAND
python3 ${CMAKE_CURRENT_SOURCE_DIR}/tools/generator.py ${CMAKE_CURRENT_BINARY_DIR}/amdsmi_wrapper/amd_smi.h
${CMAKE_CURRENT_BINARY_DIR}/amdsmi_wrapper/ ${CMAKE_CURRENT_BINARY_DIR}/amdsmi_wrapper/
@@ -260,7 +184,7 @@ if(PYTHON3 AND PIP3)
COMMAND cp ${PY_INTERFACE_DIR}/amdsmi_interface.py ${PACKAGE_OUTPUT_DIR}
COMMAND cp ${PY_INTERFACE_DIR}/amdsmi_wrapper.py ${PACKAGE_OUTPUT_DIR}
COMMAND cp ${PY_INTERFACE_DIR}/README.md ${PACKAGE_OUTPUT_DIR}
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/rocm_smi/libamd_smi64.so ${PACKAGE_OUTPUT_DIR}
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/amd_smi/libamd_smi.so ${PACKAGE_OUTPUT_DIR}
COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE ${PACKAGE_OUTPUT_DIR}
COMMAND echo ${PACKAGE_OUTPUT_DIR})
@@ -270,8 +194,10 @@ endif(PYTHON3 AND PIP3)
include(CMakePackageConfigHelpers)
configure_package_config_file(amd_smi-config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/amd_smi-config.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/amd_smi)
configure_package_config_file(
amd_smi-config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/amd_smi-config.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/amd_smi
PATH_VARS CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR CMAKE_INSTALL_BINDIR)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/amd_smi-config-version.cmake
@@ -281,12 +207,12 @@ write_basic_package_version_file(
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/amd_smi-config.cmake ${CMAKE_CURRENT_BINARY_DIR}/amd_smi-config-version.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${ROCM_SMI}
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${AMD_SMI}
COMPONENT dev)
# Create cmake target
# Add all targets to the build-tree export set
export(TARGETS ${ROCM_SMI_TARGET} FILE "${PROJECT_BINARY_DIR}/rcom_smi_target.cmake")
export(TARGETS ${AMD_SMI_TARGET} FILE "${PROJECT_BINARY_DIR}/amd_smi_target.cmake")
# Export the package for use from the build-tree
# (this registers the build-tree with a global CMake-registry)
@@ -294,33 +220,18 @@ export(PACKAGE amd_smi)
# Create the amd_smiConfig.cmake and amd_smiConfigVersion files
# ... for the build tree
install(
EXPORT rocm_smiTargets
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${ROCM_SMI}"
EXPORT amd_smiTargets
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${AMD_SMI}
COMPONENT dev)
#License file
set(CPACK_RPM_PACKAGE_LICENSE "NCSA")
install(
FILES ${CPACK_RESOURCE_FILE_LICENSE}
DESTINATION share/doc/${ROCM_SMI}
DESTINATION share/doc/${AMD_SMI}
RENAME LICENSE.txt)
###########################
# Packaging directives
###########################
set(CPACK_GENERATOR
"DEB;RPM"
CACHE STRING "Default packaging generators.")
set(CPACK_PACKAGING_INSTALL_PREFIX
"${CMAKE_INSTALL_PREFIX}"
CACHE STRING "Default packaging prefix.")
set(ENABLE_LDCONFIG
ON
CACHE BOOL "Set library links and caches using ldconfig.")
set(CPACK_PACKAGE_NAME ${ROCM_SMI_PACKAGE})
set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc.")
set(CPACK_PACKAGE_CONTACT "RocmSMILib Support <rocm-smi.support@amd.com>")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "AMD System Management libraries")
#Readme file
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.md DESTINATION share/doc/${AMD_SMI})
#Make proper version for appending
#Default Value is 99999, setting it first
@@ -330,17 +241,9 @@ if(DEFINED ENV{ROCM_LIBPATCH_VERSION})
endif()
#Debian package specific variables
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE
${CPACK_DEBIAN_PACKAGE_HOMEPAGE}
CACHE STRING "https://github.com/RadeonOpenCompute/ROCm")
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()
set(CPACK_DEBIAN_PACKAGE_PROVIDES "rocm-smi")
set(CPACK_DEBIAN_PACKAGE_SUGGESTS "sudo")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "python3, rocm-core")
set(CPACK_DEBIAN_PACKAGE_PROVIDES "amd-smi")
set(CPACK_DEBIAN_PACKAGE_SUGGESTS "sudo, libdrm-dev")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "python3")
## Process the Debian install/remove scripts to update the CPACK variables
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/DEBIAN/postinst.in DEBIAN/postinst @ONLY)
@@ -350,21 +253,22 @@ set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "DEBIAN/postinst;DEBIAN/prerm")
# RPM package specific variables
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION
"${CPACK_PACKAGING_INSTALL_PREFIX} ${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
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()
#Set rpm distro
if(CPACK_RPM_PACKAGE_RELEASE)
set(CPACK_RPM_PACKAGE_RELEASE_DIST ON)
endif()
set(CPACK_RPM_PACKAGE_PROVIDES "rocm-smi")
set(CPACK_RPM_PACKAGE_REQUIRES "python3, rocm-core")
set(CPACK_RPM_PACKAGE_PROVIDES "amd-smi")
set(CPACK_RPM_PACKAGE_REQUIRES "python3")
# Add rocm-core dependency if -DROCM_DEP_ROCMCORE=ON is passed
if(ROCM_DEP_ROCMCORE)
string(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS ", rocm-core")
string(APPEND CPACK_RPM_PACKAGE_REQUIRES ", rocm-core")
endif()
# The line below doesn't currently work; it may be this issue:
# https://bugzilla.redhat.com/show_bug.cgi?id=1811358
# set(CPACK_RPM_PACKAGE_SUGGESTS "sudo")
# set(CPACK_RPM_PACKAGE_SUGGESTS "sudo, libdrm-dev")
#Prepare final version for the CPACK use
set(CPACK_PACKAGE_VERSION
@@ -380,10 +284,7 @@ set(CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/RPM/postun
#Set the names now using CPACK utility
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
# Remove dependency on rocm-core if -DROCM_DEP_ROCMCORE=ON not given to cmake
if(NOT ROCM_DEP_ROCMCORE)
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})
endif()
include(CPack)
generic_package_post()
+17 -16
Просмотреть файл
@@ -17,7 +17,7 @@ installed to query firmware information and hardware IPs.
## Additional Required software for building
In order to build the AMD SMI library, the following components are required. Note that the software versions listed are what was used in development. Earlier versions are not guaranteed to work:
* CMake (v3.5.0)
* CMake (v3.11.0)
* g++ (5.4.0)
In order to build the latest documentation, the following are required:
@@ -27,17 +27,19 @@ In order to build the latest documentation, the following are required:
The source code for AMD SMI is available on Github.
After the AMD SMI library git repository has been cloned to a local Linux machine, building the library is achieved by following the typical CMake build sequence. Specifically,
##### ```$ mkdir -p build```
##### ```$ cd build```
##### ```$ cmake <location of root of AMD SMI library CMakeLists.txt>```
##### ```$ make```
##### ```# Install library file and header; default location is /opt/rocm```
##### ```$ make install```
```bash
mkdir -p build
cd build
cmake <location of root of AMD SMI library CMakeLists.txt>
make -j $(nproc)
# Install library file and header; default location is /opt/rocm
make install```
The built library will appear in the `build` folder.
To build the rpm and deb packages follow the above steps with:
##### ```$ make package```
```bash
make package```
## Documentation
@@ -47,13 +49,12 @@ The reference manual, `refman.pdf` will be in the `latex` directory upon a succe
In order to verify the build and capability of AMD SMI on your system and to see an example of how AMD SMI can be used, you may build and run the tests that are available in the repo. To build the tests, follow these steps:
##### ```# Set environment variables used in CMakeLists.txt file```
##### ```$ AMDSMI_INC_DIR=<include dir, containing amd_smi/amd_smi.h>```
##### ```$ AMDSMI_LIB_DIR=<the folder containing AMDSMI library>```
##### ```$ mkdir <location for test build>```
##### ```$ cd <location for test build>```
##### ```$ cmake -DAMDSMI_INC_DIR=$AMDSMI_INC_DIR -DAMDSMI_LIB_DIR=$AMDSMI_LIB_DIR <AMD SMI source root>/tests/amd_smi_test```
##### ```$ make```
```bash
mkdir -p build
cd build
cmake -DBUILD_TESTS=ON <location of root of AMD SMI library CMakeLists.txt>
make -j $(nproc)
```
## Run the Tests
@@ -75,7 +76,7 @@ When AMD-SMI is no longer being used, `amdsmi_shut_down()` should be called. Thi
A simple "Hello World" type program that displays the temperature of detected devices would look like this:
```
```c++
#include <iostream>
#include <vector>
#include "amd_smi/amd_smi.h"
+17 -16
Просмотреть файл
@@ -1,27 +1,28 @@
# - Config file for the rocm_smi package
# - Config file for the amd_smi package
# It defines the following variables
# ROCM_SMI_INCLUDE_DIRS - include directories for rocm_smi
# ROCM_SMI_LIBRARIES - libraries to link against
# AMD_SMI_INCLUDE_DIRS - include directories for amd_smi
# AMD_SMI_LIBRARIES - libraries to link against
# Compute paths
@PACKAGE_INIT@
get_filename_component(ROCM_SMI_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(AMD_SMI_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
set_and_check( amd_smi_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@" )
set_and_check( AMD_SMI_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@" )
set_and_check( AMD_SMI_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@" )
set_and_check( amd_smi_LIB_DIR "@PACKAGE_CMAKE_INSTALL_LIBDIR@" )
set_and_check( AMD_SMI_LIB_DIR "@PACKAGE_CMAKE_INSTALL_LIBDIR@" )
set_and_check( AMD_SMI_LIB_DIRS "@PACKAGE_CMAKE_INSTALL_LIBDIR@" )
set_and_check( rocm_smi_INCLUDE_DIR "@CMAKE_INSTALL_INCLUDEDIR@" )
set_and_check( ROCM_SMI_INCLUDE_DIR "@CMAKE_INSTALL_INCLUDEDIR@" )
set_and_check( ROCM_SMI_INCLUDE_DIRS "@CMAKE_INSTALL_INCLUDEDIR@" )
set_and_check( rocm_smi_LIB_DIR "@CMAKE_INSTALL_LIBDIR@" )
set_and_check( ROCM_SMI_LIB_DIR "@CMAKE_INSTALL_LIBDIR@" )
set_and_check( ROCM_SMI_LIB_DIRS "@PACKAGE_CMAKE_INSTALL_LIBDIR@" )
# Our library dependencies (contains definitions for IMPORTED targets)
if(NOT TARGET rocm_smi AND NOT rocm_smi_BINARY_DIR)
include("${ROCM_SMI_CMAKE_DIR}/rocm_smiTargets.cmake")
if(NOT TARGET amd_smi AND NOT amd_smi_BINARY_DIR)
include("${AMD_SMI_CMAKE_DIR}/amd_smiTargets.cmake")
endif()
# These are IMPORTED targets created by RocmSmiTargets.cmake
# These are IMPORTED targets created by AmdSmiTargets.cmake
# TODO: Need to check if OAM libraries are needed here!
set(ROCM_SMI_LIBRARIES rocm_smi64)
set(ROCM_SMI_LIBRARY rocm_smi64)
set(AMD_SMI_LIBRARIES amd_smi)
set(AMD_SMI_LIBRARY amd_smi)
check_required_components(rocm_smi)
check_required_components(amd_smi)
+130
Просмотреть файл
@@ -0,0 +1,130 @@
# This module provides common functions used for building
# and packaging ROCm projects
option(CMAKE_VERBOSE_MAKEFILE "Enable verbose output" ON)
option(CMAKE_EXPORT_COMPILE_COMMANDS "Export compile commands for linters and autocompleters" ON)
function(generic_add_rocm)
set(ROCM_DIR
"/opt/rocm"
CACHE STRING "ROCm directory.")
if(DEFINED ENV{ROCM_RPATH} AND NOT DEFINED LIB_RUNPATH)
set(LIB_RUNPATH "\$ORIGIN:\$ORIGIN/../lib:\$ORIGIN/../lib64" PARENT_SCOPE)
endif()
set(CMAKE_INSTALL_PREFIX ${ROCM_DIR} CACHE STRING "Default installation directory.")
set(CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE STRING "Default packaging prefix.")
set(SHARE_INSTALL_PREFIX "share/${CMAKE_PROJECT_NAME}" CACHE STRING "Tests and Example install directory")
# add package search paths
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} /usr/local PARENT_SCOPE)
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /usr/lib64 /usr/lib/x86_64-linux-gnu PARENT_SCOPE)
endfunction()
function(generic_package)
if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.4.0)
message("Compiler version is " ${CMAKE_CXX_COMPILER_VERSION})
message(FATAL_ERROR "Require at least gcc-5.4.0")
endif()
if("${CMAKE_BUILD_TYPE}" STREQUAL Release)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2" PARENT_SCOPE)
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb -O0 -DDEBUG" PARENT_SCOPE)
endif()
# Add address sanitizer
if(${ADDRESS_SANITIZER})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -g" PARENT_SCOPE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address" PARENT_SCOPE)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -shared-libasan" PARENT_SCOPE)
message(STATUS "ADDRESS_SANITIZE: CMAKE_CXX_FLAGS=: ${CMAKE_CXX_FLAGS}")
message(STATUS "ADDRESS_SANITIZE: CMAKE_EXE_LINKER_FLAGS=: ${CMAKE_EXE_LINKER_FLAGS}")
endif()
# Clang does not set the build-id
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--build-id=sha1" PARENT_SCOPE)
endif()
# configure packaging
# cpack version is populated with CMAKE_PROJECT_VERSION implicitly
set(CPACK_PACKAGE_NAME
${CMAKE_PROJECT_NAME}
CACHE STRING "")
set(CPACK_PACKAGE_VENDOR
"Advanced Micro Devices, Inc."
CACHE STRING "")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
"Placeholder Tool"
CACHE STRING "")
set(CPACK_PACKAGE_DESCRIPTION
"This package contains the AMD ${CPACK_PACKAGE_DESCRIPTION_SUMMARY}."
CACHE STRING "")
set(CPACK_PACKAGING_INSTALL_PREFIX
"${CMAKE_INSTALL_PREFIX}"
CACHE STRING "Default packaging prefix.")
set(CPACK_RESOURCE_FILE_LICENSE
"${CMAKE_CURRENT_SOURCE_DIR}/License.txt"
CACHE STRING "")
set(CPACK_RPM_PACKAGE_LICENSE
"MIT"
CACHE STRING "")
set(CPACK_GENERATOR
"DEB;RPM"
CACHE STRING "Default packaging generators.")
set(CPACK_DEB_COMPONENT_INSTALL ON PARENT_SCOPE)
set(CPACK_RPM_COMPONENT_INSTALL ON PARENT_SCOPE)
mark_as_advanced(CPACK_PACKAGE_NAME CPACK_PACKAGE_VENDOR CPACK_PACKAGE_CONTACT CPACK_PACKAGE_DESCRIPTION_SUMMARY
CPACK_PACKAGE_DESCRIPTION CPACK_RESOURCE_FILE_LICENSE CPACK_RPM_PACKAGE_LICENSE CPACK_GENERATOR)
# Debian package specific variables
if(DEFINED ENV{CPACK_DEBIAN_PACKAGE_RELEASE})
set(CPACK_DEBIAN_PACKAGE_RELEASE $ENV{CPACK_DEBIAN_PACKAGE_RELEASE} PARENT_SCOPE)
else()
set(CPACK_DEBIAN_PACKAGE_RELEASE "local" PARENT_SCOPE)
endif()
message("Using CPACK_DEBIAN_PACKAGE_RELEASE ${CPACK_DEBIAN_PACKAGE_RELEASE}")
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT" PARENT_SCOPE)
# RPM package specific variables
if(DEFINED ENV{CPACK_RPM_PACKAGE_RELEASE})
set(CPACK_RPM_PACKAGE_RELEASE $ENV{CPACK_RPM_PACKAGE_RELEASE} PARENT_SCOPE)
else()
set(CPACK_RPM_PACKAGE_RELEASE "local" PARENT_SCOPE)
endif()
message("Using CPACK_RPM_PACKAGE_RELEASE ${CPACK_RPM_PACKAGE_RELEASE}")
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT" PARENT_SCOPE)
set(CPACK_RPM_PACKAGE_AUTOREQ 0 PARENT_SCOPE)
set(CPACK_RPM_PACKAGE_AUTOPROV 0 PARENT_SCOPE)
list(
APPEND
CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION
"/lib"
"/usr/sbin"
"/lib/systemd"
"/lib/systemd/system"
"/usr"
"/opt")
# PACKAGE-tests need PACKAGE
set(CPACK_DEBIAN_TESTS_PACKAGE_DEPENDS "${CPACK_PACKAGE_NAME}" PARENT_SCOPE)
set(CPACK_RPM_TESTS_PACKAGE_REQUIRES "${CPACK_PACKAGE_NAME}" PARENT_SCOPE)
# Treat runtime group as package base.
# Without it - the base package would be named 'rdc-runtime'
# resulting in rdc-runtime*.deb and rdc-runtime*.rpm
set(CPACK_DEBIAN_RUNTIME_PACKAGE_NAME "${CPACK_PACKAGE_NAME}" PARENT_SCOPE)
set(CPACK_RPM_RUNTIME_PACKAGE_NAME "${CPACK_PACKAGE_NAME}" PARENT_SCOPE)
endfunction()
# this function goes after 'include(CPack)'
function(generic_package_post)
# PACKAGE package, no postfix
cpack_add_component_group("runtime")
cpack_add_component(dev GROUP runtime)
cpack_add_component(unspecified GROUP runtime)
# PACKAGE-tests package, -tests postfix
cpack_add_component_group("tests")
cpack_add_component(tests GROUP tests)
endfunction()
+27
Просмотреть файл
@@ -0,0 +1,27 @@
# TODO: Provide a standalone CMakeLists.txt project example
# that can link against existing amd-smi library
# copy .cc files into install directory
install(
DIRECTORY ./
DESTINATION share/example/amd-smi
FILES_MATCHING
PATTERN "*.cc")
# copy cmake file into install directory
install(
FILES CMakeLists.txt.in
RENAME CMakeLists.txt
DESTINATION share/example/amd-smi)
# compile example files but do not install
# this is only useful if running from build directory
set(SMI_DRM_EXAMPLE_EXE "amd_smi_drm_ex")
add_executable(${SMI_DRM_EXAMPLE_EXE} "amd_smi_drm_example.cc")
target_link_libraries(${SMI_DRM_EXAMPLE_EXE} ${AMD_SMI_TARGET})
add_dependencies(${SMI_DRM_EXAMPLE_EXE} ${AMD_SMI_TARGET})
set(SMI_NODRM_EXAMPLE_EXE "amd_smi_nodrm_ex")
add_executable(${SMI_NODRM_EXAMPLE_EXE} "amd_smi_nodrm_example.cc")
target_link_libraries(${SMI_NODRM_EXAMPLE_EXE} ${AMD_SMI_TARGET})
add_dependencies(${SMI_NODRM_EXAMPLE_EXE} ${AMD_SMI_TARGET})
+23
Просмотреть файл
@@ -0,0 +1,23 @@
cmake_minimum_required(VERSION 3.11)
option(CMAKE_VERBOSE_MAKEFILE "Enable verbose output" ON)
option(CMAKE_EXPORT_COMPILE_COMMANDS "Export compile commands for linters and autocompleters" ON)
project(main LANGUAGES CXX)
set(CMAKE_CXX_STANDARD
11
CACHE STRING "The C++ standard to use")
find_package(amd_smi
HINTS
"../../../lib/cmake"
"../../../lib64/cmake"
"${ROCM_DIR}/lib/cmake"
"${ROCM_DIR}/lib64/cmake"
CONFIG REQUIRED)
link_libraries(amd_smi)
# compile example files but do not install
add_executable(amd_smi_drm_ex "amd_smi_drm_example.cc")
add_executable(amd_smi_nodrm_ex "amd_smi_nodrm_example.cc")
+28 -61
Просмотреть файл
@@ -15,11 +15,9 @@ message("--------Proj Src Dir: " ${PROJECT_SOURCE_DIR})
# message("--------Proj Bld Dir: " ${PROJECT_BINARY_DIR})
# message("--------Proj Lib Dir: " ${PROJECT_BINARY_DIR}/lib)
# message("--------Proj Exe Dir: " ${PROJECT_BINARY_DIR}/bin)
# message("--------RSMI Lib Dir: " ${RSMI_LIB_DIR})
# message("--------RSMI Inc Dir: " ${RSMI_INC_DIR})
# message("")
set(ROCM_SMI "amd_smi")
set(ROCM_SMI "rocm_smi")
set(ROCM_SMI_COMPONENT "lib${ROCM_SMI}")
set(ROCM_SMI_TARGET "${ROCM_SMI}64")
@@ -50,19 +48,13 @@ set(${ROCM_SMI}_VERSION_BUILD "0")
message("SOVERSION: ${SO_VERSION_STRING}")
# Create a configure file to get version info from within library
configure_file("${PROJECT_SOURCE_DIR}/src/${ROCM_SMI_TARGET}Config.in"
"${PROJECT_SOURCE_DIR}/include/amd_smi/${ROCM_SMI_TARGET}Config.h")
configure_file("src/${ROCM_SMI_TARGET}Config.in"
"${CMAKE_CURRENT_SOURCE_DIR}/include/rocm_smi/${ROCM_SMI_TARGET}Config.h")
set(rocm_smi_VERSION_MAJOR "${VERSION_MAJOR}")
set(rocm_smi_VERSION_MINOR "${VERSION_MINOR}")
set(rocm_smi_VERSION_PATCH "0")
set(rocm_smi_VERSION_BUILD "0")
configure_file("${PROJECT_SOURCE_DIR}/rocm_smi/src/rocm_smi64Config.in"
"${PROJECT_SOURCE_DIR}/rocm_smi/include/rocm_smi/rocm_smi64Config.h")
set(RSMI_SRC_DIR "src")
set(RSMI_INC_DIR "include")
set(RSMI_DOCS_DIR "docs")
set(SMI_EXAMPLE_EXE "rocm_smi_ex")
@@ -93,25 +85,32 @@ endif()
#file reorganization changes
#rocm_smi.py moved to libexec/rocm_smi. so creating rocm-smi symlink
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
add_custom_target(
link-rocm-smi ALL
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E create_symlink ../libexec/${ROCM_SMI}/rocm_smi.py
${CMAKE_CURRENT_BINARY_DIR}/bin/rocm-smi)
#file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
#add_custom_target(
# link-rocm-smi ALL
# WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
# COMMAND ${CMAKE_COMMAND} -E create_symlink ../libexec/${ROCM_SMI}/rocm_smi.py
# ${CMAKE_CURRENT_BINARY_DIR}/bin/rocm-smi)
## Add the install directives for the runtime library.
install(
TARGETS ${ROCM_SMI_TARGET}
EXPORT rocm_smiTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${ROCM_SMI_COMPONENT})
install(FILES ${PROJECT_SOURCE_DIR}/include/amd_smi/amd_smi.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/amd_smi)
install(FILES ${PROJECT_SOURCE_DIR}/include/amd_smi/${ROCM_SMI_TARGET}Config.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/amd_smi)
install(FILES ${PROJECT_SOURCE_DIR}/rocm_smi/include/rocm_smi/kfd_ioctl.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/amd_smi)
#install(
# TARGETS ${ROCM_SMI_TARGET}
# EXPORT rocm_smiTargets
# LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
# ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${ROCM_SMI_COMPONENT})
#
#install(
# FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/rocm_smi/rocm_smi.h
# DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rocm_smi
# COMPONENT ${ROCM_SMI_COMPONENT})
#install(
# FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/rocm_smi/${ROCM_SMI_TARGET}Config.h
# DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rocm_smi
# COMPONENT ${ROCM_SMI_COMPONENT})
#install(
# FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/rocm_smi/kfd_ioctl.h
# DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rocm_smi
# COMPONENT ${ROCM_SMI_COMPONENT})
#install(FILES ${PROJECT_SOURCE_DIR}/rocm_smi/python_smi_tools/rsmiBindings.py
# DESTINATION libexec/${ROCM_SMI})
#install(FILES ${PROJECT_SOURCE_DIR}/rocm_smi/python_smi_tools/rocm_smi.py
@@ -121,36 +120,4 @@ install(FILES ${PROJECT_SOURCE_DIR}/rocm_smi/include/rocm_smi/kfd_ioctl.h
#install(FILES ${CMAKE_CURRENT_BINARY_DIR}/bin/rocm-smi
# DESTINATION bin)
# Generate Doxygen documentation
find_package(Doxygen)
find_package(LATEX COMPONENTS PDFLATEX)
if(DOXYGEN_FOUND AND LATEX_FOUND)
set(ASMI_MANUAL_NAME "AMD_SMI_Manual")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../docs/amd_smi_doxygen.cfg ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.tex
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../docs/amd_smi_doxygen.cfg
"${PROJECT_SOURCE_DIR}/include/amd_smi/amd_smi.h"
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.pdf
COMMAND make > /dev/null
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.pdf
${CMAKE_CURRENT_SOURCE_DIR}/../docs/${ASMI_MANUAL_NAME}_new.pdf
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.tex
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/latex)
add_custom_target(docs DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.pdf)
add_dependencies(${ROCM_SMI_TARGET} docs)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.pdf
DESTINATION share/doc/${ROCM_SMI}
RENAME ${ASMI_MANUAL_NAME}.pdf)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../README.md DESTINATION share/doc/${ROCM_SMI}/)
else()
message("Doxygen or Latex is not found. Will not generate documents.")
endif(DOXYGEN_FOUND AND LATEX_FOUND)
# NOTE: Doxygen generation has been stripped
+160
Просмотреть файл
@@ -0,0 +1,160 @@
#
# Minimum version of cmake required
#
message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
message(" CMake AMD SMI (Library) ")
message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
message("")
message("Build Configuration:")
# message("-----------BuildType: " ${CMAKE_BUILD_TYPE})
# message("------------Compiler: " ${CMAKE_CXX_COMPILER})
# message("-------------Version: " ${CMAKE_CXX_COMPILER_VERSION})
message("--------Proj Src Dir: " ${PROJECT_SOURCE_DIR})
# message("--------Proj Bld Dir: " ${PROJECT_BINARY_DIR})
# message("--------Proj Lib Dir: " ${PROJECT_BINARY_DIR}/lib)
# message("--------Proj Exe Dir: " ${PROJECT_BINARY_DIR}/bin)
# message("")
## Include common cmake modules
include(utils)
################# Determine the library version #########################
set(SO_VERSION_GIT_TAG_PREFIX "amd_smi_so_ver")
set(SRC_DIR "amd_smi")
set(INC_DIR "${PROJECT_SOURCE_DIR}/include/amd_smi")
set(SRC_LIST
"${SRC_DIR}/amd_smi.cc"
"${SRC_DIR}/amd_smi_common.cc"
"${SRC_DIR}/amd_smi_drm.cc"
"${SRC_DIR}/amd_smi_gpu_device.cc"
"${SRC_DIR}/amd_smi_lib_loader.cc"
"${SRC_DIR}/amd_smi_socket.cc"
"${SRC_DIR}/amd_smi_system.cc"
"${SRC_DIR}/amd_smi_utils.cc"
"${SRC_DIR}/amd_smi_uuid.cc"
"${SRC_DIR}/fdinfo.cc"
"${CMN_SRC_LIST}")
set(INC_LIST
"${INC_DIR}/amd_smi.h"
"${INC_DIR}/impl/amd_smi_common.h"
"${INC_DIR}/impl/amd_smi_device.h"
"${INC_DIR}/impl/amd_smi_drm.h"
"${INC_DIR}/impl/amd_smi_gpu_device.h"
"${INC_DIR}/impl/amd_smi_lib_loader.h"
"${INC_DIR}/impl/amd_smi_socket.h"
"${INC_DIR}/impl/amd_smi_system.h"
"${PROJECT_SOURCE_DIR}/rocm_smi/include/rocm_smi/rocm_smi.h"
"${PROJECT_SOURCE_DIR}/rocm_smi/include/rocm_smi/rocm_smi_utils.h")
# VERSION_* variables should be set by get_version_from_tag
message("Package version: ${PKG_VERSION_STR}")
# Debian package specific variables
# Set a default value for the package version
get_version_from_tag("1.0.0.0" ${SO_VERSION_GIT_TAG_PREFIX} GIT)
# VERSION_* variables should be set by get_version_from_tag
if(${ROCM_PATCH_VERSION})
set(VERSION_PATCH ${ROCM_PATCH_VERSION})
set(SO_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
else()
set(SO_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}")
endif()
set(${AMD_SMI}_VERSION_MAJOR "${VERSION_MAJOR}")
set(${AMD_SMI}_VERSION_MINOR "${VERSION_MINOR}")
set(${AMD_SMI}_VERSION_PATCH "0")
set(${AMD_SMI}_VERSION_BUILD "0")
message("SOVERSION: ${SO_VERSION_STRING}")
# Create a configure file to get version info from within library
configure_file("${AMD_SMI_TARGET}Config.in" "${PROJECT_SOURCE_DIR}/include/amd_smi/${AMD_SMI_TARGET}Config.h")
add_executable(amd_smi_ex "../example/amd_smi_drm_example.cc")
target_link_libraries(amd_smi_ex ${AMD_SMI_TARGET})
add_library(${AMD_SMI_TARGET} ${SRC_LIST} ${INC_LIST})
target_link_libraries(${AMD_SMI_TARGET} pthread rt dl)
target_include_directories(${AMD_SMI_TARGET} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/rocm_smi/include
${PROJECT_SOURCE_DIR}/common/shared_mutex)
# use the target_include_directories() command to specify the include directories for the target
target_include_directories(${AMD_SMI_TARGET} PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
## Set the VERSION and SOVERSION values
set_property(TARGET ${AMD_SMI_TARGET} PROPERTY SOVERSION "${VERSION_MAJOR}")
set_property(TARGET ${AMD_SMI_TARGET} PROPERTY VERSION "${SO_VERSION_STRING}")
## If the library is a release, strip the target library
if("${CMAKE_BUILD_TYPE}" STREQUAL Release)
if(${BUILD_SHARED_LIBS}) #stripping only for .so
add_custom_command(
TARGET ${AMD_SMI_TARGET}
POST_BUILD
COMMAND ${CMAKE_STRIP} lib${AMD_SMI_TARGET}.so.${SO_VERSION_STRING})
endif()
endif()
#file reorganization changes
#amd_smi.py moved to libexec/amd_smi. so creating amd-smi symlink
#file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
#add_custom_target(
# link-amd-smi ALL
# WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
# COMMAND ${CMAKE_COMMAND} -E create_symlink ../libexec/${AMD_SMI}/amd_smi.py ${CMAKE_CURRENT_BINARY_DIR}/bin/amd-smi)
## Add the install directives for the runtime library.
install(
TARGETS ${AMD_SMI_TARGET}
EXPORT amd_smiTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${AMD_SMI_COMPONENT})
install(FILES ${PROJECT_SOURCE_DIR}/include/amd_smi/amd_smi.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/amd_smi)
install(FILES ${PROJECT_SOURCE_DIR}/include/amd_smi/${AMD_SMI_TARGET}Config.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/amd_smi)
install(FILES ${PROJECT_SOURCE_DIR}/rocm_smi/include/rocm_smi/kfd_ioctl.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/amd_smi)
#install(FILES ${PROJECT_SOURCE_DIR}/rocm_smi/python_smi_tools/rsmiBindings.py
# DESTINATION libexec/${AMD_SMI})
#install(FILES ${PROJECT_SOURCE_DIR}/rocm_smi/python_smi_tools/rocm_smi.py
# PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ
# GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
# DESTINATION libexec/${AMD_SMI})
#install(FILES ${CMAKE_CURRENT_BINARY_DIR}/bin/rocm-smi
# DESTINATION bin)
# Generate Doxygen documentation
find_package(Doxygen)
find_package(LATEX COMPONENTS PDFLATEX)
if(DOXYGEN_FOUND AND LATEX_FOUND)
set(ASMI_MANUAL_NAME "AMD_SMI_Manual")
configure_file(${PROJECT_SOURCE_DIR}/docs/amd_smi_doxygen.cfg ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.tex
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
DEPENDS ${PROJECT_SOURCE_DIR}/docs/amd_smi_doxygen.cfg "${PROJECT_SOURCE_DIR}/include/amd_smi/amd_smi.h"
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.pdf
COMMAND make > /dev/null
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.pdf ${PROJECT_SOURCE_DIR}/docs/${ASMI_MANUAL_NAME}_new.pdf
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.tex
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/latex)
add_custom_target(docs DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.pdf)
add_dependencies(${AMD_SMI_TARGET} docs)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.pdf
DESTINATION share/doc/${AMD_SMI}
RENAME ${ASMI_MANUAL_NAME}.pdf)
install(FILES ${PROJECT_SOURCE_DIR}/README.md DESTINATION share/doc/${AMD_SMI})
else()
message("Doxygen or Latex is not found. Will not generate documents.")
endif(DOXYGEN_FOUND AND LATEX_FOUND)
+3 -3
Просмотреть файл
@@ -43,8 +43,8 @@
*
*/
#ifndef INCLUDE_AMD_SMI_AMD_SMI64CONFIG_H_
#define INCLUDE_AMD_SMI_AMD_SMI64CONFIG_H_
#ifndef INCLUDE_AMD_SMI_AMD_SMICONFIG_H_
#define INCLUDE_AMD_SMI_AMD_SMICONFIG_H_
// This file is generated on build.
@@ -53,4 +53,4 @@
#define amd_smi_VERSION_PATCH @amd_smi_VERSION_PATCH@
#define amd_smi_VERSION_BUILD "@amd_smi_VERSION_BUILD@"
#endif // INCLUDE_AMD_SMI_AMD_SMI64CONFIG_H_
#endif // INCLUDE_AMD_SMI_AMD_SMICONFIG_H_
+8 -14
Просмотреть файл
@@ -2,7 +2,7 @@
option(INSTALL_GTEST "Install GTest (only useful if GTest is not already installed)" OFF)
# Try to find googletest
find_package(GTest 1.12.0)
find_package(GTest 1.11.0)
# GTest_FOUND is set to TRUE if ANY version is found
# GTest_VERSION is set if 1.11.0 or newer version is found
@@ -12,7 +12,7 @@ if(NOT GTest_FOUND STREQUAL "TRUE" OR NOT DEFINED GTest_VERSION)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG release-1.12.0)
GIT_TAG release-1.11.0)
FetchContent_MakeAvailable(googletest)
endif()
@@ -28,29 +28,24 @@ endif()
#
# Build Src directory
# Build Binary directory
# Build Type: Debug Vs Release, 32 Vs 64
# Build Type: Debug Vs Release
# Compiler Version, etc
#
message("")
message("Build Configuration:")
message("-------------IS64BIT: " ${IS64BIT})
message("-----------BuildType: " ${BUILD_TYPE})
message("-----------BuildType: " ${CMAKE_BUILD_TYPE})
message("------------Compiler: " ${CMAKE_CXX_COMPILER})
message("-------------Version: " ${CMAKE_CXX_COMPILER_VERSION})
message("--------Proj Src Dir: " ${PROJECT_SOURCE_DIR})
message("--------Proj Bld Dir: " ${PROJECT_BINARY_DIR})
message("--------Proj Lib Dir: " ${PROJECT_BINARY_DIR}/lib)
message("--------Proj Exe Dir: " ${PROJECT_BINARY_DIR}/bin)
message("--------RSMI Lib Dir: " ${AMDSMI_LIB_DIR})
message("")
# Other source directories
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/functional functionalSources)
link_directories(${AMDSMI_LIB_DIR})
set(TEST "amdsmitst64")
set(TEST "amdsmitst")
# Source files
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} tstSources)
@@ -61,10 +56,9 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..)
# Build rules
add_executable(${TEST} ${tstSources} ${functionalSources})
target_link_libraries(${TEST} amd_smi64 c stdc++ pthread GTest::gtest_main)
target_link_libraries(${TEST} amd_smi c stdc++ pthread GTest::gtest_main)
install(
TARGETS ${TEST}
ARCHIVE DESTINATION ${PROJECT_BINARY_DIR}/lib
LIBRARY DESTINATION ${PROJECT_BINARY_DIR}/lib
RUNTIME DESTINATION ${PROJECT_BINARY_DIR}/bin)
DESTINATION ${SHARE_INSTALL_PREFIX}/tests/amd_smi
COMPONENT tests)
+7 -13
Просмотреть файл
@@ -28,28 +28,23 @@ endif()
#
# Build Src directory
# Build Binary directory
# Build Type: Debug Vs Release, 32 Vs 64
# Build Type: Debug Vs Release
# Compiler Version, etc
#
message("")
message("Build Configuration:")
message("-------------IS64BIT: " ${IS64BIT})
message("-----------BuildType: " ${BUILD_TYPE})
message("-----------BuildType: " ${CMAKE_BUILD_TYPE})
message("------------Compiler: " ${CMAKE_CXX_COMPILER})
message("-------------Version: " ${CMAKE_CXX_COMPILER_VERSION})
message("--------Proj Src Dir: " ${PROJECT_SOURCE_DIR})
message("--------Proj Bld Dir: " ${PROJECT_BINARY_DIR})
message("--------Proj Lib Dir: " ${PROJECT_BINARY_DIR}/lib)
message("--------Proj Exe Dir: " ${PROJECT_BINARY_DIR}/bin)
message("--------RSMI Lib Dir: " ${RSMI_LIB_DIR})
message("")
# Other source directories
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/functional functionalSources)
link_directories(${RSMI_LIB_DIR})
set(TEST "rsmitst64")
# Source files
@@ -61,10 +56,9 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..)
# Build rules
add_executable(${TEST} ${tstSources} ${functionalSources})
target_link_libraries(${TEST} amd_smi64 c stdc++ pthread GTest::gtest_main)
target_link_libraries(${TEST} rocm_smi64 c stdc++ pthread GTest::gtest_main)
install(
TARGETS ${TEST}
ARCHIVE DESTINATION ${PROJECT_BINARY_DIR}/lib
LIBRARY DESTINATION ${PROJECT_BINARY_DIR}/lib
RUNTIME DESTINATION ${PROJECT_BINARY_DIR}/bin)
#install(
# TARGETS ${TEST}
# DESTINATION ${SHARE_INSTALL_PREFIX}/tests/amd_smi
# COMPONENT tests)