1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
|
Set the SOVERSION in CMake from MAJOR/MINOR/RELEASE variables instead of git info
Backports:
* https://github.com/ROCm/amdsmi/commit/ccfdb65b6ff873d74c610cc48b3b398002a16757
* https://github.com/ROCm/amdsmi/commit/925014ddafb3d6c18686613afd7ac817b548f1e6
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -43,6 +43,11 @@ find_program(GIT NAMES git)
## Setup the package version based on git tags.
set(PKG_VERSION_GIT_TAG_PREFIX "amdsmi_pkg_ver")
+get_version_from_file("include/amd_smi/amdsmi.h" "MAJOR")
+get_version_from_file("include/amd_smi/amdsmi.h" "MINOR")
+get_version_from_file("include/amd_smi/amdsmi.h" "RELEASE")
+set(DEFAULT_VERSION "${MAJOR}.${MINOR}.${RELEASE}")
+get_package_version_number(${DEFAULT_VERSION} ${PKG_VERSION_GIT_TAG_PREFIX} GIT)
get_package_version_number("26.0.2" ${PKG_VERSION_GIT_TAG_PREFIX} GIT)
message("Package version: ${PKG_VERSION_STR}")
set(${AMD_SMI_LIBS_TARGET}_VERSION_MAJOR "${CPACK_PACKAGE_VERSION_MAJOR}")
@@ -54,6 +59,11 @@ 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(DEFAULT_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
+update_version_in_file("include/amd_smi/amdsmi.h" ${DEFAULT_VERSION} "#define AMDSMI_LIB_VERSION_" " *" " ")
+update_version_in_file("rust-interface/src/amdsmi_wrapper.rs" ${DEFAULT_VERSION} "AMDSMI_LIB_VERSION_" " *: *u32 *= *"
+ ": u32 = ")
+
# Make proper version for appending
# Default Value is 99999
set(ROCM_VERSION_FOR_PACKAGE "99999")
--- a/cmake_modules/utils.cmake
+++ b/cmake_modules/utils.cmake
@@ -56,30 +56,87 @@ function(parse_version VERSION_STRING)
endfunction()
+function(get_version_from_file REL_FILE_PATH ITEM)
+ set(FILE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${REL_FILE_PATH}")
+ set(OUTPUT_ITEM "0")
+
+ if(EXISTS "${FILE_PATH}")
+ file(READ ${FILE_PATH} file_contents)
+ string(REGEX MATCHALL "AMDSMI_LIB_VERSION_${ITEM} *[0-9]+" OUTPUT_STR "${file_contents}")
+ list(LENGTH OUTPUT_STR OUTPUT_STR_LENGTH)
+ if(${OUTPUT_STR_LENGTH} GREATER 0)
+ string(REGEX MATCH "[0-9]+" OUTPUT_ITEM "${OUTPUT_STR}")
+ endif()
+ endif()
+
+ set(${ITEM} "${OUTPUT_ITEM}" PARENT_SCOPE)
+endfunction()
+
+# Parses file for a pattern and replaces the value
+# associated with that pattern with a specified value
+# Replaces VERSION(MAJOR.MINOR.RELEASE) with updated values
+function(update_version_in_file REL_FILE_PATH DEFAULT_VERSION PAT1 PAT2 PAT3)
+ get_version_from_file(${REL_FILE_PATH} "MAJOR")
+ get_version_from_file(${REL_FILE_PATH} "MINOR")
+ get_version_from_file(${REL_FILE_PATH} "RELEASE")
+ set(FILE_VERSION "${MAJOR}.${MINOR}.${RELEASE}")
+
+ if(DEFAULT_VERSION VERSION_GREATER FILE_VERSION)
+ set(FILE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${REL_FILE_PATH}")
+ if(EXISTS "${FILE_PATH}")
+ parse_version(${DEFAULT_VERSION})
+ file(READ ${FILE_PATH} file_contents_new)
+
+ string(REGEX REPLACE "${PAT1}MAJOR${PAT2} *[0-9]*" "${PAT1}MAJOR${PAT3}${VERSION_MAJOR}" file_contents
+ "${file_contents_new}")
+ string(REGEX REPLACE "${PAT1}MINOR${PAT2} *[0-9]*" "${PAT1}MINOR${PAT3}${VERSION_MINOR}" file_contents_new
+ "${file_contents}")
+ string(REGEX REPLACE "${PAT1}RELEASE${PAT2} *[0-9]*" "${PAT1}RELEASE${PAT3}${VERSION_PATCH}" file_contents
+ "${file_contents_new}")
+
+ file(WRITE ${FILE_PATH} "${file_contents}")
+ endif()
+ set(VERSION_STRING "${DEFAULT_VERSION}" PARENT_SCOPE)
+ else()
+ set(VERSION_STRING "${FILE_VERSION}" PARENT_SCOPE)
+ endif()
+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})
+ set(DEFAULT_VERSION_MAJOR "${VERSION_MAJOR}")
+ set(DEFAULT_VERSION_MINOR "${VERSION_MINOR}")
+ set(DEFAULT_VERSION_PATCH "${VERSION_PATCH}")
if(GIT)
execute_process(
- COMMAND git describe --tags --dirty --long --match ${VERSION_PREFIX}-[0-9.]*
+ COMMAND git tag --list --sort=-version:refname "${VERSION_PREFIX}*"
+ COMMAND head -n 1
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_TAG_STRING
- OUTPUT_STRIP_TRAILING_WHITESPACE
- RESULT_VARIABLE RESULT)
- if(${RESULT} EQUAL 0)
+ OUTPUT_STRIP_TRAILING_WHITESPACE RESULTS_VARIABLE RESULTS)
+ if(GIT_TAG_STRING)
+
parse_version(${GIT_TAG_STRING})
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)
+ if(VERSION_STRING VERSION_GREATER DEFAULT_VERSION_STRING)
+ 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)
+ else()
+ set(VERSION_STRING "${DEFAULT_VERSION_STRING}" PARENT_SCOPE)
+ set(VERSION_MAJOR "${DEFAULT_VERSION_MAJOR}" PARENT_SCOPE)
+ set(VERSION_MINOR "${DEFAULT_VERSION_MINOR}" PARENT_SCOPE)
+ set(VERSION_PATCH "${DEFAULT_VERSION_PATCH}" PARENT_SCOPE)
+ endif()
endfunction()
function(num_change_since_prev_pkg VERSION_PREFIX)
@@ -106,6 +163,7 @@ function(num_change_since_prev_pkg VERSION_PREFIX)
endfunction()
function(get_package_version_number DEFAULT_VERSION_STRING VERSION_PREFIX GIT)
+ parse_version(${DEFAULT_VERSION_STRING})
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}")
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -59,27 +59,9 @@ 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)
-
-# 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")
+set(SO_VERSION_STRING "${MAJOR}.${MINOR}.${RELEASE}")
message("SOVERSION: ${SO_VERSION_STRING}")
-# Create a configure file to get version info from within library
-configure_file("amd_smiConfig.in" "${PROJECT_SOURCE_DIR}/include/amd_smi/amd_smiConfig.h")
-
add_library(${AMD_SMI} ${SRC_LIST} ${INC_LIST})
target_link_libraries(${AMD_SMI} pthread rt dl ${DRM_LIBRARIES} ${AMDGPU_DRM_LIBRARIES})
target_include_directories(${AMD_SMI} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/rocm_smi/include
@@ -90,7 +72,7 @@ target_include_directories(${AMD_SMI} PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
## Set the VERSION and SOVERSION values
-set_property(TARGET ${AMD_SMI} PROPERTY SOVERSION "${VERSION_MAJOR}")
+set_property(TARGET ${AMD_SMI} PROPERTY SOVERSION "${MAJOR}")
set_property(TARGET ${AMD_SMI} PROPERTY VERSION "${SO_VERSION_STRING}")
## If the library is a release, strip the target library
@@ -115,6 +97,6 @@ install(
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/amd_smi
COMPONENT dev)
install(
- FILES ${PROJECT_SOURCE_DIR}/include/amd_smi/amd_smiConfig.h
+ FILES ${PROJECT_SOURCE_DIR}/rocm_smi/include/rocm_smi/kfd_ioctl.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/amd_smi
COMPONENT dev)
|