1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- # 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-cdup
- OUTPUT_VARIABLE path_to_top
- ERROR_VARIABLE stderr
- RESULT_VARIABLE status)
- string(REGEX REPLACE "\n$" "" path_to_top "${path_to_top}")
- # If we're at the top of a git repository, --show-cdup will print the
- # empty string (followed by a newline) and return success. If we're
- # lower down, it will return a sequence of "../../" that leads to the
- # top; if we're higher up it will fail with an error.
- if(status EQUAL 0 AND path_to_top STREQUAL "")
- 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()
- 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()
|