From a8f82ea60cde15cbbd0ebcf729062de6bad9859c Mon Sep 17 00:00:00 2001 From: Thomas Orozco 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