12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- From a8f82ea60cde15cbbd0ebcf729062de6bad9859c Mon Sep 17 00:00:00 2001
- From: Thomas Orozco <thomas@orozco.fr>
- Date: Tue, 28 Mar 2017 21:59:07 +0200
- Subject: [PATCH] Allow setting VERSION_GIT
- Fixes: #79
- ---
- CMakeLists.txt | 48 +++++++++++++++++++++++++++++-------------------
- 1 file changed, 29 insertions(+), 19 deletions(-)
- diff --git a/CMakeLists.txt b/CMakeLists.txt
- index 8936f18..06c180c 100644
- --- a/CMakeLists.txt
- +++ b/CMakeLists.txt
- @@ -6,34 +6,44 @@ set (tini_VERSION_MAJOR 0)
- set (tini_VERSION_MINOR 14)
- set (tini_VERSION_PATCH 0)
-
- +set (GIT_PREFIX " - git.")
- +
- # Build options
- option(MINIMAL "Disable argument parsing and verbose output" OFF)
-
- +# Set VERSION_GIT to INTERNAL so it does not persist across runs of CMake, just
- +# like the auto-discovery would.
- +set(VERSION_GIT "" CACHE INTERNAL "Override the git revision")
- +
- if(MINIMAL)
- add_definitions(-DTINI_MINIMAL=1)
- endif()
-
- # Extract git version and dirty-ness
- -execute_process (
- - COMMAND git --git-dir "${PROJECT_SOURCE_DIR}/.git" --work-tree "${PROJECT_SOURCE_DIR}" log -n 1 --date=local --pretty=format:%h
- - WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
- - RESULT_VARIABLE git_version_check_ret
- - OUTPUT_VARIABLE tini_VERSION_GIT
- -)
- -
- -execute_process(
- - COMMAND git --git-dir "${PROJECT_SOURCE_DIR}/.git" --work-tree "${PROJECT_SOURCE_DIR}" status --porcelain --untracked-files=no
- - WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
- - OUTPUT_VARIABLE git_dirty_check_out
- -)
- -
- -if("${git_version_check_ret}" EQUAL 0)
- - set(tini_VERSION_GIT " - git.${tini_VERSION_GIT}")
- - if(NOT "${git_dirty_check_out}" STREQUAL "")
- - set(tini_VERSION_GIT "${tini_VERSION_GIT}-dirty")
- - endif()
- +if(VERSION_GIT)
- + set(tini_VERSION_GIT "${GIT_PREFIX}${VERSION_GIT}")
- else()
- - set(tini_VERSION_GIT "")
- + execute_process (
- + COMMAND git --git-dir "${PROJECT_SOURCE_DIR}/.git" --work-tree "${PROJECT_SOURCE_DIR}" log -n 1 --date=local --pretty=format:%h
- + WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
- + RESULT_VARIABLE git_version_check_ret
- + OUTPUT_VARIABLE tini_VERSION_GIT
- + )
- +
- + execute_process(
- + COMMAND git --git-dir "${PROJECT_SOURCE_DIR}/.git" --work-tree "${PROJECT_SOURCE_DIR}" status --porcelain --untracked-files=no
- + WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
- + OUTPUT_VARIABLE git_dirty_check_out
- + )
- +
- + if("${git_version_check_ret}" EQUAL 0)
- + set(tini_VERSION_GIT "${GIT_PREFIX}${tini_VERSION_GIT}")
- + if(NOT "${git_dirty_check_out}" STREQUAL "")
- + set(tini_VERSION_GIT "${tini_VERSION_GIT}-dirty")
- + endif()
- + else()
- + set(tini_VERSION_GIT "")
- + endif()
- endif()
-
- # Flags
|