diff --git a/CMake/GetGitInfo.cmake b/CMake/GetGitInfo.cmake new file mode 100644 index 000000000..bba1a0b5c --- /dev/null +++ b/CMake/GetGitInfo.cmake @@ -0,0 +1,29 @@ +# sets GIT_COMMIT and GIT_DIRTY CMake variables +function(get_git_info) + find_program(GIT_EXECUTABLE git) + + unset(TD_GIT_COMMIT PARENT_SCOPE) + unset(TD_GIT_DIRTY PARENT_SCOPE) + + execute_process( + COMMAND "${GIT_EXECUTABLE}" rev-parse HEAD + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + OUTPUT_VARIABLE GIT_COMMIT + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + + if (NOT GIT_COMMIT) + return() + endif() + + set(TD_GIT_COMMIT "${GIT_COMMIT}" PARENT_SCOPE) + + execute_process( + COMMAND "${GIT_EXECUTABLE}" diff-index --quiet HEAD + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE GIT_DIRTY_RESULT + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + + if (GIT_DIRTY_RESULT) + set(TD_GIT_DIRTY "true" PARENT_SCOPE) + endif() +endfunction() diff --git a/CMakeLists.txt b/CMakeLists.txt index eaee9977b..2a833689a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -152,6 +152,11 @@ if (CLANG OR GCC) endif() endif() +if (NOT DEFINED TD_GIT_COMMIT) + include(GetGitInfo) + get_git_info() +endif() + add_subdirectory(tdtl) add_subdirectory(tdutils) @@ -744,22 +749,6 @@ set(MEMPROF_STAT_SOURCE memprof/memprof_stat.h ) -#RULES - -file(MAKE_DIRECTORY auto) - -if (CMAKE_HOST_WIN32) - set(GIT_COMMIT_CMD powershell -ExecutionPolicy ByPass ./gen_git_commit_h.ps1) -else() - set(GIT_COMMIT_CMD ./gen_git_commit_h.sh) -endif() - -add_custom_target(git_commit ALL - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - COMMAND ${GIT_COMMIT_CMD} - COMMENT "Generate git_commit.h" -) - #LIBRARIES # memprof - simple library for memory usage profiling diff --git a/tdutils/CMakeLists.txt b/tdutils/CMakeLists.txt index c0d26b9ec..2aed70b52 100644 --- a/tdutils/CMakeLists.txt +++ b/tdutils/CMakeLists.txt @@ -100,6 +100,7 @@ set(TDUTILS_SOURCE td/utils/find_boundary.cpp td/utils/FlatHashTable.cpp td/utils/FloodControlGlobal.cpp + td/utils/GitInfo.cpp td/utils/Gzip.cpp td/utils/GzipByteFlow.cpp td/utils/Hints.cpp @@ -217,6 +218,7 @@ set(TDUTILS_SOURCE td/utils/FloodControlGlobal.h td/utils/FloodControlStrict.h td/utils/format.h + td/utils/GitInfo.h td/utils/Gzip.h td/utils/GzipByteFlow.h td/utils/Hash.h @@ -337,10 +339,16 @@ set(TDUTILS_TEST_SOURCE PARENT_SCOPE ) -#RULES #LIBRARIES add_library(tdutils STATIC ${TDUTILS_SOURCE}) +if (DEFINED TD_GIT_COMMIT) + set_property(SOURCE td/utils/GitInfo.cpp APPEND PROPERTY COMPILE_DEFINITIONS "GIT_COMMIT=\"${TD_GIT_COMMIT}\"") +endif() +if (DEFINED TD_GIT_DIRTY) + set_property(SOURCE td/utils/GitInfo.cpp APPEND PROPERTY COMPILE_DEFINITIONS "GIT_DIRTY=true") +endif() + if (NOT CMAKE_CROSSCOMPILING AND TDUTILS_MIME_TYPE) add_dependencies(tdutils tdmime_auto) endif() diff --git a/tdutils/td/utils/GitInfo.cpp b/tdutils/td/utils/GitInfo.cpp index f51c6294c..219778f63 100644 --- a/tdutils/td/utils/GitInfo.cpp +++ b/tdutils/td/utils/GitInfo.cpp @@ -6,8 +6,6 @@ // #include "td/utils/GitInfo.h" -#include "auto/git_info.h" - #if !defined(GIT_COMMIT) #define GIT_COMMIT "unknown" #endif