src.dualinventive.com/mtinfo/dist/cmake/Version.txt

110 lines
4.2 KiB
Plaintext

find_program(Git_EXECUTABLE NAMES git)
set(VERSION_WORKDIR "${PROJECT_SOURCE_DIR}/webroot/main")
set(VERSION_WORKDIR2 "${PROJECT_SOURCE_DIR}/webroot/rc-4.05")
execute_process( COMMAND ${Git_EXECUTABLE} "log" "-n" "1" "--pretty=\"%h\""
WORKING_DIRECTORY ${VERSION_WORKDIR}
OUTPUT_VARIABLE Git_Commit_Hash
OUTPUT_STRIP_TRAILING_WHITESPACE)
if (Git_Commit_Hash)
string(REGEX REPLACE "^\"(.*)\"$" "\\1" Git_Commit_Hash ${Git_Commit_Hash} )
endif()
execute_process( COMMAND ${Git_EXECUTABLE} "log" "-n" "1" "--pretty=\"%h\""
WORKING_DIRECTORY ${VERSION_WORKDIR2}
OUTPUT_VARIABLE Git_Commit_Hash2
OUTPUT_STRIP_TRAILING_WHITESPACE)
if (Git_Commit_Hash2)
string(REGEX REPLACE "^\"(.*)\"$" "\\1" Git_Commit_Hash2 ${Git_Commit_Hash2} )
endif()
# Check whether we have exact match on tag
execute_process( COMMAND ${Git_EXECUTABLE} "describe" "--tags" "--exact-match"
WORKING_DIRECTORY ${VERSION_WORKDIR}
RESULT_VARIABLE Git_exact_match_tag
OUTPUT_VARIABLE Git_Tag
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
if (Git_exact_match_tag EQUAL 0)
string(REGEX REPLACE "^v(0|[1-9][0-9]*)[.](0|[1-9][0-9]*)[.](0|[1-9][0-9]*)(-[.0-9A-Za-z-]+)?([+][.0-9A-Za-z-]+)?$" "\\1.\\2.\\3" Git_Tag ${Git_Tag})
else()
execute_process( COMMAND ${Git_EXECUTABLE} "describe" "--abbrev=0" "--tags"
WORKING_DIRECTORY ${VERSION_WORKDIR}
RESULT_VARIABLE Git_latest_tag
OUTPUT_VARIABLE Git_Tag
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
if (NOT Git_latest_tag EQUAL 0)
message(FATAL_ERROR "No tag for main web-interface")
endif()
set(Git_Tag ${Git_Tag})
string(REGEX REPLACE "^v(0|[1-9][0-9]*)[.](0|[1-9][0-9]*)[.](0|[1-9][0-9]*)(-[.0-9A-Za-z-]+)?([+][.0-9A-Za-z-]+)?$" "\\1.\\2.\\3" Git_Tag ${Git_Tag})
if (Git_Commit_Hash)
set(Git_Ext "+mgit.${Git_Commit_Hash}")
else()
set(Git_Ext "+mgit.devdev")
endif()
endif()
execute_process( COMMAND ${Git_EXECUTABLE} "describe" "--tags" "--exact-match"
WORKING_DIRECTORY ${VERSION_WORKDIR2}
RESULT_VARIABLE Git_exact_match_tag2
OUTPUT_VARIABLE Git_Tag2
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
if (Git_exact_match_tag2 EQUAL 0)
string(REGEX REPLACE "^v(0|[1-9][0-9]*)[.](0|[1-9][0-9]*)[.](0|[1-9][0-9]*)(-[.0-9A-Za-z-]+)?([+][.0-9A-Za-z-]+)?$" "\\1.\\2.\\3" Git_Tag2 ${Git_Tag2})
else()
execute_process( COMMAND ${Git_EXECUTABLE} "describe" "--abbrev=0" "--tags"
WORKING_DIRECTORY ${VERSION_WORKDIR2}
RESULT_VARIABLE Git_latest_tag2
OUTPUT_VARIABLE Git_Tag2
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
if (NOT Git_latest_tag2 EQUAL 0)
message(FATAL_ERROR "No tag for main web-interface")
endif()
set(Git_Tag2 ${Git_Tag2})
if (Git_Commit_Hash2)
set(Git_Ext2 "+smgit.${Git_Commit_Hash2}")
else()
set(Git_Ext2 "+smgit.devdev")
endif()
endif()
set(APPLICATION_VERSION "${Git_Tag}.${Git_Tag2}")
if (Git_Ext2 OR Git_Ext)
string(TIMESTAMP timestamp "%Y%m%d%H%M%S")
set(APPLICATION_VERSION "${APPLICATION_VERSION}+${timestamp}${Git_Ext}${Git_Ext2}")
endif()
execute_process( COMMAND ${Git_EXECUTABLE} "diff" "--shortstat"
WORKING_DIRECTORY ${VERSION_WORKDIR}
OUTPUT_VARIABLE Dirty1
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
execute_process( COMMAND ${Git_EXECUTABLE} "diff" "--shortstat" "--cached"
WORKING_DIRECTORY ${VERSION_WORKDIR}
OUTPUT_VARIABLE Dirty2
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
if (Dirty2 OR Dirty1)
set(APPLICATION_VERSION "${APPLICATION_VERSION}-dirty")
endif()
string (TIMESTAMP Build_DT "%Y-%m-%dT%H:%M:%SZ" UTC)
set (APPLICATION_COMMIT "${Git_Commit_Hash}" CACHE INTERNAL "Application commit hash")
set (APPLICATION_VERSION "${APPLICATION_VERSION}" CACHE INTERNAL "Application version")
set (APPLICATION_BUILD_DATETIME "${Build_DT}" CACHE INTERNAL "Application build date and time")
message("-- Project version is: ${APPLICATION_VERSION}")
message("-- Project build date and time is: ${APPLICATION_BUILD_DATETIME}")