Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/marian-nmt/marian.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorRoman Grundkiewicz <rgrundki@exseed.ed.ac.uk>2017-07-13 15:02:43 +0300
committerRoman Grundkiewicz <rgrundki@exseed.ed.ac.uk>2017-07-13 15:02:43 +0300
commit7aaa3ba9852c57415f09b17f862518971d864f1f (patch)
tree712084c9da003a3b1eda95d5dd664c9222230bc2 /cmake
parentd12077ccc157fb23fdb0c6b8dbf3d13da4748c6d (diff)
Switch to manual project versioning
Diffstat (limited to 'cmake')
-rw-r--r--cmake/GetVersionFromFile.cmake60
-rw-r--r--cmake/GetVersionFromGitTag.cmake115
2 files changed, 60 insertions, 115 deletions
diff --git a/cmake/GetVersionFromFile.cmake b/cmake/GetVersionFromFile.cmake
new file mode 100644
index 00000000..29b9d2bc
--- /dev/null
+++ b/cmake/GetVersionFromFile.cmake
@@ -0,0 +1,60 @@
+##
+# This CMake modules sets the project version from a version file.
+#
+# The module sets the following variables:
+#
+# * PROJECT_VERSION_STRING
+# * PROJECT_VERSION_STRING_FULL
+# * PROJECT_VERSION_MAJOR
+# * PROJECT_VERSION_MINOR
+# * PROJECT_VERSION_PATCH
+# * PROJECT_VERSION_TWEAK
+# * PROJECT_VERSION_GIT_SHA
+#
+# This module is public domain, use it as it fits you best.
+##
+
+# Get full string version from file
+if(PROJECT_VERSION_FILE)
+ file(STRINGS ${PROJECT_VERSION_FILE} PROJECT_VERSION_STRING)
+else()
+ file(STRINGS ${CMAKE_SOURCE_DIR}/VERSION PROJECT_VERSION_STRING)
+endif()
+
+# Get current commit SHA from git
+execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+ OUTPUT_VARIABLE PROJECT_VERSION_GIT_SHA
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+# Get partial versions into a list
+string(REGEX MATCHALL "-.*$|[0-9]+" PROJECT_PARTIAL_VERSION_LIST
+ ${PROJECT_VERSION_STRING})
+
+# Set the version numbers
+list(GET PROJECT_PARTIAL_VERSION_LIST 0 PROJECT_VERSION_MAJOR)
+list(GET PROJECT_PARTIAL_VERSION_LIST 1 PROJECT_VERSION_MINOR)
+list(GET PROJECT_PARTIAL_VERSION_LIST 2 PROJECT_VERSION_PATCH)
+
+# The tweak part is optional, so check if the list contains it
+list(LENGTH PROJECT_PARTIAL_VERSION_LIST PROJECT_PARTIAL_VERSION_LIST_LEN)
+if(PROJECT_PARTIAL_VERSION_LIST_LEN GREATER 3)
+ list(GET PROJECT_PARTIAL_VERSION_LIST 3 PROJECT_VERSION_TWEAK)
+ string(SUBSTRING ${PROJECT_VERSION_TWEAK} 1 -1 PROJECT_VERSION_TWEAK)
+endif()
+
+# Unset the list
+unset(PROJECT_PARTIAL_VERSION_LIST)
+
+# Set full project version string
+set(PROJECT_VERSION_STRING_FULL
+ ${PROJECT_VERSION_STRING}+${PROJECT_VERSION_GIT_SHA})
+
+# Print all variables for debugging
+#message(STATUS ${PROJECT_VERSION_STRING_FULL})
+#message(STATUS ${PROJECT_VERSION_STRING})
+#message(STATUS ${PROJECT_VERSION_MAJOR})
+#message(STATUS ${PROJECT_VERSION_MINOR})
+#message(STATUS ${PROJECT_VERSION_PATCH})
+#message(STATUS ${PROJECT_VERSION_TWEAK})
+#message(STATUS ${PROJECT_VERSION_GIT_SHA})
diff --git a/cmake/GetVersionFromGitTag.cmake b/cmake/GetVersionFromGitTag.cmake
deleted file mode 100644
index 5d16e8c8..00000000
--- a/cmake/GetVersionFromGitTag.cmake
+++ /dev/null
@@ -1,115 +0,0 @@
-#
-# This cmake module sets the project version and partial version
-# variables by analysing the git tag and commit history. It expects git
-# tags defined with semantic versioning 2.0.0 (http://semver.org/).
-#
-# The module expects the PROJECT_NAME variable to be set, and recognizes
-# the GIT_FOUND, GIT_EXECUTABLE and VERSION_UPDATE_FROM_GIT variables.
-# If Git is found and VERSION_UPDATE_FROM_GIT is set to boolean TRUE,
-# the project version will be updated using information fetched from the
-# most recent git tag and commit. Otherwise, the module will try to read
-# a VERSION file containing the full and partial versions. The module
-# will update this file each time the project version is updated.
-#
-# Once done, this module will define the following variables:
-#
-# ${PROJECT_NAME}_VERSION_STRING - Version string without metadata
-# such as "v2.0.0" or "v1.2.41-beta.1". This should correspond to the
-# most recent git tag.
-# ${PROJECT_NAME}_VERSION_STRING_FULL - Version string with metadata
-# such as "v2.0.0+3.a23fbc" or "v1.3.1-alpha.2+4.9c4fd1"
-# ${PROJECT_NAME}_VERSION - Same as ${PROJECT_NAME}_VERSION_STRING,
-# without the preceding 'v', e.g. "2.0.0" or "1.2.41-beta.1"
-# ${PROJECT_NAME}_VERSION_MAJOR - Major version integer (e.g. 2 in v2.3.1-RC.2+21.ef12c8)
-# ${PROJECT_NAME}_VERSION_MINOR - Minor version integer (e.g. 3 in v2.3.1-RC.2+21.ef12c8)
-# ${PROJECT_NAME}_VERSION_PATCH - Patch version integer (e.g. 1 in v2.3.1-RC.2+21.ef12c8)
-# ${PROJECT_NAME}_VERSION_TWEAK - Tweak version string (e.g. "RC.2" in v2.3.1-RC.2+21.ef12c8)
-# ${PROJECT_NAME}_VERSION_AHEAD - How many commits ahead of last tag (e.g. 21 in v2.3.1-RC.2+21.ef12c8)
-# ${PROJECT_NAME}_VERSION_GIT_SHA - The git sha1 of the most recent commit (e.g. the "ef12c8" in v2.3.1-RC.2+21.ef12c8)
-#
-# This module is public domain, use it as it fits you best.
-#
-# Author: Nuno Fachada
-
-# Check if git is found...
-if (GIT_FOUND AND VERSION_UPDATE_FROM_GIT)
-
- # Get last tag from git
- execute_process(COMMAND ${GIT_EXECUTABLE} describe --abbrev=0 --tags
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- OUTPUT_VARIABLE ${PROJECT_NAME}_VERSION_STRING
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-
- #How many commits since last tag
- execute_process(COMMAND ${GIT_EXECUTABLE} rev-list master ${${PROJECT_NAME}_VERSION_STRING}^..HEAD --count
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- OUTPUT_VARIABLE ${PROJECT_NAME}_VERSION_AHEAD
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-
- # Get current commit SHA from git
- execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- OUTPUT_VARIABLE ${PROJECT_NAME}_VERSION_GIT_SHA
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-
- # Get partial versions into a list
- string(REGEX MATCHALL "-.*$|[0-9]+" ${PROJECT_NAME}_PARTIAL_VERSION_LIST
- ${${PROJECT_NAME}_VERSION_STRING})
-
- # Set the version numbers
- list(GET ${PROJECT_NAME}_PARTIAL_VERSION_LIST
- 0 ${PROJECT_NAME}_VERSION_MAJOR)
- list(GET ${PROJECT_NAME}_PARTIAL_VERSION_LIST
- 1 ${PROJECT_NAME}_VERSION_MINOR)
- list(GET ${PROJECT_NAME}_PARTIAL_VERSION_LIST
- 2 ${PROJECT_NAME}_VERSION_PATCH)
-
- # The tweak part is optional, so check if the list contains it
- list(LENGTH ${PROJECT_NAME}_PARTIAL_VERSION_LIST
- ${PROJECT_NAME}_PARTIAL_VERSION_LIST_LEN)
- if (${PROJECT_NAME}_PARTIAL_VERSION_LIST_LEN GREATER 3)
- list(GET ${PROJECT_NAME}_PARTIAL_VERSION_LIST 3 ${PROJECT_NAME}_VERSION_TWEAK)
- string(SUBSTRING ${${PROJECT_NAME}_VERSION_TWEAK} 1 -1 ${PROJECT_NAME}_VERSION_TWEAK)
- endif()
-
- # Unset the list
- unset(${PROJECT_NAME}_PARTIAL_VERSION_LIST)
-
- # Set full project version string
- set(${PROJECT_NAME}_VERSION_STRING_FULL
- ${${PROJECT_NAME}_VERSION_STRING}+${${PROJECT_NAME}_VERSION_AHEAD}.${${PROJECT_NAME}_VERSION_GIT_SHA})
-
- # Save version to file (which will be used when Git is not available
- # or VERSION_UPDATE_FROM_GIT is disabled)
- file(WRITE ${CMAKE_SOURCE_DIR}/VERSION ${${PROJECT_NAME}_VERSION_STRING_FULL}
- "*" ${${PROJECT_NAME}_VERSION_STRING}
- "*" ${${PROJECT_NAME}_VERSION_MAJOR}
- "*" ${${PROJECT_NAME}_VERSION_MINOR}
- "*" ${${PROJECT_NAME}_VERSION_PATCH}
- "*" ${${PROJECT_NAME}_VERSION_TWEAK}
- "*" ${${PROJECT_NAME}_VERSION_AHEAD}
- "*" ${${PROJECT_NAME}_VERSION_GIT_SHA})
-
-else()
-
- # Git not available, get version from file
- file(STRINGS ${CMAKE_SOURCE_DIR}/VERSION ${PROJECT_NAME}_VERSION_LIST)
- string(REPLACE "*" ";" ${PROJECT_NAME}_VERSION_LIST ${${PROJECT_NAME}_VERSION_LIST})
- # Set partial versions
- list(GET ${PROJECT_NAME}_VERSION_LIST 0 ${PROJECT_NAME}_VERSION_STRING_FULL)
- list(GET ${PROJECT_NAME}_VERSION_LIST 1 ${PROJECT_NAME}_VERSION_STRING)
- list(GET ${PROJECT_NAME}_VERSION_LIST 2 ${PROJECT_NAME}_VERSION_MAJOR)
- list(GET ${PROJECT_NAME}_VERSION_LIST 3 ${PROJECT_NAME}_VERSION_MINOR)
- list(GET ${PROJECT_NAME}_VERSION_LIST 4 ${PROJECT_NAME}_VERSION_PATCH)
- list(GET ${PROJECT_NAME}_VERSION_LIST 5 ${PROJECT_NAME}_VERSION_TWEAK)
- list(GET ${PROJECT_NAME}_VERSION_LIST 6 ${PROJECT_NAME}_VERSION_AHEAD)
- list(GET ${PROJECT_NAME}_VERSION_LIST 7 ${PROJECT_NAME}_VERSION_GIT_SHA)
-
-endif()
-
-
-# Set project version (without the preceding 'v')
-set(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}.${${PROJECT_NAME}_VERSION_PATCH})
-if (${PROJECT_NAME}_VERSION_TWEAK)
- set(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_VERSION}-${${PROJECT_NAME}_VERSION_TWEAK})
-endif()