cmake: update git version every build

This commit is contained in:
Michael Gehring 2008-06-22 20:42:07 +02:00 committed by Julien Danjou
parent 35dce79296
commit 426d2fee9e
3 changed files with 50 additions and 4 deletions

View File

@ -119,6 +119,19 @@ ADD_CUSTOM_TARGET(generated_headers
ADD_DEPENDENCIES(${PROJECT_AWE_NAME} generated_headers)
# }}}
# {{{ version stamp
IF(BUILD_FROM_GIT)
ADD_CUSTOM_TARGET(version_stamp ALL
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/build-utils/git-version-stamp.sh
${VERSION_STAMP_FILE}
${CMAKE_CURRENT_BINARY_DIR}/awesome-version-internal.h
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
ADD_DEPENDENCIES(${PROJECT_AWE_NAME} version_stamp)
ADD_DEPENDENCIES(${PROJECT_AWECLIENT_NAME} version_stamp)
ENDIF()
# }}}
# {{{ Manpages.
IF(GENERATE_MANPAGES)

View File

@ -58,16 +58,23 @@ IF(GENERATE_MANPAGES)
ENDIF()
# }}}
# {{{ git version stamp
# If this is a git repository...
IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git/HEAD)
# ...update version
IF(GIT_EXECUTABLE)
# get current version
EXECUTE_PROCESS(COMMAND ${GIT_EXECUTABLE} describe
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
# file the git-version-stamp.sh script will look into
SET(VERSION_STAMP_FILE ${CMAKE_CURRENT_BINARY_DIR}/.version_stamp)
FILE(WRITE ${VERSION_STAMP_FILE} ${VERSION})
# create a version_stamp target later
SET(BUILD_FROM_GIT TRUE)
ENDIF()
ENDIF()
# }}}
# {{{ Required libraries
#

View File

@ -0,0 +1,26 @@
#!/bin/sh
#
# $1 file containing the last git-describe output
# $2 the file in which to update the version string
#
# TODO: proper error handling
die() {
echo "$0: WARNING: version stamp update failed."
#exit 1 # not important enough to stop the build.
exit 0
}
STAMP=`cat "$1" 2> /dev/null`
CURRENT=`git-describe 2>/dev/null`
if [[ -z "$STAMP" || -z "$CURRENT" ]]; then
die
fi
if [ "$STAMP" != "$CURRENT" ]; then
echo "git version changed: $STAMP -> $CURRENT"
sed -e s/$STAMP/$CURRENT/g "$2" 1> "$2.new" || die
mv "$2.new" "$2"
echo -n "$CURRENT" > "$1"
fi