Files
TheRock/base/rocm-cmake/share/rocmcmakebuildtools/cmake/ROCMSetupVersion.cmake
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

173 lines
5.7 KiB
CMake

# ######################################################################################################################
# Copyright (C) 2017 Advanced Micro Devices, Inc.
# ######################################################################################################################
macro(rocm_set_parent VAR)
set(${VAR}
${ARGN}
PARENT_SCOPE)
set(${VAR} ${ARGN})
endmacro()
find_program(GIT NAMES git)
function(rocm_get_rev_count OUTPUT_COUNT)
set(options)
set(oneValueArgs DIRECTORY)
set(multiValueArgs REV)
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
set(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
if(PARSE_DIRECTORY)
set(DIRECTORY ${PARSE_DIRECTORY})
endif()
set(_count 0)
if(GIT)
execute_process(
COMMAND git rev-list --count ${PARSE_REV}
WORKING_DIRECTORY ${DIRECTORY}
OUTPUT_VARIABLE REV_COUNT
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE RESULT
ERROR_QUIET)
if(${RESULT} EQUAL 0)
set(_count ${REV_COUNT})
endif()
endif()
rocm_set_parent(${OUTPUT_COUNT} ${_count})
endfunction()
function(rocm_get_commit_count OUTPUT_COUNT)
set(options)
set(oneValueArgs PARENT DIRECTORY)
set(multiValueArgs)
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
set(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
if(PARSE_DIRECTORY)
set(DIRECTORY ${PARSE_DIRECTORY})
endif()
rocm_get_rev_count(
ALL_COUNT
DIRECTORY ${DIRECTORY}
REV HEAD)
set(_count ${ALL_COUNT})
if(PARSE_PARENT)
rocm_get_rev_count(
PARENT_COUNT
DIRECTORY ${DIRECTORY}
REV HEAD ^${PARSE_PARENT})
set(_count ${PARENT_COUNT})
endif()
rocm_set_parent(${OUTPUT_COUNT} ${_count})
endfunction()
function(rocm_get_build_info OUTPUT DELIM)
set(_info)
if(DEFINED ENV{ROCM_BUILD_ID})
set(_info ${_info}${DELIM}$ENV{ROCM_BUILD_ID})
endif()
rocm_set_parent(${OUTPUT} ${_info})
endfunction()
function(rocm_version_regex_parse REGEX OUTPUT_VARIABLE INPUT)
string(REGEX REPLACE ${REGEX} "\\1" OUTPUT "${INPUT}")
if("${OUTPUT}" STREQUAL "${INPUT}")
rocm_set_parent(${OUTPUT_VARIABLE} 0)
else()
rocm_set_parent(${OUTPUT_VARIABLE} ${OUTPUT})
endif()
endfunction()
function(rocm_get_git_commit_tag OUTPUT_VERSION)
set(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
if(GIT)
set(GIT_COMMAND ${GIT} describe --dirty --long --match [0-9]*)
execute_process(
COMMAND ${GIT_COMMAND}
WORKING_DIRECTORY ${DIRECTORY}
OUTPUT_VARIABLE GIT_TAG_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE RESULT
ERROR_QUIET)
if(${RESULT} EQUAL 0)
set(_output ${GIT_TAG_VERSION})
else()
execute_process(
COMMAND ${GIT_COMMAND} --always
WORKING_DIRECTORY ${DIRECTORY}
OUTPUT_VARIABLE GIT_TAG_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE RESULT
ERROR_QUIET)
if(${RESULT} EQUAL 0)
set(_output ${GIT_TAG_VERSION})
endif()
endif()
else()
set(_output "")
endif()
rocm_set_parent(${OUTPUT_VERSION} ${_output})
endfunction()
function(rocm_setup_version)
set(options NO_GIT_TAG_VERSION)
set(oneValueArgs VERSION PARENT)
set(multiValueArgs)
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if(PARSE_VERSION)
# Compensate for missing patch version
if(PARSE_VERSION MATCHES "^[0-9]+\\.[0-9]+$")
set(PARSE_VERSION ${PARSE_VERSION}.0)
endif()
rocm_set_parent(PROJECT_VERSION ${PARSE_VERSION})
rocm_set_parent(${PROJECT_NAME}_VERSION ${PROJECT_VERSION})
rocm_version_regex_parse("^([0-9]+).*" _version_MAJOR "${PROJECT_VERSION}")
rocm_version_regex_parse("^[0-9]+\\.([0-9]+).*" _version_MINOR "${PROJECT_VERSION}")
rocm_version_regex_parse("^[0-9]+\\.[0-9]+\\.([0-9]+).*" _version_PATCH "${PROJECT_VERSION}")
foreach(level MAJOR MINOR PATCH)
rocm_set_parent(${PROJECT_NAME}_VERSION_${level} ${_version_${level}})
rocm_set_parent(PROJECT_VERSION_${level} ${_version_${level}})
endforeach()
set(ROCM_GIT_TAG_HASH "")
if(NOT PARSE_NO_GIT_TAG_VERSION)
rocm_get_git_commit_tag(ROCM_GIT_TAG_HASH)
endif()
rocm_set_parent(PROJECT_VERSION_TWEAK ${ROCM_GIT_TAG_HASH})
rocm_set_parent(${PROJECT_NAME}_VERSION_TWEAK ${ROCM_GIT_TAG_HASH})
endif()
endfunction()
function(rocm_get_patch_version OUTPUT)
set(_patch "")
if(DEFINED ENV{ROCM_LIBPATCH_VERSION})
set(_patch $ENV{ROCM_LIBPATCH_VERSION})
endif()
rocm_set_parent(${OUTPUT} ${_patch})
endfunction()
function(rocm_set_soversion LIBRARY_TARGET SOVERSION)
if(NOT WIN32 AND NOT APPLE)
rocm_version_regex_parse("^([0-9]+).*" LIB_VERSION_MAJOR "${SOVERSION}")
rocm_version_regex_parse("^[0-9]+\\.(.*)" LIB_VERSION_MINOR "${SOVERSION}")
set(LIB_VERSION_STRING "${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}")
rocm_get_patch_version(LIB_VERSION_PATCH)
if(NOT ${LIB_VERSION_PATCH} EQUAL "")
set(LIB_VERSION_STRING "${LIB_VERSION_STRING}.${LIB_VERSION_PATCH}")
endif()
set_target_properties(${LIBRARY_TARGET} PROPERTIES SOVERSION ${LIB_VERSION_MAJOR})
set_target_properties(${LIBRARY_TARGET} PROPERTIES VERSION ${LIB_VERSION_STRING})
endif()
endfunction()