From f2a49073bbb2337f73a53347eacba3cd7abb900c Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Tue, 2 Apr 2024 19:45:17 +0300 Subject: [PATCH] Query git and set XASH_BUILD_COMMIT and XASH_BUILD_BRANCH macros --- CMakeLists.txt | 18 ++++++++++++++++++ wscript | 6 +++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 15f8ba2d..e26d2c25 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -88,6 +88,24 @@ endif() # MAIN BUILD CODE \ ###################\ +execute_process(COMMAND "git" "describe" "--dirty" "--always" + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE) + +execute_process(COMMAND "git" "rev-parse" "--abbrev-ref" "HEAD" + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_BRANCH + OUTPUT_STRIP_TRAILING_WHITESPACE) + +if(GIT_VERSION) + add_definitions(-DXASH_BUILD_COMMIT="${GIT_VERSION}") +endif() + +if(GIT_BRANCH) + add_definitions(-DXASH_BUILD_BRANCH="${GIT_BRANCH}") +endif() + file(STRINGS "mod_options.txt" MOD_OPTIONS_STRINGS REGEX "^([A-Za-z0-9_-]+)=([A-Za-z0-9_-]+)\ \#\ (.*)$") foreach(LINE IN LISTS MOD_OPTIONS_STRINGS) # file() itself doesn't populate CMAKE_MATCH_, so diff --git a/wscript b/wscript index eae81555..41b6cb15 100644 --- a/wscript +++ b/wscript @@ -55,7 +55,11 @@ def configure(conf): if conf.env.COMPILER_CC == 'msvc': conf.load('msvc_pdb') - conf.load('msvs msdev subproject clang_compilation_database strip_on_install enforce_pic') + conf.load('msvs msdev subproject clang_compilation_database strip_on_install enforce_pic gitversion') + if conf.env.GIT_VERSION: + conf.define('XASH_BUILD_COMMIT', conf.env.GIT_VERSION) + if conf.env.GIT_BRANCH: + conf.define('XASH_BUILD_BRANCH', conf.env.GIT_BRANCH) enforce_pic = True # modern defaults conf.check_pic(enforce_pic)