CMAKE - Format with cmake-format

Change-Id: I5b86b7b83e3d151c3d6e1c216ecb28f1313d538a
Signed-off-by: Galantsev, Dmitrii <dmitrii.galantsev@amd.com>


[ROCm/amdsmi commit: 42c77a5912]
This commit is contained in:
Galantsev, Dmitrii
2025-05-06 05:40:18 +00:00
gecommit door Arif, Maisam
bovenliggende bc0567f017
commit c6c01ee675
18 gewijzigde bestanden met toevoegingen van 248 en 327 verwijderingen
+16 -4
Bestand weergeven
@@ -4,8 +4,20 @@
with section("parse"):
# Specify structure for custom cmake functions
additional_commands = { 'foo': { 'flags': ['BAR', 'BAZ'],
'kwargs': {'DEPENDS': '*', 'HEADERS': '*', 'SOURCES': '*'}}}
additional_commands = {
'parse_version': {
'kwargs': {
'VERSION_STRING': '*'
}
},
'get_version_from_tag': {
'kwargs': {
'DEFAULT_VERSION_STRING': '*',
'VERSION_PREFIX': '*',
'GIT': '*'
}
}
}
# Override configurations per-command where available
override_spec = {}
@@ -45,7 +57,7 @@ with section("format"):
# If an argument group contains more than this many sub-groups (parg or kwarg
# groups) then force it to a vertical layout.
max_subgroups_hwrap = 2
max_subgroups_hwrap = 3
# If a positional argument group contains more than this many arguments, then
# force it to a vertical layout.
@@ -94,7 +106,7 @@ with section("format"):
keyword_case = 'unchanged'
# A list of command names which should always be wrapped
always_wrap = []
always_wrap = ['install']
# If true, the argument lists which are known to be sortable will be sorted
# lexicographicall
+2
Bestand weergeven
@@ -41,3 +41,5 @@ esmi_ib_library/
!.clang-format
!.clang-tidy
!.clangd
!.cmake-format
!.pre-commit-config.yaml
@@ -17,6 +17,10 @@ repos:
hooks:
- id: clang-format-docker
- id: cpplint-docker
- repo: https://github.com/cheshirekow/cmake-format-precommit
rev: v0.6.13
hooks:
- id: cmake-format
# Below is a local way of running formatters and linters
# NOTE: clang-tidy is not used in the above tests
# - repo: https://github.com/pocc/pre-commit-hooks
+29 -45
Bestand weergeven
@@ -9,13 +9,9 @@ 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
ON
CACHE BOOL "Build shared library (.so) or not.")
set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared library (.so) or not.")
set(CMAKE_MODULE_PATH
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/"
CACHE INTERNAL "Default module path.")
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/" CACHE INTERNAL "Default module path.")
## Include common cmake modules
include(utils)
include(help_package)
@@ -36,7 +32,9 @@ set(${AMD_SMI_LIBS_TARGET}_VERSION_PATCH "${CPACK_PACKAGE_VERSION_PATCH}")
set(${AMD_SMI_LIBS_TARGET}_VERSION_BUILD "0")
set(${AMD_SMI_LIBS_TARGET}_VERSION_HASH "${PKG_VERSION_HASH}")
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}")
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}"
)
# Make proper version for appending
# Default Value is 99999
@@ -46,7 +44,8 @@ if(DEFINED ENV{ROCM_LIBPATCH_VERSION})
endif()
#Prepare final version for the CPACK use
set(CPACK_PACKAGE_VERSION
"${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}.${ROCM_VERSION_FOR_PACKAGE}")
"${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}.${ROCM_VERSION_FOR_PACKAGE}"
)
# The following default version values should be updated as appropriate for
# ABI breaks (update MAJOR and MINOR), and ABI/API additions (update MINOR).
@@ -57,9 +56,7 @@ set(PKG_VERSION_MINOR "${CPACK_PACKAGE_VERSION_MINOR}")
set(PKG_VERSION_PATCH "${CPACK_PACKAGE_VERSION_PATCH}")
set(PKG_VERSION_NUM_COMMIT 0)
set(AMD_SMI_PACKAGE
amd-smi-lib
CACHE STRING "")
set(AMD_SMI_PACKAGE amd-smi-lib CACHE STRING "")
project(${AMD_SMI_LIBS_TARGET})
set(CMAKE_CXX_STANDARD 17)
@@ -84,24 +81,17 @@ cmake_dependent_option(ENABLE_LDCONFIG "Set library links and caches using ldcon
set(SHARE_INSTALL_PREFIX "${CMAKE_INSTALL_DATAROOTDIR}/${AMD_SMI}" CACHE STRING "Tests and Example install directory")
# Packaging directives
set(CPACK_PACKAGE_NAME
${AMD_SMI_PACKAGE}
CACHE STRING "")
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 "")
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")
if (${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64")
set(CMAKE_CXX_FLAGS
"${CMAKE_CXX_FLAGS} -m64 -msse -msse2")
if(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64 -msse -msse2")
endif()
# Security options
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wconversion -Wcast-align")
@@ -119,7 +109,8 @@ if(ENABLE_ESMI_LIB)
if(NOT EXISTS ${PROJECT_SOURCE_DIR}/esmi_ib_library/src)
# TODO: use ExternalProject_Add instead or a submodule
message(STATUS "Adding esmi_ib_library...")
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)
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)
else()
message(STATUS "esmi_ib_library already installed, checking version...")
@@ -128,22 +119,19 @@ if(ENABLE_ESMI_LIB)
COMMAND git rev-list --tags --max-count=1
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/esmi_ib_library
OUTPUT_VARIABLE latest_commit
OUTPUT_STRIP_TRAILING_WHITESPACE
)
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND git describe --tags ${latest_commit} --match "*pkg*"
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/esmi_ib_library
OUTPUT_VARIABLE latest_esmi_tag
OUTPUT_STRIP_TRAILING_WHITESPACE
)
OUTPUT_STRIP_TRAILING_WHITESPACE)
# Update to latest tags if not matched
if(NOT latest_esmi_tag STREQUAL current_esmi_tag)
message(STATUS "Updating esmi_ib_library...")
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_temp
RESULT_VARIABLE clone_result
)
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)
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)
@@ -187,10 +175,10 @@ set(CMN_SRC_LIST
"${ROCM_SRC_DIR}/rocm_smi_binary_parser.cc")
if(ENABLE_ESMI_LIB)
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)
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)
endif()
set(CMN_INC_LIST
@@ -235,7 +223,6 @@ if(BUILD_EXAMPLES)
add_subdirectory("example")
endif()
include(CMakePackageConfigHelpers)
configure_package_config_file(
@@ -243,11 +230,8 @@ configure_package_config_file(
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
VERSION
"${CPACK_PACKAGE_VERSION}"
COMPATIBILITY SameMajorVersion)
write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/amd_smi-config-version.cmake
VERSION "${CPACK_PACKAGE_VERSION}" COMPATIBILITY SameMajorVersion)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/amd_smi-config.cmake ${CMAKE_CURRENT_BINARY_DIR}/amd_smi-config-version.cmake
@@ -333,7 +317,7 @@ set(CPACK_RPM_ASAN_PACKAGE_REQUIRES ${CPACK_RPM_PACKAGE_REQUIRES})
set(CPACK_RPM_SPEC_MORE_DEFINE "%define _python_bytecompile_errors_terminate_build 0")
# 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
string( APPEND CPACK_RPM_SPEC_MORE_DEFINE "\n%undefine __brp_mangle_shebangs")
string(APPEND CPACK_RPM_SPEC_MORE_DEFINE "\n%undefine __brp_mangle_shebangs")
# Add rocm-core dependency if -DROCM_DEP_ROCMCORE=ON is passed
if(ROCM_DEP_ROCMCORE)
@@ -355,10 +339,10 @@ set(CPACK_RPM_DEV_PACKAGE_NAME "${AMD_SMI_PACKAGE}")
set(CPACK_RPM_TESTS_PACKAGE_NAME "${AMD_SMI_PACKAGE}-tests")
set(CPACK_RPM_ASAN_PACKAGE_NAME "${AMD_SMI_PACKAGE}-asan")
if(ENABLE_ASAN_PACKAGING)
# ASAN Package requires only asan component with libraries and license file
set(CPACK_COMPONENTS_ALL asan)
# ASAN Package requires only asan component with libraries and license file
set(CPACK_COMPONENTS_ALL asan)
else()
set(CPACK_COMPONENTS_ALL dev tests )
set(CPACK_COMPONENTS_ALL dev tests)
endif()
# The line below doesn't currently work; it may be this issue:
@@ -7,13 +7,12 @@
@PACKAGE_INIT@
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(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@")
# Our library dependencies (contains definitions for IMPORTED targets)
if(NOT TARGET amd_smi AND NOT amd_smi_BINARY_DIR)
@@ -4,9 +4,7 @@ message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
# Set CLI Build Directory
set(PY_PACKAGE_DIR "amdsmi_cli")
set(PY_CLI_INSTALL_DIR
"${CMAKE_INSTALL_LIBEXECDIR}" CACHE STRING
"CLI tool installation directory")
set(PY_CLI_INSTALL_DIR "${CMAKE_INSTALL_LIBEXECDIR}" CACHE STRING "CLI tool installation directory")
# populate version string
configure_file(_version.py.in ${PY_PACKAGE_DIR}/_version.py @ONLY)
@@ -73,8 +71,7 @@ add_custom_target(
DEPENDS amdsmi_cli
BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/bin/amd-smi
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E create_symlink
../${PY_CLI_INSTALL_DIR}/${PY_PACKAGE_DIR}/amdsmi_cli.py
COMMAND ${CMAKE_COMMAND} -E create_symlink ../${PY_CLI_INSTALL_DIR}/${PY_PACKAGE_DIR}/amdsmi_cli.py
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/amd-smi)
install(
@@ -5,9 +5,7 @@ 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.")
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()
@@ -56,8 +54,7 @@ function(generic_package)
## Security breach mitigation flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFORTIFY_SOURCE=2 -fstack-protector-all -Wcast-align" PARENT_SCOPE)
## More security breach mitigation flags
set(HARDENING_LDFLAGS
"${HARDENING_LDFLAGS} -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now")
set(HARDENING_LDFLAGS "${HARDENING_LDFLAGS} -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${HARDENING_LDFLAGS}" PARENT_SCOPE)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${HARDENING_LDFLAGS}" PARENT_SCOPE)
@@ -77,34 +74,25 @@ function(generic_package)
# 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"
CACHE STRING "")
set(CPACK_RPM_PACKAGE_LICENSE
"MIT"
CACHE STRING "")
set(CPACK_GENERATOR
"DEB;RPM"
CACHE STRING "Default packaging generators.")
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" 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)
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})
@@ -22,85 +22,86 @@
## Parses the VERSION_STRING variable and places
## the first, second and third number values in
## the major, minor and patch variables.
function( parse_version VERSION_STRING )
function(parse_version VERSION_STRING)
string ( FIND ${VERSION_STRING} "-" STRING_INDEX )
string(FIND ${VERSION_STRING} "-" STRING_INDEX)
if ( ${STRING_INDEX} GREATER -1 )
math ( EXPR STRING_INDEX "${STRING_INDEX} + 1" )
string ( SUBSTRING ${VERSION_STRING} ${STRING_INDEX} -1 VERSION_BUILD )
endif ()
if(${STRING_INDEX} GREATER -1)
math(EXPR STRING_INDEX "${STRING_INDEX} + 1")
string(SUBSTRING ${VERSION_STRING} ${STRING_INDEX} -1 VERSION_BUILD)
endif()
string ( REGEX MATCHALL "[0-9]+" VERSIONS ${VERSION_STRING} )
list ( LENGTH VERSIONS VERSION_COUNT )
string(REGEX MATCHALL "[0-9]+" VERSIONS ${VERSION_STRING})
list(LENGTH VERSIONS VERSION_COUNT)
if ( ${VERSION_COUNT} GREATER 0)
list ( GET VERSIONS 0 MAJOR )
set ( VERSION_MAJOR ${MAJOR} PARENT_SCOPE )
set ( TEMP_VERSION_STRING "${MAJOR}" )
endif ()
if(${VERSION_COUNT} GREATER 0)
list(GET VERSIONS 0 MAJOR)
set(VERSION_MAJOR ${MAJOR} PARENT_SCOPE)
set(TEMP_VERSION_STRING "${MAJOR}")
endif()
if ( ${VERSION_COUNT} GREATER 1 )
list ( GET VERSIONS 1 MINOR )
set ( VERSION_MINOR ${MINOR} PARENT_SCOPE )
set ( TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${MINOR}" )
endif ()
if(${VERSION_COUNT} GREATER 1)
list(GET VERSIONS 1 MINOR)
set(VERSION_MINOR ${MINOR} PARENT_SCOPE)
set(TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${MINOR}")
endif()
if ( ${VERSION_COUNT} GREATER 2 )
list ( GET VERSIONS 2 PATCH )
set ( VERSION_PATCH ${PATCH} PARENT_SCOPE )
set ( TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${PATCH}" )
endif ()
if(${VERSION_COUNT} GREATER 2)
list(GET VERSIONS 2 PATCH)
set(VERSION_PATCH ${PATCH} PARENT_SCOPE)
set(TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${PATCH}")
endif()
set ( VERSION_STRING "${TEMP_VERSION_STRING}" PARENT_SCOPE )
set(VERSION_STRING "${TEMP_VERSION_STRING}" PARENT_SCOPE)
endfunction ()
endfunction()
## Gets the current version of the repository
## using versioning tags and git describe.
## Passes back a packaging version string
## and a library version string.
function(get_version_from_tag DEFAULT_VERSION_STRING VERSION_PREFIX GIT)
parse_version ( ${DEFAULT_VERSION_STRING} )
parse_version(${DEFAULT_VERSION_STRING})
if ( GIT )
execute_process ( COMMAND git describe --tags --dirty --long --match ${VERSION_PREFIX}-[0-9.]*
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_TAG_STRING
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE RESULT )
if ( ${RESULT} EQUAL 0 )
parse_version ( ${GIT_TAG_STRING} )
endif ()
if(GIT)
execute_process(
COMMAND git describe --tags --dirty --long --match ${VERSION_PREFIX}-[0-9.]*
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_TAG_STRING
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE RESULT)
if(${RESULT} EQUAL 0)
parse_version(${GIT_TAG_STRING})
endif()
endif ()
endif()
set( VERSION_STRING "${VERSION_STRING}" PARENT_SCOPE )
set( VERSION_MAJOR "${VERSION_MAJOR}" PARENT_SCOPE )
set( VERSION_MINOR "${VERSION_MINOR}" PARENT_SCOPE )
set( VERSION_PATCH "${VERSION_PATCH}" PARENT_SCOPE )
set(VERSION_STRING "${VERSION_STRING}" PARENT_SCOPE)
set(VERSION_MAJOR "${VERSION_MAJOR}" PARENT_SCOPE)
set(VERSION_MINOR "${VERSION_MINOR}" PARENT_SCOPE)
set(VERSION_PATCH "${VERSION_PATCH}" PARENT_SCOPE)
endfunction()
function(num_change_since_prev_pkg VERSION_PREFIX)
find_program(get_commits NAMES version_util.sh
PATHS ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules)
if (get_commits)
execute_process( COMMAND ${get_commits} -c ${VERSION_PREFIX}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE NUM_COMMITS
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE RESULT )
find_program(get_commits NAMES version_util.sh PATHS ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules)
if(get_commits)
execute_process(
COMMAND ${get_commits} -c ${VERSION_PREFIX}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE NUM_COMMITS
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE RESULT)
set(NUM_COMMITS "${NUM_COMMITS}" PARENT_SCOPE )
set(NUM_COMMITS "${NUM_COMMITS}" PARENT_SCOPE)
if ( ${RESULT} EQUAL 0 )
message("${NUM_COMMITS} were found since previous release")
if(${RESULT} EQUAL 0)
message("${NUM_COMMITS} were found since previous release")
else()
message("Unable to determine number of commits since previous release")
message("Unable to determine number of commits since previous release")
endif()
else()
message("WARNING: Didn't find version_util.sh")
set(NUM_COMMITS "unknown" PARENT_SCOPE )
set(NUM_COMMITS "unknown" PARENT_SCOPE)
endif()
endfunction()
@@ -108,7 +109,7 @@ function(get_package_version_number DEFAULT_VERSION_STRING VERSION_PREFIX GIT)
get_version_from_tag(${DEFAULT_VERSION_STRING} ${VERSION_PREFIX} GIT)
num_change_since_prev_pkg(${VERSION_PREFIX})
set(PKG_VERSION_STR "${VERSION_STRING}.${NUM_COMMITS}")
if (DEFINED ENV{ROCM_BUILD_ID})
if(DEFINED ENV{ROCM_BUILD_ID})
set(VERSION_ID $ENV{ROCM_BUILD_ID})
else()
set(VERSION_ID "local-build-0")
@@ -116,25 +117,25 @@ function(get_package_version_number DEFAULT_VERSION_STRING VERSION_PREFIX GIT)
set(PKG_VERSION_STR "${PKG_VERSION_STR}-${VERSION_ID}")
if (GIT)
execute_process(COMMAND git rev-parse --short HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE VERSION_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE RESULT )
if( ${RESULT} EQUAL 0 )
if(GIT)
execute_process(
COMMAND git rev-parse --short HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE VERSION_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE RESULT)
if(${RESULT} EQUAL 0)
# Check for dirty workspace.
execute_process(COMMAND git diff --quiet
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE RESULT )
execute_process(COMMAND git diff --quiet WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE RESULT)
if(${RESULT} EQUAL 1)
set(VERSION_HASH "${VERSION_HASH}-dirty")
endif()
else()
set( VERSION_HASH "unknown" )
set(VERSION_HASH "unknown")
endif()
else()
set( VERSION_HASH "unknown" )
set(VERSION_HASH "unknown")
endif()
set(PKG_VERSION_STR "${PKG_VERSION_STR}-${VERSION_HASH}")
set(PKG_VERSION_STR ${PKG_VERSION_STR} PARENT_SCOPE)
+3 -13
Bestand weergeven
@@ -32,25 +32,15 @@ else()
endif()
# add package search paths
set(CMAKE_PREFIX_PATH
${CMAKE_PREFIX_PATH}
${ROCM_DIR}
../../../
)
set(CMAKE_LIBRARY_PATH
${CMAKE_LIBRARY_PATH}
${ROCM_DIR}/lib
${ROCM_DIR}/lib64
)
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${ROCM_DIR} ../../../)
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${ROCM_DIR}/lib ${ROCM_DIR}/lib64)
find_package(amd_smi
CONFIG REQUIRED)
find_package(amd_smi CONFIG REQUIRED)
message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
message(" Finished Cmake Example ")
message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
# 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")
@@ -13,10 +13,10 @@ message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
set(AMDSMI_DIR "" CACHE PATH "path to amdsmi installation")
if(ENABLE_DEBUG_LEVEL)
add_definitions(-DENABLE_DEBUG_LEVEL=${ENABLE_DEBUG_LEVEL})
message("**** Enabling Debug Level=${ENABLE_DEBUG_LEVEL} ****")
add_definitions(-DENABLE_DEBUG_LEVEL=${ENABLE_DEBUG_LEVEL})
message("**** Enabling Debug Level=${ENABLE_DEBUG_LEVEL} ****")
else()
add_definitions(-DENABLE_DEBUG_LEVEL=0)
add_definitions(-DENABLE_DEBUG_LEVEL=0)
endif()
set(GOAMDSMI_SHIM "goamdsmi_shim")
@@ -43,21 +43,20 @@ message("SOVERSION: ${SO_VERSION_STRING}")
project(${GOAMDSMI_SHIM_TARGET})
if (NOT DEFINED CPACK_PACKAGE_VENDOR)
if(NOT DEFINED CPACK_PACKAGE_VENDOR)
set(CPACK_PACKAGE_VENDOR "AMD")
endif()
if (NOT DEFINED CPACK_PACKAGE_CONTACT)
if(NOT DEFINED CPACK_PACKAGE_CONTACT)
set(CPACK_PACKAGE_CONTACT "Advanced Micro Devices Inc.")
endif()
if (NOT DEFINED CPACK_PACKAGE_DESCRIPTION_SUMMARY)
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
"AMD CGO wrapper")
if(NOT DEFINED CPACK_PACKAGE_DESCRIPTION_SUMMARY)
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "AMD CGO wrapper")
endif()
if (NOT GOAMDSMI_SHIM_PACKAGE)
set(GOAMDSMI_SHIM_PACKAGE goamdsmi_shim_lib64)
if(NOT GOAMDSMI_SHIM_PACKAGE)
set(GOAMDSMI_SHIM_PACKAGE goamdsmi_shim_lib64)
endif()
set(CPACK_PACKAGE_FILE_NAME "${GOAMDSMI_SHIM_PACKAGE}-${SO_VERSION_STRING}")
@@ -68,11 +67,11 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -msse2 -std=c++11 ")
# Use this instead of above for 32 bit
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
if ("${CMAKE_BUILD_TYPE}" STREQUAL Release)
if("${CMAKE_BUILD_TYPE}" STREQUAL Release)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
else ()
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb -O0 -DDEBUG")
endif ()
endif()
set(go_amd_smi_headers)
@@ -80,17 +79,13 @@ set(go_amd_smi_sources)
set(go_amd_smi_includes)
add_subdirectory(smiwrapper)
list(APPEND go_amd_smi_headers smiwrapper/goamdsmi.h ${go_amd_smi_headers})
list(APPEND go_amd_smi_headers smiwrapper/amdsmi_go_shim.h ${go_amd_smi_headers})
list(APPEND go_amd_smi_sources smiwrapper/amdsmi_go_shim.c)
list(APPEND go_amd_smi_includes ${CMAKE_CURRENT_SOURCE_DIR}/smiwrapper)
add_library(${GOAMDSMI_SHIM_TARGET} SHARED
${go_amd_smi_sources}
${go_amd_smi_headers}
${go_amd_smi_includes})
add_library(${GOAMDSMI_SHIM_TARGET} SHARED ${go_amd_smi_sources} ${go_amd_smi_headers} ${go_amd_smi_includes})
target_link_libraries(${GOAMDSMI_SHIM_TARGET} pthread rt m)
@@ -99,27 +94,22 @@ target_link_libraries(${GOAMDSMI_SHIM_TARGET} -L${AMDSMI_DIR}/lib)
target_link_libraries(${GOAMDSMI_SHIM_TARGET} -L${AMDSMI_DIR}/lib64)
## Set the VERSION and SOVERSION values
set_property(TARGET ${GOAMDSMI_SHIM_TARGET} PROPERTY
SOVERSION "${VERSION_MAJOR}")
set_property(TARGET ${GOAMDSMI_SHIM_TARGET} PROPERTY
VERSION "${SO_VERSION_STRING}")
set_property(TARGET ${GOAMDSMI_SHIM_TARGET} PROPERTY SOVERSION "${VERSION_MAJOR}")
set_property(TARGET ${GOAMDSMI_SHIM_TARGET} PROPERTY VERSION "${SO_VERSION_STRING}")
## If the library is a release, strip the target library
if ("${CMAKE_BUILD_TYPE}" STREQUAL Release)
add_custom_command(
TARGET ${GOAMDSMI_SHIM_TARGET}
POST_BUILD COMMAND ${CMAKE_STRIP} lib${GOAMDSMI_SHIM_TARGET}.so)
endif ()
if("${CMAKE_BUILD_TYPE}" STREQUAL Release)
add_custom_command(TARGET ${GOAMDSMI_SHIM_TARGET} POST_BUILD COMMAND ${CMAKE_STRIP} lib${GOAMDSMI_SHIM_TARGET}.so)
endif()
set(go_amd_smi_install_headers
smiwrapper/goamdsmi.h
smiwrapper/amdsmi_go_shim.h
)
set(go_amd_smi_install_headers smiwrapper/goamdsmi.h smiwrapper/amdsmi_go_shim.h)
## Add the install directives for the runtime library.
install(TARGETS ${GOAMDSMI_SHIM_TARGET}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${GOAMDSMI_SHIM_COMPONENT})
install(FILES ${go_amd_smi_install_headers}
DESTINATION include)
install(
TARGETS ${GOAMDSMI_SHIM_TARGET}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${GOAMDSMI_SHIM_COMPONENT})
install(
FILES ${go_amd_smi_install_headers}
DESTINATION include)
include_directories(${go_amd_smi_includes})
@@ -1,21 +1,14 @@
# SPDX-License-Identifier: MIT
# Copyright (c) 2024, Advanced Micro Devices, Inc.
set(go_amd_smi_headers
${CMAKE_CURRENT_SOURCE_DIR}/goamdsmi.h
${CMAKE_CURRENT_SOURCE_DIR}/amdsmi_go_shim.h
CACHE INTERNAL "")
set(go_amd_smi_sources
${CMAKE_CURRENT_SOURCE_DIR}/amdsmi_go_shim.c
set(go_amd_smi_headers ${CMAKE_CURRENT_SOURCE_DIR}/goamdsmi.h ${CMAKE_CURRENT_SOURCE_DIR}/amdsmi_go_shim.h
CACHE INTERNAL "")
set(go_amd_smi_sources ${CMAKE_CURRENT_SOURCE_DIR}/amdsmi_go_shim.c CACHE INTERNAL "")
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${go_amd_smi_amdsmi_includes})
add_library(go_amd_smi_ OBJECT
${go_amd_smi_sources}
${go_amd_smi_headers})
add_library(go_amd_smi_ OBJECT ${go_amd_smi_sources} ${go_amd_smi_headers})
### Shared libraries need PIC
set_property(TARGET ${go_amd_smi_} PROPERTY POSITION_INDEPENDENT_CODE 1)
@@ -20,7 +20,7 @@ if(BUILD_WRAPPER)
find_program(clang NAMES clang REQUIRED)
# extract clang version manually because find_package(clang) doesn't work
execute_process(COMMAND ${clang} --version OUTPUT_VARIABLE clang_full_version_string)
string (REGEX REPLACE ".*clang version ([0-9]+\\.[0-9]+).*" "\\1" CLANG_VERSION_STRING ${clang_full_version_string})
string(REGEX REPLACE ".*clang version ([0-9]+\\.[0-9]+).*" "\\1" CLANG_VERSION_STRING ${clang_full_version_string})
if((CLANG_VERSION_STRING VERSION_GREATER clang_ver) OR (CLANG_VERSION_STRING VERSION_EQUAL clang_ver))
message("GOOD CLANG VERSION: ${CLANG_VERSION_STRING}")
set(GOOD_CLANG_FOUND TRUE)
@@ -31,37 +31,33 @@ endif()
if(NOT GOOD_CLANG_FOUND)
# keep old wrapper because no clang found
message(AUTHOR_WARNING "A wrapper will not be re-generated! Using old wrapper instead.\nSet -DBUILD_WRAPPER=ON to re-build the wrapper")
message(
AUTHOR_WARNING
"A wrapper will not be re-generated! Using old wrapper instead.\nSet -DBUILD_WRAPPER=ON to re-build the wrapper"
)
add_custom_command(
OUTPUT amdsmi_wrapper.py
${PY_PACKAGE_DIR}/amdsmi_wrapper.py
DEPENDS ${AMD_SMI}
${CMAKE_CURRENT_SOURCE_DIR}/amdsmi_wrapper.py
OUTPUT amdsmi_wrapper.py ${PY_PACKAGE_DIR}/amdsmi_wrapper.py
DEPENDS ${AMD_SMI} ${CMAKE_CURRENT_SOURCE_DIR}/amdsmi_wrapper.py
COMMAND mkdir -p ${PY_PACKAGE_DIR}
COMMAND ln -Pf ${CMAKE_CURRENT_SOURCE_DIR}/amdsmi_wrapper.py ${PY_PACKAGE_DIR}/)
else()
find_package(Python3 3.6 COMPONENTS Interpreter Development REQUIRED)
# --break-system-packages is needed for python 3.11
# see: https://peps.python.org/pep-0668/
if (NOT Python3_VERSION VERSION_LESS "3.11")
if(NOT Python3_VERSION VERSION_LESS "3.11")
set(Python3_BREAK_SYSTEM_PACKAGES "--break-system-packages")
endif()
add_custom_target(
python_pre_reqs
COMMAND ${Python3_EXECUTABLE} -m pip install ${Python3_BREAK_SYSTEM_PACKAGES} ctypeslib2==${ctypeslib_ver_py})
add_custom_target(python_pre_reqs COMMAND ${Python3_EXECUTABLE} -m pip install ${Python3_BREAK_SYSTEM_PACKAGES}
ctypeslib2==${ctypeslib_ver_py})
# generate new wrapper
configure_file(${PROJECT_SOURCE_DIR}/tools/generator.py generator.py @ONLY COPYONLY)
add_custom_command(
OUTPUT amdsmi.h
${CMAKE_CURRENT_SOURCE_DIR}/amdsmi_wrapper.py
amdsmi_wrapper.py
OUTPUT amdsmi.h ${CMAKE_CURRENT_SOURCE_DIR}/amdsmi_wrapper.py amdsmi_wrapper.py
${PY_PACKAGE_DIR}/amdsmi_wrapper.py
DEPENDS ${AMD_SMI}
python_pre_reqs
generator.py
${PROJECT_SOURCE_DIR}/include/amd_smi/amdsmi.h
DEPENDS ${AMD_SMI} python_pre_reqs generator.py ${PROJECT_SOURCE_DIR}/include/amd_smi/amdsmi.h
COMMAND cp ${PROJECT_SOURCE_DIR}/include/amd_smi/amdsmi.h ./
COMMAND ${Python3_EXECUTABLE} generator.py "$<$<BOOL:${ENABLE_ESMI_LIB}>:-e -DENABLE_ESMI_LIB>" -i amdsmi.h -l ${PROJECT_BINARY_DIR}/src/libamd_smi.so -o ${CMAKE_CURRENT_SOURCE_DIR}/amdsmi_wrapper.py
COMMAND ${Python3_EXECUTABLE} generator.py "$<$<BOOL:${ENABLE_ESMI_LIB}>:-e -DENABLE_ESMI_LIB>" -i amdsmi.h -l
${PROJECT_BINARY_DIR}/src/libamd_smi.so -o ${CMAKE_CURRENT_SOURCE_DIR}/amdsmi_wrapper.py
COMMAND mkdir -p ${PY_PACKAGE_DIR}
COMMAND ln -Pf ${CMAKE_CURRENT_SOURCE_DIR}/amdsmi_wrapper.py ${PY_PACKAGE_DIR}/)
endif()
@@ -71,33 +67,22 @@ configure_file(pyproject.toml.in ${PY_BUILD_DIR}/pyproject.toml @ONLY)
configure_file(_version.py.in ${PY_PACKAGE_DIR}/_version.py @ONLY)
configure_file(setup.py.in ${PY_BUILD_DIR}/setup.py @ONLY)
add_custom_target(
python_wrapper
DEPENDS amdsmi_wrapper.py)
add_custom_target(python_wrapper DEPENDS amdsmi_wrapper.py)
# hard-linking instead of copying avoids unnecessarry regeneration of packaged files
add_custom_command(
OUTPUT ${PY_PACKAGE_DIR}/__init__.py
${PY_PACKAGE_DIR}/amdsmi_exception.py
${PY_PACKAGE_DIR}/amdsmi_interface.py
${PY_PACKAGE_DIR}/README.md
${PY_PACKAGE_DIR}/LICENSE
OUTPUT ${PY_PACKAGE_DIR}/__init__.py ${PY_PACKAGE_DIR}/amdsmi_exception.py ${PY_PACKAGE_DIR}/amdsmi_interface.py
${PY_PACKAGE_DIR}/README.md ${PY_PACKAGE_DIR}/LICENSE
DEPENDS python_wrapper
COMMAND ln -Pf ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py ${PY_PACKAGE_DIR}/
COMMAND ln -Pf ${CMAKE_CURRENT_SOURCE_DIR}/amdsmi_exception.py ${PY_PACKAGE_DIR}/
COMMAND ln -Pf ${CMAKE_CURRENT_SOURCE_DIR}/amdsmi_interface.py ${PY_PACKAGE_DIR}/
COMMAND ln -Pf ${CMAKE_CURRENT_SOURCE_DIR}/README.md ${PY_PACKAGE_DIR}/
COMMAND ln -Pf ${PROJECT_SOURCE_DIR}/LICENSE ${PY_PACKAGE_DIR}/
)
COMMAND ln -Pf ${PROJECT_SOURCE_DIR}/LICENSE ${PY_PACKAGE_DIR}/)
# copy libamd_smi.so to allow for a self-contained python package
add_custom_command(
OUTPUT ${PY_PACKAGE_DIR}/libamd_smi.so
DEPENDS ${PROJECT_BINARY_DIR}/src/libamd_smi.so
COMMAND cp
"${PROJECT_BINARY_DIR}/src/libamd_smi.so"
${PY_PACKAGE_DIR}/
)
add_custom_command(OUTPUT ${PY_PACKAGE_DIR}/libamd_smi.so DEPENDS ${PROJECT_BINARY_DIR}/src/libamd_smi.so
COMMAND cp "${PROJECT_BINARY_DIR}/src/libamd_smi.so" ${PY_PACKAGE_DIR}/)
add_custom_target(
python_package ALL
@@ -109,14 +94,11 @@ add_custom_target(
${PY_PACKAGE_DIR}/amdsmi_interface.py
${PY_PACKAGE_DIR}/README.md
${PY_PACKAGE_DIR}/LICENSE
${PY_PACKAGE_DIR}/libamd_smi.so
)
${PY_PACKAGE_DIR}/libamd_smi.so)
install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/${PY_BUILD_DIR}/pyproject.toml
${CMAKE_CURRENT_BINARY_DIR}/${PY_BUILD_DIR}/setup.py
${CMAKE_CURRENT_BINARY_DIR}/${PY_PACKAGE_DIR}/_version.py
FILES ${CMAKE_CURRENT_BINARY_DIR}/${PY_BUILD_DIR}/pyproject.toml
${CMAKE_CURRENT_BINARY_DIR}/${PY_BUILD_DIR}/setup.py ${CMAKE_CURRENT_BINARY_DIR}/${PY_PACKAGE_DIR}/_version.py
DESTINATION ${PY_WRAPPER_INSTALL_DIR}
COMPONENT dev)
@@ -32,7 +32,7 @@ if(${ROCM_PATCH_VERSION})
set(SO_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
else()
set(SO_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}")
endif ()
endif()
set(${ROCM_SMI}_VERSION_MAJOR "${CPACK_PACKAGE_VERSION_MAJOR}")
set(${ROCM_SMI}_VERSION_MINOR "${CPACK_PACKAGE_VERSION_MINOR}")
set(${ROCM_SMI}_VERSION_PATCH "${CPACK_PACKAGE_VERSION_PATCH}")
@@ -60,9 +60,7 @@ set_property(TARGET ${ROCM_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 ${ROCM_SMI_TARGET}
POST_BUILD
COMMAND ${CMAKE_STRIP} lib${ROCM_SMI_TARGET}.so.${SO_VERSION_STRING})
add_custom_command(TARGET ${ROCM_SMI_TARGET} POST_BUILD COMMAND ${CMAKE_STRIP}
lib${ROCM_SMI_TARGET}.so.${SO_VERSION_STRING})
endif()
endif()
@@ -34,7 +34,8 @@ add_custom_command(
COMMAND ${CMAKE_COMMAND} -E make_directory ${RUST_PACKAGE_SROUCE_DIR}
COMMAND ${CMAKE_COMMAND} -E make_directory ${RUST_PACKAGE_SROUCE_DIR}/include/amd_smi
COMMAND ${CMAKE_COMMAND} -E make_directory ${RUST_PACKAGE_SROUCE_DIR}/lib
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/include/amd_smi/amdsmi.h ${RUST_PACKAGE_SROUCE_DIR}/include/amd_smi/
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/include/amd_smi/amdsmi.h
${RUST_PACKAGE_SROUCE_DIR}/include/amd_smi/
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/src/libamd_smi.so ${RUST_PACKAGE_SROUCE_DIR}/lib/
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/build.rs ${RUST_PACKAGE_SROUCE_DIR}/
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/callbacks.rs ${RUST_PACKAGE_SROUCE_DIR}/
@@ -42,30 +43,26 @@ add_custom_command(
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/README.md ${RUST_PACKAGE_SROUCE_DIR}/
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/src ${RUST_PACKAGE_SROUCE_DIR}/src
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/examples ${RUST_PACKAGE_SROUCE_DIR}/examples
COMMAND ${CMAKE_COMMAND} -E tar cfz ${CMAKE_CURRENT_BINARY_DIR}/source.tar.gz --format=gnutar ${RUST_PACKAGE_SROUCE_DIR}
COMMAND ${CMAKE_COMMAND} -E tar cfz ${CMAKE_CURRENT_BINARY_DIR}/source.tar.gz --format=gnutar
${RUST_PACKAGE_SROUCE_DIR}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${AMD_SMI}
${CMAKE_CURRENT_SOURCE_DIR}/build.rs
${CMAKE_CURRENT_SOURCE_DIR}/callbacks.rs
${CMAKE_CURRENT_SOURCE_DIR}/Cargo.toml
${CMAKE_CURRENT_SOURCE_DIR}/README.md
${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_SOURCE_DIR}/examples
COMMENT "Creating AMD SMI Rust wrapper source tar.gz archive"
)
${CMAKE_CURRENT_SOURCE_DIR}/build.rs
${CMAKE_CURRENT_SOURCE_DIR}/callbacks.rs
${CMAKE_CURRENT_SOURCE_DIR}/Cargo.toml
${CMAKE_CURRENT_SOURCE_DIR}/README.md
${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_SOURCE_DIR}/examples
COMMENT "Creating AMD SMI Rust wrapper source tar.gz archive")
add_custom_target(amdsmi_rust_source ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/source.tar.gz
)
add_custom_target(amdsmi_rust_source ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/source.tar.gz)
find_program(CARGO_EXECUTABLE NAMES cargo)
if(NOT CARGO_EXECUTABLE)
message(STATUS "Cargo not found. Installing Rust and Cargo...")
execute_process(
COMMAND /bin/sh -c "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y"
RESULT_VARIABLE result
)
execute_process(COMMAND /bin/sh -c "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y"
RESULT_VARIABLE result)
if(result)
message(FATAL_ERROR "Failed to install Rust and Cargo.")
@@ -79,36 +76,33 @@ endif()
set(CARGO_BUILD_COMMAND ${CARGO_EXECUTABLE} build ${CARGO_BUILD_TYPE_ARG} --target-dir ${RUST_BUILD_DIR})
# Use make amdsmi_rust to build the library
add_custom_target(amdsmi_rust
COMMAND ${CMAKE_COMMAND} -E env ${AMDSMI_GENERATE_RUST_WRAPPER} AMDSMI_LIB_DIR=${PROJECT_BINARY_DIR}/src ${CARGO_BUILD_COMMAND}
add_custom_target(
amdsmi_rust
COMMAND ${CMAKE_COMMAND} -E env ${AMDSMI_GENERATE_RUST_WRAPPER} AMDSMI_LIB_DIR=${PROJECT_BINARY_DIR}/src
${CARGO_BUILD_COMMAND}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS ${AMD_SMI}
COMMENT "Build the AMD SMI Rust library"
)
COMMENT "Build the AMD SMI Rust library")
if(BUILD_RUST_EXAMPLES)
# Determine the build command for examples if enabled
set(CARGO_BUILD_EXAMPLES_COMMAND ${CARGO_EXECUTABLE} build ${CARGO_BUILD_TYPE_ARG} --target-dir ${RUST_BUILD_DIR} --examples)
set(CARGO_BUILD_EXAMPLES_COMMAND ${CARGO_EXECUTABLE} build ${CARGO_BUILD_TYPE_ARG} --target-dir ${RUST_BUILD_DIR}
--examples)
# Define the build command for the Rust examples
add_custom_command(
OUTPUT ${RUST_OUTPUT_DIR}/examples/amdsmi_get_gpu_info
${RUST_OUTPUT_DIR}/examples/amdsmi_exporter
OUTPUT ${RUST_OUTPUT_DIR}/examples/amdsmi_get_gpu_info ${RUST_OUTPUT_DIR}/examples/amdsmi_exporter
COMMAND ${CMAKE_COMMAND} -E env AMDSMI_LIB_DIR=${PROJECT_BINARY_DIR}/src ${CARGO_BUILD_COMMAND}
COMMAND ${CMAKE_COMMAND} -E env AMDSMI_LIB_DIR=${PROJECT_BINARY_DIR}/src ${CARGO_BUILD_EXAMPLES_COMMAND}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Building AMD SMI Rust examples"
)
add_custom_target(rust_examples ALL
DEPENDS ${RUST_BUILD_DIR}/${CARGO_BUILD_TYPE}/examples/amdsmi_get_gpu_info
${RUST_OUTPUT_DIR}/examples/amdsmi_exporter
)
COMMENT "Building AMD SMI Rust examples")
add_custom_target(rust_examples ALL DEPENDS ${RUST_BUILD_DIR}/${CARGO_BUILD_TYPE}/examples/amdsmi_get_gpu_info
${RUST_OUTPUT_DIR}/examples/amdsmi_exporter)
endif()
# Deploy the Rust interface with source code only, as using static or dynamic library binaries is not recommended by the Rust ecosystem.
install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/source.tar.gz
FILES ${CMAKE_CURRENT_BINARY_DIR}/source.tar.gz
DESTINATION ${RUST_WRAPPER_INSTALL_DIR}
COMPONENT dev)
@@ -116,9 +110,8 @@ install(
if(BUILD_RUST_EXAMPLES)
install(DIRECTORY DESTINATION ${RUST_WRAPPER_INSTALL_DIR}/examples COMPONENT dev)
install(
FILES ${RUST_OUTPUT_DIR}/examples/amdsmi_get_gpu_info
${RUST_OUTPUT_DIR}/examples/amdsmi_exporter
FILES ${RUST_OUTPUT_DIR}/examples/amdsmi_get_gpu_info ${RUST_OUTPUT_DIR}/examples/amdsmi_exporter
DESTINATION ${RUST_WRAPPER_INSTALL_DIR}/examples
PERMISSIONS OWNER_EXECUTE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
COMPONENT dev)
endif()
endif()
+9 -11
Bestand weergeven
@@ -47,16 +47,17 @@ set(INC_LIST
"${PROJECT_SOURCE_DIR}/rocm_smi/include/rocm_smi/rocm_smi_utils.h")
if(ENABLE_ESMI_LIB)
list(APPEND INC_LIST ${ESMI_INC_DIR}/e_smi/e_smi.h)
list(APPEND INC_LIST ${ESMI_INC_DIR}/e_smi/e_smi_monitor.h)
list(APPEND INC_LIST ${ESMI_INC_DIR}/e_smi/e_smi_utils.h)
list(APPEND INC_LIST ${ESMI_INC_DIR}/e_smi/e_smi.h)
list(APPEND INC_LIST ${ESMI_INC_DIR}/e_smi/e_smi_monitor.h)
list(APPEND INC_LIST ${ESMI_INC_DIR}/e_smi/e_smi_utils.h)
endif()
# 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("${${AMD_SMI_LIBS_TARGET}_VERSION_MAJOR}.${${AMD_SMI_LIBS_TARGET}_VERSION_MINOR}.0.0" ${SO_VERSION_GIT_TAG_PREFIX} GIT)
get_version_from_tag("${${AMD_SMI_LIBS_TARGET}_VERSION_MAJOR}.${${AMD_SMI_LIBS_TARGET}_VERSION_MINOR}.0.0"
${SO_VERSION_GIT_TAG_PREFIX} GIT)
# VERSION_* variables should be set by get_version_from_tag
if(${ROCM_PATCH_VERSION})
@@ -92,10 +93,8 @@ 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})
add_custom_command(TARGET ${AMD_SMI_TARGET} POST_BUILD COMMAND ${CMAKE_STRIP}
lib${AMD_SMI_TARGET}.so.${SO_VERSION_STRING})
endif()
endif()
@@ -112,12 +111,11 @@ install(
TARGETS ${AMD_SMI_TARGET}
EXPORT amd_smiTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT dev)
#COMPONENT ${AMD_SMI_COMPONENT})
#COMPONENT ${AMD_SMI_COMPONENT})
install(
TARGETS ${AMD_SMI_TARGET}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
COMPONENT asan)
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT asan)
install(
FILES ${PROJECT_SOURCE_DIR}/include/amd_smi/amdsmi.h
@@ -3,16 +3,12 @@ option(INSTALL_GTEST "Install GTest (only useful if GTest is not already install
# Help tests find libraries at runtime
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--enable-new-dtags")
set(CMAKE_INSTALL_RPATH
"\$ORIGIN:\$ORIGIN/../../../lib"
set(CMAKE_INSTALL_RPATH "\$ORIGIN:\$ORIGIN/../../../lib"
CACHE STRING "RUNPATH for tests. Helps find libgtest.so and libamd_smi.so")
# Download and compile googletest
include(FetchContent)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG v1.14.0)
FetchContent_Declare(googletest GIT_REPOSITORY https://github.com/google/googletest.git GIT_TAG v1.14.0)
FetchContent_MakeAvailable(googletest)
enable_testing()
@@ -54,12 +50,7 @@ include_directories(${TEST} ${CMAKE_CURRENT_SOURCE_DIR}/.. ${ROCM_INC_DIR}/..)
# Build rules
add_executable(${TEST} ${tstSources} ${functionalSources})
target_link_libraries(${TEST}
${AMD_SMI_TARGET}
GTest::gtest_main
c
stdc++
pthread)
target_link_libraries(${TEST} ${AMD_SMI_TARGET} GTest::gtest_main c stdc++ pthread)
# Install tests
install(
@@ -73,6 +64,7 @@ install(
COMPONENT ${TESTS_COMPONENT})
# Install googletest libraries with tests
install(TARGETS gtest gtest_main
install(
TARGETS gtest gtest_main
DESTINATION ${SHARE_INSTALL_PREFIX}/tests
COMPONENT ${TESTS_COMPONENT})
@@ -20,9 +20,7 @@ install(
DIRECTORY ./
DESTINATION ${SHARE_INSTALL_PREFIX}/tests/python_unittest/
COMPONENT ${TESTS_COMPONENT}
USE_SOURCE_PERMISSIONS
FILES_MATCHING
PATTERN "*.py"
)
USE_SOURCE_PERMISSIONS FILES_MATCHING
PATTERN "*.py")
# message(FATAL_ERROR "python lib stop")
@@ -9,7 +9,7 @@ FILES=$(find . -type f \( -name "CMakeLists.txt" -o -name "*.cmake" -o -name "*.
-not -path "*/\.*" \
-not -path "*/build/*")
declare -a failed_files
failed_files=()
# Check if files are formatted correctly
for file in $FILES; do