Skip to content
68 changes: 68 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,47 @@ message(STATUS "TransferBench version: ${VERSION_STRING}")

project(TransferBench VERSION ${VERSION_STRING} LANGUAGES CXX)

# Git metadata: branch + short commit hash
# Priority: git rev-parse > GIT_VERSION file (populated by packaging scripts) > "unknown"
if(GIT_FOUND)
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE TB_GIT_BRANCH
Comment thread
nileshnegi marked this conversation as resolved.
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET
RESULT_VARIABLE _tb_git_branch_result
)
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
Comment on lines +147 to +155
OUTPUT_VARIABLE TB_GIT_COMMIT
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET
RESULT_VARIABLE _tb_git_commit_result
)
endif()
if(NOT TB_GIT_BRANCH OR TB_GIT_BRANCH STREQUAL "" OR
NOT TB_GIT_COMMIT OR TB_GIT_COMMIT STREQUAL "")
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/GIT_VERSION")
file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/GIT_VERSION" _tb_version_lines LIMIT_COUNT 2)
list(LENGTH _tb_version_lines _tb_version_line_count)
Comment thread
nileshnegi marked this conversation as resolved.
if(_tb_version_line_count GREATER 0)
list(GET _tb_version_lines 0 TB_GIT_BRANCH)
else()
set(TB_GIT_BRANCH "unknown")
endif()
if(_tb_version_line_count GREATER 1)
list(GET _tb_version_lines 1 TB_GIT_COMMIT)
else()
set(TB_GIT_COMMIT "unknown")
endif()
else()
set(TB_GIT_BRANCH "unknown")
set(TB_GIT_COMMIT "unknown")
endif()
endif()
message(STATUS "TransferBench ${VERSION_STRING} (${TB_GIT_BRANCH}:${TB_GIT_COMMIT})")


if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to 'Release' as none was specified.")
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build." FORCE)
Expand Down Expand Up @@ -497,6 +538,11 @@ if(POD_COMM_FOUND)
target_compile_definitions(TransferBench PRIVATE POD_COMM_ENABLED)
endif()

target_compile_definitions(TransferBench PRIVATE
TB_GIT_BRANCH="${TB_GIT_BRANCH}"
TB_GIT_COMMIT="${TB_GIT_COMMIT}"
Comment thread
nileshnegi marked this conversation as resolved.
)

check_cxx_compiler_flag(-parallel-jobs=12 HAVE_PARALLEL_JOBS)
if(HAVE_PARALLEL_JOBS)
message(STATUS "Enabling parallel compile jobs: -parallel-jobs=12")
Expand Down Expand Up @@ -635,6 +681,17 @@ if(BUILD_RELOCATABLE_PACKAGE)
set(CPACK_ARCHIVE_FILE_NAME "${_tb_archive_name}")
set(CPACK_PACKAGE_FILE_NAME "${_tb_archive_name}")

if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.20")
configure_file(
cmake/WriteGitVersion.cmake.in
${CMAKE_BINARY_DIR}/WriteGitVersion.cmake
@ONLY
)
set(CPACK_PRE_BUILD_SCRIPTS "${CMAKE_BINARY_DIR}/WriteGitVersion.cmake")
elseif(NOT TB_GIT_BRANCH STREQUAL "unknown")
file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/GIT_VERSION" "${TB_GIT_BRANCH}\n${TB_GIT_COMMIT}\n")
endif()
Comment thread
nileshnegi marked this conversation as resolved.
Comment on lines +691 to +693

set(CPACK_GENERATOR "DEB;RPM;TGZ")
include(CPack)
else()
Expand All @@ -650,6 +707,17 @@ else()
set(PACKAGE_NAME TB)
set(LIBRARY_NAME TransferBench)

if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.20")
configure_file(
cmake/WriteGitVersion.cmake.in
${CMAKE_BINARY_DIR}/WriteGitVersion.cmake
@ONLY
)
set(CPACK_PRE_BUILD_SCRIPTS "${CMAKE_BINARY_DIR}/WriteGitVersion.cmake")
elseif(NOT TB_GIT_BRANCH STREQUAL "unknown")
file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/GIT_VERSION" "${TB_GIT_BRANCH}\n${TB_GIT_COMMIT}\n")
endif()

rocm_create_package(
NAME ${LIBRARY_NAME}
DESCRIPTION "TransferBench package"
Expand Down
2 changes: 2 additions & 0 deletions GIT_VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
unknown
unknown
7 changes: 7 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,13 @@ ifeq ($(filter clean,$(MAKECMDGOALS)),)
endif
endif
endif

# Git metadata (branch + short commit hash)
# Priority: git rev-parse > GIT_VERSION file (populated by packaging scripts) > "unknown"
_TB_DIR := $(dir $(abspath $(firstword $(MAKEFILE_LIST))))
TB_GIT_BRANCH := $(shell git -C "$(_TB_DIR)" rev-parse --abbrev-ref HEAD 2>/dev/null || sed -n '1p' "$(_TB_DIR)GIT_VERSION" 2>/dev/null || echo unknown)
TB_GIT_COMMIT := $(shell git -C "$(_TB_DIR)" rev-parse --short HEAD 2>/dev/null || sed -n '2p' "$(_TB_DIR)GIT_VERSION" 2>/dev/null || echo unknown)
COMMON_FLAGS += -DTB_GIT_BRANCH='"$(TB_GIT_BRANCH)"' -DTB_GIT_COMMIT='"$(TB_GIT_COMMIT)"'
endif

.PHONY : all clean
Expand Down
4 changes: 4 additions & 0 deletions cmake/WriteGitVersion.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Generated by CMakeLists.txt at configure time — do not edit.
# CPack runs this via CPACK_PRE_BUILD_SCRIPTS before creating the package,
# so source tarballs built without .git still carry the correct version info.
file(WRITE "@CMAKE_CURRENT_SOURCE_DIR@/GIT_VERSION" "@TB_GIT_BRANCH@\n@TB_GIT_COMMIT@\n")
8 changes: 7 additions & 1 deletion src/client/Client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,13 @@ void DisplayVersion()
case COMM_MPI: multiNodeMode = " (Multi-node via MPI)"; break;
}

Print("TransferBench v%s.%s%s%s\n", VERSION, CLIENT_VERSION, support.c_str(), multiNodeMode.c_str());
#ifndef TB_GIT_BRANCH
#define TB_GIT_BRANCH "unknown"
#endif
#ifndef TB_GIT_COMMIT
#define TB_GIT_COMMIT "unknown"
#endif
Print("TransferBench v%s.%s (%s:%s)%s%s\n", VERSION, CLIENT_VERSION, TB_GIT_BRANCH, TB_GIT_COMMIT, support.c_str(), multiNodeMode.c_str());
Print("=============================================================================================================\n");
}

Expand Down
Loading