summaryrefslogtreecommitdiff
path: root/cmake/version.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/version.cmake')
-rw-r--r--cmake/version.cmake34
1 files changed, 34 insertions, 0 deletions
diff --git a/cmake/version.cmake b/cmake/version.cmake
new file mode 100644
index 00000000..75a4ac59
--- /dev/null
+++ b/cmake/version.cmake
@@ -0,0 +1,34 @@
+include(utils/ParseGitTag)
+
+# Parse version from git tag or use custom version if unavailable
+parse_git_tag(${CMAKE_SOURCE_DIR} PACKAGE_VERSION_MAJOR PACKAGE_VERSION_MINOR
+ PACKAGE_VERSION_PATCH)
+
+set(PACKAGE_VERSION
+ "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}.${PACKAGE_VERSION_PATCH}")
+
+include(utils/GetGitHash)
+get_git_hash(${CMAKE_SOURCE_DIR} ${PACKAGE_VERSION_MAJOR} ${PACKAGE_VERSION_MINOR}
+ ${PACKAGE_VERSION_PATCH} PACKAGE_VERSION_STRING)
+
+configure_file("${CMAKE_SOURCE_DIR}/include/ouroboros/version.h.in"
+ "${CMAKE_BINARY_DIR}/include/ouroboros/version.h" @ONLY)
+
+add_custom_target(version_header ALL
+ COMMAND ${CMAKE_COMMAND}
+ -DGIT_DIR=${CMAKE_SOURCE_DIR}
+ -DINPUT_FILE=${CMAKE_SOURCE_DIR}/include/ouroboros/version.h.in
+ -DOUTPUT_FILE=${CMAKE_BINARY_DIR}/include/ouroboros/version.h
+ -DPACKAGE_VERSION_MAJOR=${PACKAGE_VERSION_MAJOR}
+ -DPACKAGE_VERSION_MINOR=${PACKAGE_VERSION_MINOR}
+ -DPACKAGE_VERSION_PATCH=${PACKAGE_VERSION_PATCH}
+ -P ${CMAKE_SOURCE_DIR}/cmake/utils/GenVersionHeader.cmake
+ COMMENT "Updating git hash in version.h"
+)
+
+add_custom_target(version
+ COMMAND ${CMAKE_COMMAND}
+ -DVERSION_HEADER=${CMAKE_BINARY_DIR}/include/ouroboros/version.h
+ -P ${CMAKE_SOURCE_DIR}/cmake/utils/PrintVersion.cmake
+ DEPENDS version_header
+)