@@ -21,18 +21,25 @@ set (CCEXTRACTOR_VERSION_MINOR 96)
2121# Get project directory
2222get_filename_component (BASE_PROJ_DIR ../ ABSOLUTE )
2323
24- # Get the latest commit hash of the working branch
25- IF (EXISTS "${BASE_PROJ_DIR} /.git" )
26- execute_process (
27- COMMAND git rev-parse HEAD
28- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
29- OUTPUT_VARIABLE GIT_COMMIT_HASH
30- OUTPUT_STRIP_TRAILING_WHITESPACE
31- )
32- ELSE (EXISTS "${BASE_PROJ_DIR} /.git" )
33- set (GIT_BRANCH "Unknown" )
34- set (GIT_COMMIT_HASH "Unknown" )
35- ENDIF (EXISTS "${BASE_PROJ_DIR} /.git" )
24+ # GIT_COMMIT_HASH can be injected via -DGIT_COMMIT_HASH=<value> for Homebrew
25+ # or any tarball-based build where no .git directory is present.
26+ # Source builds fall through to git rev-parse automatically.
27+ set (GIT_COMMIT_HASH "" CACHE STRING
28+ "Build provenance override for tarball-based builds (Homebrew, released source tarball)" )
29+
30+ if (GIT_COMMIT_HASH STREQUAL "" )
31+ IF (EXISTS "${BASE_PROJ_DIR} /.git" )
32+ execute_process (
33+ COMMAND git rev-parse HEAD
34+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
35+ OUTPUT_VARIABLE GIT_COMMIT_HASH
36+ OUTPUT_STRIP_TRAILING_WHITESPACE
37+ )
38+ ELSE (EXISTS "${BASE_PROJ_DIR} /.git" )
39+ set (GIT_BRANCH "Unknown" )
40+ set (GIT_COMMIT_HASH "Unknown" )
41+ ENDIF (EXISTS "${BASE_PROJ_DIR} /.git" )
42+ endif ()
3643
3744#Get the date
3845string (TIMESTAMP COMPILATION_DATE %Y-%m-%d)
0 commit comments