# HG changeset patch # User Hasan Yavuz Ă–ZDERYA # Date 2016-09-27 11:15:23 # Node ID 28eb5333089bc1d0948e17e21408c35fe0239034 # Parent fd5f1eb480ec372b49df58b497458de05c30057c draft of a script that extracts version information from source .hg_archival.txt is added for test purposes, should be removed diff --git a/.hg_archival.txt b/.hg_archival.txt new file mode 100644 --- /dev/null +++ b/.hg_archival.txt @@ -0,0 +1,5 @@ +repo: 58db5f6bf2b13824531f84a0e3718f67513a9958 +node: fd5f1eb480ec372b49df58b497458de05c30057c +branch: default +latesttag: v0.8.0 +latesttagdistance: 77 diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -145,12 +145,14 @@ else() endif() # version number -set(MAJOR_VERSION 0 CACHE INT "Program major version number.") -set(MINOR_VERSION 8 CACHE INT "Program minor version number.") -set(PATCH_VERSION 0 CACHE INT "Program patch version number.") +# set(MAJOR_VERSION 0 CACHE INT "Program major version number.") +# set(MINOR_VERSION 8 CACHE INT "Program minor version number.") +# set(PATCH_VERSION 0 CACHE INT "Program patch version number.") + +# get version number from mercurial +include(version) set(VERSION_STRING "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}") -# get revision number from mercurial find_program(MERCURIAL hg) if (MERCURIAL) diff --git a/cmake/modules/version.cmake b/cmake/modules/version.cmake new file mode 100644 --- /dev/null +++ b/cmake/modules/version.cmake @@ -0,0 +1,39 @@ + +find_program(MERCURIAL hg) + +# try hg_archival.txt file +if (EXISTS ${CMAKE_SOURCE_DIR}/.hg_archival.txt) + message("Found .hg_archival.txt") + file(STRINGS "${CMAKE_SOURCE_DIR}/.hg_archival.txt" latest_tag_string + REGEX "latesttag:.*") + if (latest_tag_string) + message("Found ${latest_tag_string}") + string(REGEX REPLACE "latesttag:[ \t]*v([0-9.]+).*" "\\1" + found_version_string ${latest_tag_string}) + message("Version from latest tag: ${found_version_string}") + + if (found_version_string MATCHES "([0-9]+)[0-9.]*") + set(MAJOR_VERSION ${CMAKE_MATCH_1}) + endif() + + if (found_version_string MATCHES "[0-9]+\\.([0-9]+)[0-9.]*") + set(MINOR_VERSION ${CMAKE_MATCH_1}) + endif() + + if (found_version_string MATCHES "[0-9]+\\.[0-9]+\\.([0-9]+)") + set(PATCH_VERSION ${CMAKE_MATCH_1}) + endif() + + message("found_major_version: ${MAJOR_VERSION}") + message("found_minor_version: ${MINOR_VERSION}") + message("found_patch_version: ${PATCH_VERSION}") + else(latest_tag_string) + message(WARNING "Couldn't find latest tag in .hg_archival.txt.") + endif() + +elseif(MERCURIAL) + + + +endif() +