view cmake/HGVersion.cmake @ 1250:7ea3a4c0e2ae

This should be serious software.
author Andre Heinecke <andre.heinecke@intevation.de>
date Thu, 25 Sep 2014 15:53:49 +0200
parents 7a8f5b85fd9a
children
line wrap: on
line source
# Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik
# Software engineering by Intevation GmbH
#
# This file is Free Software under the GNU GPL (v>=2)
# and comes with ABSOLUTELY NO WARRANTY!
# See LICENSE.txt for details.

# This makes some variables available to generate a nice version number for
# hg managed repositories.
# It sets HG_REVISION_TAG to the value of the latest tag
# HG_REVISION_DIST to the differences between the tag and the current tip
# HG_REVISION_ID to the actual revision
# based on code found in the lemon graph library https://lemon.cs.elte.hu
# HG_REVISON to a nice combination of those.
find_package(Hg)
if (HG_FOUND)
  EXECUTE_PROCESS(
    COMMAND
    hg log -r. --template "{latesttag}"
    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
    OUTPUT_VARIABLE HG_REVISION_TAG
    ERROR_QUIET
    OUTPUT_STRIP_TRAILING_WHITESPACE
  )
  EXECUTE_PROCESS(
    COMMAND
    hg log -r. --template "{latesttagdistance}"
    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
    OUTPUT_VARIABLE HG_REVISION_DIST
    ERROR_QUIET
    OUTPUT_STRIP_TRAILING_WHITESPACE
  )
  EXECUTE_PROCESS(
    COMMAND
    hg log -r. --template "{node|short}"
    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
    OUTPUT_VARIABLE HG_REVISION_ID
    ERROR_QUIET
    OUTPUT_STRIP_TRAILING_WHITESPACE
  )

  IF(HG_REVISION_TAG STREQUAL "")
    SET(HG_REVISION_ID "hg-tip")
  ELSE()
    IF(HG_REVISION_TAG STREQUAL "null")
      SET(HG_REVISION_TAG "trunk")
    ELSEIF(HG_REVISION_TAG MATCHES "^r")
      STRING(SUBSTRING ${HG_REVISION_TAG} 1 -1 HG_REVISION_TAG)
    ENDIF()
    IF(HG_REVISION_DIST STREQUAL "0")
      SET(HG_REVISION ${HG_REVISION_TAG})
    ELSE()
      SET(HG_REVISION
        "${HG_REVISION_TAG}+${HG_REVISION_DIST}-${HG_REVISION_ID}")
    ENDIF()
  ENDIF()
ENDIF()

http://wald.intevation.org/projects/trustbridge/