From fd1df0b328f449d4f391ef2b18ac714864c3b24f Mon Sep 17 00:00:00 2001 From: mq1n Date: Tue, 2 Sep 2025 20:25:54 +0300 Subject: [PATCH] add git derived version info --- CMakeLists.txt | 28 ++++++++++++++++++++++++++++ src/db/CMakeLists.txt | 2 ++ src/db/version.cpp | 6 +++++- src/game/CMakeLists.txt | 2 ++ src/game/version.cpp | 6 +++++- 5 files changed, 42 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a4e7dd6..a5135bd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,6 +36,34 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +# Derive a version string from git for the db target +find_package(Git QUIET) +if(GIT_FOUND) + execute_process( + COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_SOURCE_DIR} describe --always --dirty --tags + OUTPUT_VARIABLE GIT_DESCRIBE_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + ) +endif() + +if(NOT GIT_DESCRIBE_VERSION) + if(GIT_FOUND) + execute_process( + COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_SOURCE_DIR} rev-parse --short HEAD + OUTPUT_VARIABLE GIT_DESCRIBE_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + ) + else() + set(GIT_DESCRIBE_VERSION "unknown") + endif() +endif() + +if(NOT GIT_DESCRIBE_VERSION) + set(GIT_DESCRIBE_VERSION "unknown") +endif() + add_definitions(-DNOMINMAX) add_definitions(-DWIN32_LEAN_AND_MEAN) diff --git a/src/db/CMakeLists.txt b/src/db/CMakeLists.txt index cd7ee16..ac37748 100644 --- a/src/db/CMakeLists.txt +++ b/src/db/CMakeLists.txt @@ -2,6 +2,8 @@ add_executable(db ${DB_SOURCES}) +target_compile_definitions(db PRIVATE GIT_DESCRIBE="${GIT_DESCRIBE_VERSION}") + target_link_libraries(db common libgame diff --git a/src/db/version.cpp b/src/db/version.cpp index 9b5eab3..dc6bcff 100644 --- a/src/db/version.cpp +++ b/src/db/version.cpp @@ -1,6 +1,10 @@ #include #include +#ifndef GIT_DESCRIBE +#define GIT_DESCRIBE "unknown" +#endif + void WriteVersion() { #ifndef OS_WINDOWS @@ -8,7 +12,7 @@ void WriteVersion() if (NULL != fp) { - fprintf(fp, "db revision: %s\n", __P4_VERSION__); + fprintf(fp, "db revision: %s\n", GIT_DESCRIBE); //fprintf(fp, "%s@%s:%s\n", __USER__, __HOSTNAME__, __PWD__); fclose(fp); } diff --git a/src/game/CMakeLists.txt b/src/game/CMakeLists.txt index 53fac79..00ec51c 100644 --- a/src/game/CMakeLists.txt +++ b/src/game/CMakeLists.txt @@ -2,6 +2,8 @@ add_executable(game ${GAME_SOURCES}) +target_compile_definitions(game PRIVATE GIT_DESCRIBE="${GIT_DESCRIBE_VERSION}") + target_link_libraries(game common libgame diff --git a/src/game/version.cpp b/src/game/version.cpp index eb26bee..ebbcd09 100644 --- a/src/game/version.cpp +++ b/src/game/version.cpp @@ -1,5 +1,9 @@ #include +#ifndef GIT_DESCRIBE_VERSION +#define GIT_DESCRIBE_VERSION "unknown" +#endif + void WriteVersion() { #ifndef OS_WINDOWS @@ -7,7 +11,7 @@ void WriteVersion() if (fp) { - fprintf(fp, "game revision: 40250"); + fprintf(fp, "game revision: %s\n", GIT_DESCRIBE_VERSION); //fprintf(fp, "game revision: %s\n", __SVN_VERSION__); //fprintf(fp, "%s@%s:%s\n", __USER__, __HOSTNAME__, __PWD__); fclose(fp);