From cc02515d4d1c942fd1d8df4bbb0f87b0a2330e8d Mon Sep 17 00:00:00 2001
From: Nicolas Pope <nwpope@utu.fi>
Date: Sun, 31 Mar 2019 09:38:25 +0300
Subject: [PATCH] Get version from git tags and commit

---
 CMakeLists.txt                  |  5 +----
 cmake/git_version.cmake         | 31 +++++++++++++++++++++++++++++++
 cv-node/include/ftl/config.h.in |  2 ++
 3 files changed, 34 insertions(+), 4 deletions(-)
 create mode 100644 cmake/git_version.cmake

diff --git a/CMakeLists.txt b/CMakeLists.txt
index a9ca25b81..a7a01fb96 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -27,10 +27,7 @@ add_definitions(-DHAVE_CUDA)
 include_directories(${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
 endif (CUDA_FOUND)
 
-set(ftl_VERSION_MAJOR "1")
-set(ftl_VERSION_MINOR "0")
-set(ftl_VERSION_PATCH "0")
-set(FTL_VERSION "\"${ftl_VERSION_MAJOR}.${ftl_VERSION_MINOR}.${ftl_VERSION_PATCH}\"")
+include(git_version)
 
 if (WIN32)
 	file(TO_CMAKE_PATH "$ENV{USERPROFILE}" ENV_USERPROFILE)
diff --git a/cmake/git_version.cmake b/cmake/git_version.cmake
new file mode 100644
index 000000000..14ce6dfc1
--- /dev/null
+++ b/cmake/git_version.cmake
@@ -0,0 +1,31 @@
+find_package(Git QUIET REQUIRED)
+
+if (Git_FOUND)
+	#CHECK_REQUIRED_VARIABLE(GIT_EXECUTABLE)
+
+	execute_process(COMMAND
+        "${GIT_EXECUTABLE}" describe --contains HEAD
+        WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
+        RESULT_VARIABLE GIT_RESULT
+        OUTPUT_VARIABLE VERSION
+        ERROR_QUIET
+        OUTPUT_STRIP_TRAILING_WHITESPACE)
+        
+	string(REGEX REPLACE "^v([0-9]+)\\..*" "\\1" ftl_VERSION_MAJOR "${VERSION}")
+	string(REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" ftl_VERSION_MINOR "${VERSION}")
+	string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" ftl_VERSION_PATCH "${VERSION}")
+	string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.[0-9]+(.*)" "\\1" ftl_VERSION_SHA1 "${VERSION}")
+	set(FTL_VERSION "\"${ftl_VERSION_MAJOR}.${ftl_VERSION_MINOR}.${ftl_VERSION_PATCH}\"")
+
+else()
+
+	set(ftl_VERSION_MAJOR "0")
+	set(ftl_VERSION_MINOR "0")
+	set(ftl_VERSION_PATCH "0")
+	set(FTL_VERSION "\"${ftl_VERSION_MAJOR}.${ftl_VERSION_MINOR}.${ftl_VERSION_PATCH}\"")
+	
+	message(WARNING "Version could not be obtained from git")
+
+endif()
+
+
diff --git a/cv-node/include/ftl/config.h.in b/cv-node/include/ftl/config.h.in
index 1ca2bb0b3..bd68be9df 100644
--- a/cv-node/include/ftl/config.h.in
+++ b/cv-node/include/ftl/config.h.in
@@ -4,10 +4,12 @@
 #cmakedefine HAVE_VIZ
 #cmakedefine HAVE_OPENCVCUDA
 
+#define FTL_VERSION_LONG "@VERSION@"
 #define FTL_VERSION @FTL_VERSION@
 #define FTL_VERSION_MAJOR @ftl_VERSION_MAJOR@
 #define FTL_VERSION_MINOR @ftl_VERSION_MINOR@
 #define FTL_VERSION_PATCH @ftl_VERSION_PATCH@
+#define FTL_VERSION_SHA1 "@ftl_VERSION_SHA1@"
 
 #define FTL_CONFIG_ROOT @FTL_CONFIG_ROOT@
 #define FTL_CACHE_ROOT @FTL_CACHE_ROOT@
-- 
GitLab