@@ -140,6 +140,47 @@ message(STATUS "TransferBench version: ${VERSION_STRING}")
140140
141141project (TransferBench VERSION ${VERSION_STRING} LANGUAGES CXX )
142142
143+ # Git metadata: branch + short commit hash
144+ # Priority: git rev-parse > GIT_VERSION file (populated by packaging scripts) > "unknown"
145+ if (GIT_FOUND)
146+ execute_process (
147+ COMMAND "${GIT_EXECUTABLE} " rev-parse --abbrev-ref HEAD
148+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR } "
149+ OUTPUT_VARIABLE TB_GIT_BRANCH
150+ OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET
151+ RESULT_VARIABLE _tb_git_branch_result
152+ )
153+ execute_process (
154+ COMMAND "${GIT_EXECUTABLE} " rev-parse --short HEAD
155+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR } "
156+ OUTPUT_VARIABLE TB_GIT_COMMIT
157+ OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET
158+ RESULT_VARIABLE _tb_git_commit_result
159+ )
160+ endif ()
161+ if (NOT TB_GIT_BRANCH OR TB_GIT_BRANCH STREQUAL "" OR
162+ NOT TB_GIT_COMMIT OR TB_GIT_COMMIT STREQUAL "" )
163+ if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR } /GIT_VERSION" )
164+ file (STRINGS "${CMAKE_CURRENT_SOURCE_DIR } /GIT_VERSION" _tb_version_lines LIMIT_COUNT 2 )
165+ list (LENGTH _tb_version_lines _tb_version_line_count)
166+ if (_tb_version_line_count GREATER 0)
167+ list (GET _tb_version_lines 0 TB_GIT_BRANCH)
168+ else ()
169+ set (TB_GIT_BRANCH "unknown" )
170+ endif ()
171+ if (_tb_version_line_count GREATER 1)
172+ list (GET _tb_version_lines 1 TB_GIT_COMMIT)
173+ else ()
174+ set (TB_GIT_COMMIT "unknown" )
175+ endif ()
176+ else ()
177+ set (TB_GIT_BRANCH "unknown" )
178+ set (TB_GIT_COMMIT "unknown" )
179+ endif ()
180+ endif ()
181+ message (STATUS "TransferBench ${VERSION_STRING} (${TB_GIT_BRANCH} :${TB_GIT_COMMIT} )" )
182+
183+
143184if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES )
144185 message (STATUS "Setting build type to 'Release' as none was specified." )
145186 set (CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build." FORCE )
@@ -497,6 +538,11 @@ if(POD_COMM_FOUND)
497538 target_compile_definitions (TransferBench PRIVATE POD_COMM_ENABLED )
498539endif ()
499540
541+ target_compile_definitions (TransferBench PRIVATE
542+ TB_GIT_BRANCH= "${TB_GIT_BRANCH} "
543+ TB_GIT_COMMIT= "${TB_GIT_COMMIT} "
544+ )
545+
500546check_cxx_compiler_flag (-parallel-jobs=12 HAVE_PARALLEL_JOBS )
501547if (HAVE_PARALLEL_JOBS)
502548 message (STATUS "Enabling parallel compile jobs: -parallel-jobs=12" )
@@ -635,6 +681,17 @@ if(BUILD_RELOCATABLE_PACKAGE)
635681 set (CPACK_ARCHIVE_FILE_NAME "${_tb_archive_name} " )
636682 set (CPACK_PACKAGE_FILE_NAME "${_tb_archive_name} " )
637683
684+ if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.20" )
685+ configure_file (
686+ cmake/WriteGitVersion.cmake.in
687+ ${CMAKE_BINARY_DIR } /WriteGitVersion.cmake
688+ @ONLY
689+ )
690+ set (CPACK_PRE_BUILD_SCRIPTS "${CMAKE_BINARY_DIR } /WriteGitVersion.cmake" )
691+ elseif (NOT TB_GIT_BRANCH STREQUAL "unknown" )
692+ file (WRITE "${CMAKE_CURRENT_SOURCE_DIR } /GIT_VERSION" "${TB_GIT_BRANCH} \n ${TB_GIT_COMMIT} \n " )
693+ endif ()
694+
638695 set (CPACK_GENERATOR "DEB;RPM;TGZ" )
639696 include (CPack )
640697else ()
@@ -650,6 +707,17 @@ else()
650707 set (PACKAGE_NAME TB)
651708 set (LIBRARY_NAME TransferBench)
652709
710+ if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.20" )
711+ configure_file (
712+ cmake/WriteGitVersion.cmake.in
713+ ${CMAKE_BINARY_DIR } /WriteGitVersion.cmake
714+ @ONLY
715+ )
716+ set (CPACK_PRE_BUILD_SCRIPTS "${CMAKE_BINARY_DIR } /WriteGitVersion.cmake" )
717+ elseif (NOT TB_GIT_BRANCH STREQUAL "unknown" )
718+ file (WRITE "${CMAKE_CURRENT_SOURCE_DIR } /GIT_VERSION" "${TB_GIT_BRANCH} \n ${TB_GIT_COMMIT} \n " )
719+ endif ()
720+
653721 rocm_create_package (
654722 NAME ${LIBRARY_NAME}
655723 DESCRIPTION "TransferBench package"
0 commit comments