1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-25 01:02:24 +00:00
putty-source/cmake/gitcommit.cmake
Simon Tatham 4a8fc43d81 Prepare gitcommit.cmake to support multiple output types.
I'm about to want to embed the current git commit into a Halibut
source file, for which I'll need to add a second output mode to the
existing script that finds it out.
2021-05-03 17:01:55 +01:00

53 lines
1.6 KiB
CMake

# 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()
if(OUTPUT_TYPE STREQUAL header)
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}\";
")
else()
message(FATAL_ERROR "Set OUTPUT_TYPE when running this script")
endif()