# Pure cmake script to write out cmake_commit.h set(DEFAULT_COMMIT "unavailable") set(commit "${DEFAULT_COMMIT}") execute_process( COMMAND ${GIT_EXECUTABLE} -C ${TOPLEVEL_SOURCE_DIR} rev-parse --show-toplevel OUTPUT_VARIABLE git_worktree ERROR_VARIABLE stderr RESULT_VARIABLE status) string(REGEX REPLACE "\n$" "" git_worktree "${git_worktree}") if(status EQUAL 0) if(git_worktree STREQUAL TOPLEVEL_SOURCE_DIR) execute_process( COMMAND ${GIT_EXECUTABLE} -C ${TOPLEVEL_SOURCE_DIR} rev-parse HEAD OUTPUT_VARIABLE git_commit ERROR_VARIABLE stderr RESULT_VARIABLE status) if(status EQUAL 0) string(REGEX REPLACE "\n$" "" commit "${git_commit}") else() if(commit STREQUAL "unavailable") message("Unable to determine git commit: 'git rev-parse HEAD' returned status ${status} and error output:\n${stderr}\n") endif() endif() else() if(commit STREQUAL "unavailable") message("Unable to determine git commit: top-level source dir ${TOPLEVEL_SOURCE_DIR} is not the root of a repository") endif() endif() else() if(commit STREQUAL "unavailable") message("Unable to determine git commit: 'git rev-parse --show-toplevel' returned status ${status} and error output:\n${stderr}\n") endif() endif() file(WRITE "${OUTPUT_FILE}" "\ /* * cmake_commit.h - string literal giving the source git commit, if known. * * Generated by cmake/gitcommit.cmake. */ const char commitid[] = \"${commit}\"; ")