From c6c01ee67566dae8add08ece602f8d6bf6e5d612 Mon Sep 17 00:00:00 2001 From: "Galantsev, Dmitrii" Date: Tue, 6 May 2025 05:40:18 +0000 Subject: [PATCH] CMAKE - Format with cmake-format Change-Id: I5b86b7b83e3d151c3d6e1c216ecb28f1313d538a Signed-off-by: Galantsev, Dmitrii [ROCm/amdsmi commit: 42c77a59121d80a36e9081bbe08ed7c9e4206a75] --- projects/amdsmi/.cmake-format | 20 ++- projects/amdsmi/.gitignore | 2 + projects/amdsmi/.pre-commit-config.yaml | 4 + projects/amdsmi/CMakeLists.txt | 74 ++++------ projects/amdsmi/amd_smi-config.cmake.in | 13 +- projects/amdsmi/amdsmi_cli/CMakeLists.txt | 7 +- .../amdsmi/cmake_modules/help_package.cmake | 50 +++---- projects/amdsmi/cmake_modules/utils.cmake | 133 +++++++++--------- projects/amdsmi/example/CMakeLists.txt | 16 +-- projects/amdsmi/goamdsmi_shim/CMakeLists.txt | 60 ++++---- .../goamdsmi_shim/smiwrapper/CMakeLists.txt | 15 +- projects/amdsmi/py-interface/CMakeLists.txt | 64 +++------ projects/amdsmi/rocm_smi/CMakeLists.txt | 8 +- projects/amdsmi/rust-interface/CMakeLists.txt | 63 ++++----- projects/amdsmi/src/CMakeLists.txt | 20 ++- .../amdsmi/tests/amd_smi_test/CMakeLists.txt | 18 +-- .../tests/python_unittest/CMakeLists.txt | 6 +- projects/amdsmi/tools/cmake_format.sh | 2 +- 18 files changed, 248 insertions(+), 327 deletions(-) diff --git a/projects/amdsmi/.cmake-format b/projects/amdsmi/.cmake-format index 53cb098076..8c0b3659ef 100644 --- a/projects/amdsmi/.cmake-format +++ b/projects/amdsmi/.cmake-format @@ -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 diff --git a/projects/amdsmi/.gitignore b/projects/amdsmi/.gitignore index 5b1ace20ed..7a0cc125c7 100644 --- a/projects/amdsmi/.gitignore +++ b/projects/amdsmi/.gitignore @@ -41,3 +41,5 @@ esmi_ib_library/ !.clang-format !.clang-tidy !.clangd +!.cmake-format +!.pre-commit-config.yaml diff --git a/projects/amdsmi/.pre-commit-config.yaml b/projects/amdsmi/.pre-commit-config.yaml index d84939508a..b206f091d4 100644 --- a/projects/amdsmi/.pre-commit-config.yaml +++ b/projects/amdsmi/.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 diff --git a/projects/amdsmi/CMakeLists.txt b/projects/amdsmi/CMakeLists.txt index 7401e3f9b6..db7ca0afa7 100644 --- a/projects/amdsmi/CMakeLists.txt +++ b/projects/amdsmi/CMakeLists.txt @@ -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 " - CACHE STRING "") -set(CPACK_PACKAGE_DESCRIPTION_SUMMARY - "AMD System Management libraries" - CACHE STRING "") +set(CPACK_PACKAGE_CONTACT "AMD-SMILib Support " 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: diff --git a/projects/amdsmi/amd_smi-config.cmake.in b/projects/amdsmi/amd_smi-config.cmake.in index ff8d903b45..ba12697633 100644 --- a/projects/amdsmi/amd_smi-config.cmake.in +++ b/projects/amdsmi/amd_smi-config.cmake.in @@ -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) diff --git a/projects/amdsmi/amdsmi_cli/CMakeLists.txt b/projects/amdsmi/amdsmi_cli/CMakeLists.txt index acdcaf0081..b324014ce8 100644 --- a/projects/amdsmi/amdsmi_cli/CMakeLists.txt +++ b/projects/amdsmi/amdsmi_cli/CMakeLists.txt @@ -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( diff --git a/projects/amdsmi/cmake_modules/help_package.cmake b/projects/amdsmi/cmake_modules/help_package.cmake index a6a217b47b..a857e04325 100644 --- a/projects/amdsmi/cmake_modules/help_package.cmake +++ b/projects/amdsmi/cmake_modules/help_package.cmake @@ -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}) diff --git a/projects/amdsmi/cmake_modules/utils.cmake b/projects/amdsmi/cmake_modules/utils.cmake index d76ad45480..e83f7bde3a 100644 --- a/projects/amdsmi/cmake_modules/utils.cmake +++ b/projects/amdsmi/cmake_modules/utils.cmake @@ -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) diff --git a/projects/amdsmi/example/CMakeLists.txt b/projects/amdsmi/example/CMakeLists.txt index b5322fea2a..00f3ea918a 100644 --- a/projects/amdsmi/example/CMakeLists.txt +++ b/projects/amdsmi/example/CMakeLists.txt @@ -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") diff --git a/projects/amdsmi/goamdsmi_shim/CMakeLists.txt b/projects/amdsmi/goamdsmi_shim/CMakeLists.txt index 5542c7621e..c0c864005c 100644 --- a/projects/amdsmi/goamdsmi_shim/CMakeLists.txt +++ b/projects/amdsmi/goamdsmi_shim/CMakeLists.txt @@ -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}) diff --git a/projects/amdsmi/goamdsmi_shim/smiwrapper/CMakeLists.txt b/projects/amdsmi/goamdsmi_shim/smiwrapper/CMakeLists.txt index 8274335abb..8681f1f72a 100644 --- a/projects/amdsmi/goamdsmi_shim/smiwrapper/CMakeLists.txt +++ b/projects/amdsmi/goamdsmi_shim/smiwrapper/CMakeLists.txt @@ -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) - diff --git a/projects/amdsmi/py-interface/CMakeLists.txt b/projects/amdsmi/py-interface/CMakeLists.txt index c3e4f5486e..6aaa50561f 100644 --- a/projects/amdsmi/py-interface/CMakeLists.txt +++ b/projects/amdsmi/py-interface/CMakeLists.txt @@ -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 "$<$:-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 "$<$:-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) diff --git a/projects/amdsmi/rocm_smi/CMakeLists.txt b/projects/amdsmi/rocm_smi/CMakeLists.txt index a7085a17a8..43f58e7e4c 100644 --- a/projects/amdsmi/rocm_smi/CMakeLists.txt +++ b/projects/amdsmi/rocm_smi/CMakeLists.txt @@ -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() diff --git a/projects/amdsmi/rust-interface/CMakeLists.txt b/projects/amdsmi/rust-interface/CMakeLists.txt index 3e87612c09..f38001d406 100644 --- a/projects/amdsmi/rust-interface/CMakeLists.txt +++ b/projects/amdsmi/rust-interface/CMakeLists.txt @@ -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() \ No newline at end of file +endif() diff --git a/projects/amdsmi/src/CMakeLists.txt b/projects/amdsmi/src/CMakeLists.txt index e54a54338d..3170e4f0d7 100644 --- a/projects/amdsmi/src/CMakeLists.txt +++ b/projects/amdsmi/src/CMakeLists.txt @@ -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 diff --git a/projects/amdsmi/tests/amd_smi_test/CMakeLists.txt b/projects/amdsmi/tests/amd_smi_test/CMakeLists.txt index 99e22e8a16..3918f6bfb1 100644 --- a/projects/amdsmi/tests/amd_smi_test/CMakeLists.txt +++ b/projects/amdsmi/tests/amd_smi_test/CMakeLists.txt @@ -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}) diff --git a/projects/amdsmi/tests/python_unittest/CMakeLists.txt b/projects/amdsmi/tests/python_unittest/CMakeLists.txt index 3669d2bddf..1935b952a7 100644 --- a/projects/amdsmi/tests/python_unittest/CMakeLists.txt +++ b/projects/amdsmi/tests/python_unittest/CMakeLists.txt @@ -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") diff --git a/projects/amdsmi/tools/cmake_format.sh b/projects/amdsmi/tools/cmake_format.sh index 0be3160fda..93a9bc6dc9 100755 --- a/projects/amdsmi/tools/cmake_format.sh +++ b/projects/amdsmi/tools/cmake_format.sh @@ -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