diff options
Diffstat (limited to 'cmake/gitcommit.cmake')
-rw-r--r-- | cmake/gitcommit.cmake | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/cmake/gitcommit.cmake b/cmake/gitcommit.cmake new file mode 100644 index 00000000..0aa8a095 --- /dev/null +++ b/cmake/gitcommit.cmake @@ -0,0 +1,63 @@ +# Pure cmake script to write out cmake_commit.c and cmake_version.but + +set(DEFAULT_COMMIT "unavailable") +set(commit "${DEFAULT_COMMIT}") + +set(TOPLEVEL_SOURCE_DIR ${CMAKE_SOURCE_DIR}) + +execute_process( + COMMAND ${GIT_EXECUTABLE} 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 CMAKE_SOURCE_DIR) + execute_process( + COMMAND ${GIT_EXECUTABLE} 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 ${CMAKE_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() + +if(OUTPUT_TYPE STREQUAL header) + file(WRITE "${OUTPUT_FILE}" "\ +/* + * cmake_commit.c - string literal giving the source git commit, if known. + * + * Generated by cmake/gitcommit.cmake. + */ + +#include \"putty.h\" +const char commitid[] = \"${commit}\"; +") +elseif(OUTPUT_TYPE STREQUAL halibut) + if(commit STREQUAL "unavailable") + file(WRITE "${OUTPUT_FILE}" "\ +\\versionid no version information available +") + else() + file(WRITE "${OUTPUT_FILE}" "\ +\\versionid built from git commit ${commit} +") + endif() +else() + message(FATAL_ERROR "Set OUTPUT_TYPE when running this script") +endif() |