• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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