diff options
| author | ItsOhen <TNordfeldt@gmail.com> | 2025-10-24 20:13:38 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-24 19:13:38 +0100 |
| commit | 117e38db35a8bdd98f0210d41b83b4bb0e5e6a63 (patch) | |
| tree | e8f3df605538660ba1526c1c0328de69e32584fa | |
| parent | 151b5f69783b111831e8c5dc062904a221799d7b (diff) | |
cmake: fix git lookup for when building out of srcdir(#12116)
| -rw-r--r-- | CMakeLists.txt | 76 |
1 files changed, 50 insertions, 26 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 845f302a..62405bf2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -125,35 +125,59 @@ set(HYPRUTILS_VERSION "${hyprutils_dep_VERSION}") set(HYPRCURSOR_VERSION "${hyprcursor_dep_VERSION}") set(HYPRGRAPHICS_VERSION "${hyprgraphics_dep_VERSION}") + find_package(Git QUIET) -if(Git_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git") - execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD - OUTPUT_VARIABLE GIT_COMMIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${GIT_EXECUTABLE} branch --show-current - OUTPUT_VARIABLE GIT_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${GIT_EXECUTABLE} show -s --format=%s - OUTPUT_VARIABLE GIT_COMMIT_MESSAGE OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${GIT_EXECUTABLE} show -s --format=%cd --date=local - OUTPUT_VARIABLE GIT_COMMIT_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${GIT_EXECUTABLE} diff-index --quiet HEAD -- OUTPUT_STRIP_TRAILING_WHITESPACE - RESULT_VARIABLE GIT_DIRTY_RESULT) - if(NOT GIT_DIRTY_RESULT EQUAL 0) - set(GIT_DIRTY "dirty") + +set(GIT_COMMIT_HASH "unknown") +set(GIT_BRANCH "unknown") +set(GIT_COMMIT_MESSAGE "unknown") +set(GIT_COMMIT_DATE "unknown") +set(GIT_DIRTY "unknown") +set(GIT_TAG "unknown") +set(GIT_COMMITS "0") + +if(Git_FOUND) + execute_process( + COMMAND ${GIT_EXECUTABLE} rev-parse --show-toplevel + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_TOPLEVEL + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + RESULT_VARIABLE GIT_TOPLEVEL_RESULT + ) + + if(GIT_TOPLEVEL_RESULT EQUAL 0) + message(STATUS "Detected git repository root: ${GIT_TOPLEVEL}") + + execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD + WORKING_DIRECTORY ${GIT_TOPLEVEL} + OUTPUT_VARIABLE GIT_COMMIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${GIT_EXECUTABLE} branch --show-current + WORKING_DIRECTORY ${GIT_TOPLEVEL} + OUTPUT_VARIABLE GIT_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${GIT_EXECUTABLE} show -s --format=%s + WORKING_DIRECTORY ${GIT_TOPLEVEL} + OUTPUT_VARIABLE GIT_COMMIT_MESSAGE OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${GIT_EXECUTABLE} show -s --format=%cd --date=local + WORKING_DIRECTORY ${GIT_TOPLEVEL} + OUTPUT_VARIABLE GIT_COMMIT_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${GIT_EXECUTABLE} diff-index --quiet HEAD -- + WORKING_DIRECTORY ${GIT_TOPLEVEL} + RESULT_VARIABLE GIT_DIRTY_RESULT) + if(NOT GIT_DIRTY_RESULT EQUAL 0) + set(GIT_DIRTY "dirty") + else() + set(GIT_DIRTY "clean") + endif() + execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags + WORKING_DIRECTORY ${GIT_TOPLEVEL} + OUTPUT_VARIABLE GIT_TAG OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${GIT_EXECUTABLE} rev-list --count HEAD + WORKING_DIRECTORY ${GIT_TOPLEVEL} + OUTPUT_VARIABLE GIT_COMMITS OUTPUT_STRIP_TRAILING_WHITESPACE) else() - set(GIT_DIRTY "clean") + message(WARNING "No Git repository detected in ${CMAKE_SOURCE_DIR}") endif() - execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags - OUTPUT_VARIABLE GIT_TAG OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${GIT_EXECUTABLE} rev-list --count HEAD - OUTPUT_VARIABLE GIT_COMMITS OUTPUT_STRIP_TRAILING_WHITESPACE) -else() - set(GIT_COMMIT_HASH "unknown") - set(GIT_BRANCH "unknown") - set(GIT_COMMIT_MESSAGE "unknown") - set(GIT_COMMIT_DATE "unknown") - set(GIT_DIRTY "unknown") - set(GIT_TAG "unknown") - set(GIT_COMMITS "0") endif() configure_file( |
