diff --git a/projects/rocm-smi-lib/CMakeLists.txt b/projects/rocm-smi-lib/CMakeLists.txt index cccf8c135c..9c500ad913 100755 --- a/projects/rocm-smi-lib/CMakeLists.txt +++ b/projects/rocm-smi-lib/CMakeLists.txt @@ -18,29 +18,32 @@ set(ROCM_SMI_TARGET "${ROCM_SMI}64") # ABI breaks (update MAJOR and MINOR), and ABI/API additions (update MINOR). # Until ABI stabilizes VERSION_MAJOR will be 0. This should be over-ridden # by git tags (through "git describe") when they are present. -set(ROCM_SMI_LIB_VERSION_MAJOR 0) -set(ROCM_SMI_LIB_VERSION_MINOR 2) +set(PKG_VERSION_MAJOR 1) +set(PKG_VERSION_MINOR 0) +set(PKG_VERSION_PATCH 0) +set(PKG_VERSION_NUM_COMMIT 0) ################# Determine the library version ######################### ## Setup the package version based on git tags. -set(LIB_SO_VERSION_STR - "${ROCM_SMI_LIB_VERSION_MAJOR}.${ROCM_SMI_LIB_VERSION_MINOR}.0") -get_version(${LIB_SO_VERSION_STR} "rsmi") +set(PKG_VERSION_GIT_TAG_PREFIX "rsmi_pkg_ver") -# VERSION_* variables should be set by get_version -set(LIB_SO_VERSION_STR ${VERSION_STRING}) -set(${ROCM_SMI}_VERSION_MAJOR "${VERSION_MAJOR}") -set(${ROCM_SMI}_VERSION_MINOR "${VERSION_MINOR}") -set(${ROCM_SMI}_VERSION_PATCH "${VERSION_PATCH}") -set(${ROCM_SMI}_VERSION_BUILD "${VERSION_BUILD}") +get_current_version("1.0.0" ${PKG_VERSION_GIT_TAG_PREFIX}) +num_change_since_prev_pkg(${PKG_VERSION_GIT_TAG_PREFIX}) +# VERSION_* variables should be set by get_current_version +set(PKG_VERSION_STR "${VERSION_STRING}.${NUM_COMMITS}") +message("Package version: ${PKG_VERSION_STR}") # Debian package specific variables # Set a default value for the package version -set(VERSION_STRING "1.0.0") -get_version(${VERSION_STRING} "roc") +get_current_version("1.0.0.0" "rsmi_so_ver") -# VERSION_* variables should be set by get_version -set(BUILD_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") +# VERSION_* variables should be set by get_current_version +set(SO_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}") +set(${ROCM_SMI}_VERSION_MAJOR "${VERSION_MAJOR}") +set(${ROCM_SMI}_VERSION_MINOR "${VERSION_MINOR}") +set(${ROCM_SMI}_VERSION_PATCH "0") +set(${ROCM_SMI}_VERSION_BUILD "0") +message("SOVERSION: ${SO_VERSION_STRING}") project(${ROCM_SMI_TARGET}) @@ -62,7 +65,7 @@ set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "ROCm System Management Interface library") endif() -set(CPACK_PACKAGE_FILE_NAME "rocm_smi_lib64-${BUILD_VERSION_STRING}") +set(CPACK_PACKAGE_FILE_NAME "rocm_smi_lib64-${PKG_VERSION_STR}") ## Verbose output. set(CMAKE_VERBOSE_MAKEFILE on) @@ -111,11 +114,12 @@ target_link_libraries(${SMI_EXAMPLE_EXE} ${ROCM_SMI_TARGET}) add_library(${ROCM_SMI_TARGET} SHARED ${SMI_SRC_LIST} ${SMI_INC_LIST}) target_link_libraries(${ROCM_SMI_TARGET} pthread rt) + ## Set the VERSION and SOVERSION values -set_property(TARGET ${ROCM_SMI_TARGET} - PROPERTY VERSION "${LIB_SO_VERSION_STR}") -set_property(TARGET ${ROCM_SMI_TARGET} - PROPERTY SOVERSION "${ROCM_SMI_LIB_VERSION_MAJOR}") +set_property(TARGET ${ROCM_SMI_TARGET} PROPERTY + SOVERSION "${VERSION_MAJOR}") +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) diff --git a/projects/rocm-smi-lib/cmake_modules/utils.cmake b/projects/rocm-smi-lib/cmake_modules/utils.cmake index 0dca487fca..7bf5af87fd 100755 --- a/projects/rocm-smi-lib/cmake_modules/utils.cmake +++ b/projects/rocm-smi-lib/cmake_modules/utils.cmake @@ -73,10 +73,6 @@ function( parse_version VERSION_STRING ) set ( TEMP_VERSION_STRING "${TEMP_VERSION_STRING}.${PATCH}" ) endif () - if ( DEFINED VERSION_BUILD ) - set ( VERSION_BUILD "${VERSION_BUILD}" PARENT_SCOPE ) - endif () - set ( VERSION_STRING "${TEMP_VERSION_STRING}" PARENT_SCOPE ) endfunction () @@ -85,7 +81,7 @@ endfunction () ## using versioning tags and git describe. ## Passes back a packaging version string ## and a library version string. -function(get_version DEFAULT_VERSION_STRING VERSION_PREFIX) +function(get_current_version DEFAULT_VERSION_STRING VERSION_PREFIX) parse_version ( ${DEFAULT_VERSION_STRING} ) @@ -109,7 +105,28 @@ function(get_version DEFAULT_VERSION_STRING VERSION_PREFIX) 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_BUILD "${VERSION_BUILD}" 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 ) + + set(NUM_COMMITS "${NUM_COMMITS}" PARENT_SCOPE ) + + if ( ${RESULT} EQUAL 0 ) + message("${NUM_COMMITS} were found since previous release") + else() + 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 ) + endif() +endfunction() diff --git a/projects/rocm-smi-lib/cmake_modules/version_util.sh b/projects/rocm-smi-lib/cmake_modules/version_util.sh new file mode 100755 index 0000000000..eb49576fcf --- /dev/null +++ b/projects/rocm-smi-lib/cmake_modules/version_util.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# Handle commandline args +while [ "$1" != "" ]; do + case $1 in + -c ) # Commits since prevous tag + TARGET="count" ;; + * ) + TARGET="count" + break ;; + esac + shift 1 +done +TAG_PREFIX=$1 +reg_ex="${TAG_PREFIX}*" + +commits_since_last_tag() { + TAG_ARR=(`git tag --sort=committerdate -l ${reg_ex} | tail -2`) + PREVIOUS_TAG=${TAG_ARR[0]} + CURRENT_TAG=${TAG_ARR[1]} + + PREV_CMT_NUM=`git rev-list --count $PREVIOUS_TAG` + CURR_CMT_NUM=`git rev-list --count $CURRENT_TAG` + + # Commits since prevous tag: + let NUM_COMMITS="${CURR_CMT_NUM}-${PREV_CMT_NUM}" + echo $NUM_COMMITS +} + +case $TARGET in + count) commits_since_last_tag ;; + *) die "Invalid target $target" ;; +esac + +exit 0 +