summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorjkoan <jkoan@users.noreply.github.com>2018-01-09 19:37:28 +0100
committerPierre GRANDIN <pgrandin@users.noreply.github.com>2018-01-09 10:37:28 -0800
commit7f55725b43800e3ae7ce48e998350778f7517c6f (patch)
tree4671dd3806b10e90d8c4e4d37ff427cd458a5580 /cmake
parentd9292650e6dc1d7869e0905f7e473e1fc0fec351 (diff)
downloadnavit-7f55725b43800e3ae7ce48e998350778f7517c6f.tar.gz
fix:android:Use date of commit as version code instead of system time (#376)
Diffstat (limited to 'cmake')
-rwxr-xr-xcmake/version.cmake66
1 files changed, 52 insertions, 14 deletions
diff --git a/cmake/version.cmake b/cmake/version.cmake
index 8f82d9f61..41c654d33 100755
--- a/cmake/version.cmake
+++ b/cmake/version.cmake
@@ -1,29 +1,67 @@
FIND_PROGRAM(GIT_EXECUTABLE NAMES git git.exe DOC "git command line client")
+FIND_PROGRAM(DATE_EXECUTABLE NAMES date DOC "unix date command")
get_filename_component(SOURCE_DIR ${SRC} PATH)
-string(TIMESTAMP VERSION "%y%m%d%H%M")
+if (GIT_EXECUTABLE)
+ EXECUTE_PROCESS(
+ COMMAND ${GIT_EXECUTABLE} log "--format=%ct" # output as unix timestamp
+ WORKING_DIRECTORY "${SOURCE_DIR}"
+ OUTPUT_VARIABLE GIT_OUTPUT_DATE
+ ERROR_VARIABLE GIT_ERROR
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_STRIP_TRAILING_WHITESPACE
+ )
+ if(NOT GIT_OUTPUT_DATE)
+ message(STATUS "Cannot determine current git commit - git error: '${GIT_ERROR}'")
+ set(GIT_OUTPUT_DATE "0000000000")
+ else()
+ EXECUTE_PROCESS(
+ COMMAND ${GIT_EXECUTABLE} log "--format='%h'"
+ WORKING_DIRECTORY "${SOURCE_DIR}"
+ OUTPUT_VARIABLE GIT_OUTPUT_HASH
+ ERROR_VARIABLE GIT_ERROR
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_STRIP_TRAILING_WHITESPACE
+ )
+ if(NOT GIT_OUTPUT_HASH)
+ message(STATUS "Cannot determine current git commit - git error: '${GIT_ERROR}'")
+ set(GIT_OUTPUT_HASH "xdevxgitxnotxfound")
+ endif(NOT GIT_OUTPUT_HASH)
+ endif(NOT GIT_OUTPUT_DATE)
+else()
+ message(STATUS "git not found, cannot record git commit")
+ set(GIT_OUTPUT_DATE "0000000000") # To match length of android versionCode
+ set(GIT_OUTPUT_HASH "xdevxgitxnotxfound")
+endif(GIT_EXECUTABLE)
-string(REGEX MATCH "[0-9]+" VERSION_NUM ${VERSION} )
-if(NOT VERSION_NUM)
- message(STATUS "I can't find a release tag. This is probably not Navit's official tree")
- message(STATUS "It's OK, I will default to 0000")
- set(VERSION_NUM "0000")
-endif()
-string(REPLACE "R" "" VERSION_NUM ${VERSION_NUM} )
-if(NOT VERSION_NUM)
- set(VERSION_NUM "0000")
-endif()
+string(REGEX MATCH "^[0-9]+" VERSION_NUM ${GIT_OUTPUT_DATE} )
-string(REGEX MATCH "^[a-z0-9]+" VERSION ${VERSION} )
+EXECUTE_PROCESS(
+ COMMAND ${DATE_EXECUTABLE} "+%y%m%d%H%M" "-d \@${VERSION_NUM}" # output as unix timestamp
+ WORKING_DIRECTORY "${SOURCE_DIR}"
+ OUTPUT_VARIABLE DATE_CONVERT_OUTPUT
+ ERROR_VARIABLE DATE_CONVERT_ERROR
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_STRIP_TRAILING_WHITESPACE
+)
+if(NOT DATE_CONVERT_ERROR)
+ string(REGEX MATCH "[0-9]+" VERSION_CODE ${DATE_CONVERT_OUTPUT})
+else(NOT DATE_CONVERT_ERROR)
+ message(FATAL_ERROR "Date convert not working\nError message:\n${DATE_CONVERT_ERROR}")
+endif(NOT DATE_CONVERT_ERROR)
+
+string(REGEX MATCH "[a-z0-9]+" VERSION ${GIT_OUTPUT_HASH} )
if (STRIP_M)
- set(VERSION ${VERSION_NUM})
+ set(VERSION ${VERSION_CODE})
endif()
set(NAVIT_VARIANT "-")
+set(GIT_VERSION VERSION)
set(${NAME} ${VERSION})
-message (STATUS "Git commit: ${${NAME}}")
+message (STATUS "Git commit: ${VERSION}")
+message (STATUS "Git date: ${VERSION_CODE}")
CONFIGURE_FILE(${SRC} ${DST} @ONLY)