1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
# Pure cmake script to write out cmake_commit.c and cmake_version.but
set(DEFAULT_COMMIT "d2c178c49a0ae6fa9ef75ca84fb3c9d0d675ea85")
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()
|