1#!/usr/bin/bash 2 3# Copyright (C) 2007, 2009 Apple Inc. All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without 6# modification, are permitted provided that the following conditions 7# are met: 8# 1. Redistributions of source code must retain the above copyright 9# notice, this list of conditions and the following disclaimer. 10# 2. Redistributions in binary form must reproduce the above copyright 11# notice, this list of conditions and the following disclaimer in the 12# documentation and/or other materials provided with the distribution. 13# 14# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 15# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 17# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 18# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 19# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 20# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 21# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 22# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 24# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 26 27# Trim any trailing \r or \n from the given variable. 28chomp() 29{ 30 local old_value=$(eval echo "\$$1"); 31 local value=$(echo "$old_value" | sed 's/[\r\n]*$//') 32 eval $1=\$value; 33} 34 35if [[ -n "$WEBKITLIBRARIESDIR" ]]; then 36 FALLBACK_VERSION_PATH=`cygpath -u "$WEBKITLIBRARIESDIR\\tools\\scripts\\VERSION"` 37 FALLBACK_VERSION=$(cat "$FALLBACK_VERSION_PATH"); 38 39 COPYRIGHT_END_YEAR_PATH=`cygpath -u "$WEBKITLIBRARIESDIR\\tools\\scripts\\COPYRIGHT-END-YEAR"` 40 COPYRIGHT_END_YEAR=$(cat "$COPYRIGHT_END_YEAR_PATH"); 41 chomp COPYRIGHT_END_YEAR 42fi 43 44OUTPUT_FILE=$(cygpath -u "$1")/include/autoversion.h 45mkdir -p "$(dirname "$OUTPUT_FILE")" 46 47# Take the initial version number from RC_PROJECTSOURCEVERSION if it 48# exists, otherwise fall back to the version number stored in the source. 49ENVIRONMENT_VERSION="$RC_PROJECTSOURCEVERSION"; 50PROPOSED_VERSION=${ENVIRONMENT_VERSION:-$FALLBACK_VERSION} 51chomp PROPOSED_VERSION 52 53# Split out the three components of the dotted version number. We pad 54# the input with trailing dots to handle the case where the input version 55# has fewer components than we expect. 56BUILD_MAJOR_VERSION=$(echo "$PROPOSED_VERSION.." | cut -d '.' -f 1) 57BUILD_MINOR_VERSION=$(echo "$PROPOSED_VERSION.." | cut -d '.' -f 2) 58BUILD_TINY_VERSION=$(echo "$PROPOSED_VERSION.." | cut -d '.' -f 3) 59 60# Cut the major component down to three characters by dropping any 61# extra leading digits, then adjust the major version portion of the 62# version string to match. 63CHARACTERS_TO_DROP=$(( ${#BUILD_MAJOR_VERSION} > 3 ? ${#BUILD_MAJOR_VERSION} - 3 : 0 )) 64BUILD_MAJOR_VERSION=${BUILD_MAJOR_VERSION:$CHARACTERS_TO_DROP} 65PROPOSED_VERSION=${PROPOSED_VERSION:$CHARACTERS_TO_DROP} 66 67# Have the minor and tiny components default to zero if not present. 68BUILD_MINOR_VERSION=${BUILD_MINOR_VERSION:-0} 69BUILD_TINY_VERSION=${BUILD_TINY_VERSION:-0} 70 71# Split the first component further by using the first digit for the 72# major version and the remaining two characters as the minor version. 73# The minor version is shifted down to the tiny version, with the tiny 74# version becoming the variant version. 75MAJOR_VERSION=${BUILD_MAJOR_VERSION:0:1} 76MINOR_VERSION=${BUILD_MAJOR_VERSION:1} 77TINY_VERSION=${BUILD_MINOR_VERSION} 78VARIANT_VERSION=${BUILD_TINY_VERSION} 79 80VERSION_TEXT=${PROPOSED_VERSION} 81VERSION_TEXT_SHORT=${VERSION_TEXT} 82 83if [ -z ${ENVIRONMENT_VERSION} ]; then 84 # If we didn't pull the version number from the environment then we're doing 85 # an engineering build and we'll stamp the build with some more information. 86 87 BUILD_DATE=$(date) 88 SVN_REVISION=$(svn info | grep '^Revision' | sed 's/^Revision: //') 89 90 chomp BUILD_DATE 91 chomp SVN_REVISION 92 93 VERSION_TEXT_SHORT="${VERSION_TEXT_SHORT}+" 94 VERSION_TEXT="${VERSION_TEXT_SHORT} ${USER} - ${BUILD_DATE} - r${SVN_REVISION}" 95fi 96 97cat > "$OUTPUT_FILE" <<EOF 98#define __VERSION_TEXT__ "${VERSION_TEXT}" 99#define __BUILD_NUMBER__ "${VERSION_TEXT}" 100#define __BUILD_NUMBER_SHORT__ "${VERSION_TEXT_SHORT}" 101#define __VERSION_MAJOR__ ${MAJOR_VERSION} 102#define __VERSION_MINOR__ ${MINOR_VERSION} 103#define __VERSION_TINY__ ${TINY_VERSION} 104#define __VERSION_BUILD__ ${VARIANT_VERSION} 105#define __BUILD_NUMBER_MAJOR__ ${BUILD_MAJOR_VERSION} 106#define __BUILD_NUMBER_MINOR__ ${BUILD_MINOR_VERSION} 107#define __BUILD_NUMBER_VARIANT__ ${BUILD_TINY_VERSION} 108#define __SVN_REVISION__ ${SVN_REVISION} 109EOF 110 111if [[ -n "${COPYRIGHT_END_YEAR}" ]]; then 112cat >> "$OUTPUT_FILE" <<EOF 113#define __COPYRIGHT_YEAR_END_TEXT__ "${COPYRIGHT_END_YEAR}" 114EOF 115fi 116