xref: /aosp_15_r20/external/libvpx/build/make/version.sh (revision fb1b10ab9aebc7c7068eedab379b749d7e3900be)
1*fb1b10abSAndroid Build Coastguard Worker#!/bin/sh
2*fb1b10abSAndroid Build Coastguard Worker##
3*fb1b10abSAndroid Build Coastguard Worker##  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
4*fb1b10abSAndroid Build Coastguard Worker##
5*fb1b10abSAndroid Build Coastguard Worker##  Use of this source code is governed by a BSD-style license
6*fb1b10abSAndroid Build Coastguard Worker##  that can be found in the LICENSE file in the root of the source
7*fb1b10abSAndroid Build Coastguard Worker##  tree. An additional intellectual property rights grant can be found
8*fb1b10abSAndroid Build Coastguard Worker##  in the file PATENTS.  All contributing project authors may
9*fb1b10abSAndroid Build Coastguard Worker##  be found in the AUTHORS file in the root of the source tree.
10*fb1b10abSAndroid Build Coastguard Worker##
11*fb1b10abSAndroid Build Coastguard Worker
12*fb1b10abSAndroid Build Coastguard Worker
13*fb1b10abSAndroid Build Coastguard Worker
14*fb1b10abSAndroid Build Coastguard Workerfor opt in "$@"; do
15*fb1b10abSAndroid Build Coastguard Worker    optval="${opt#*=}"
16*fb1b10abSAndroid Build Coastguard Worker    case "$opt" in
17*fb1b10abSAndroid Build Coastguard Worker    --bare) bare=true ;;
18*fb1b10abSAndroid Build Coastguard Worker    *) break ;;
19*fb1b10abSAndroid Build Coastguard Worker    esac
20*fb1b10abSAndroid Build Coastguard Worker    shift
21*fb1b10abSAndroid Build Coastguard Workerdone
22*fb1b10abSAndroid Build Coastguard Workersource_path=${1:-.}
23*fb1b10abSAndroid Build Coastguard Workerout_file=${2}
24*fb1b10abSAndroid Build Coastguard Workerid=${3:-VERSION_STRING}
25*fb1b10abSAndroid Build Coastguard Worker
26*fb1b10abSAndroid Build Coastguard Workergit_version_id=""
27*fb1b10abSAndroid Build Coastguard Workerif [ -e "${source_path}/.git" ]; then
28*fb1b10abSAndroid Build Coastguard Worker    # Source Path is a git working copy. Check for local modifications.
29*fb1b10abSAndroid Build Coastguard Worker    # Note that git submodules may have a file as .git, not a directory.
30*fb1b10abSAndroid Build Coastguard Worker    export GIT_DIR="${source_path}/.git"
31*fb1b10abSAndroid Build Coastguard Worker    git_version_id=`git describe --match=v[0-9]* 2>/dev/null`
32*fb1b10abSAndroid Build Coastguard Workerfi
33*fb1b10abSAndroid Build Coastguard Worker
34*fb1b10abSAndroid Build Coastguard Workerchangelog_version=""
35*fb1b10abSAndroid Build Coastguard Workerfor p in "${source_path}" "${source_path}/.."; do
36*fb1b10abSAndroid Build Coastguard Worker    if [ -z "$git_version_id" -a -f "${p}/CHANGELOG" ]; then
37*fb1b10abSAndroid Build Coastguard Worker        changelog_version=`head -n1 "${p}/CHANGELOG" | awk '{print $2}'`
38*fb1b10abSAndroid Build Coastguard Worker        changelog_version="${changelog_version}"
39*fb1b10abSAndroid Build Coastguard Worker        break
40*fb1b10abSAndroid Build Coastguard Worker    fi
41*fb1b10abSAndroid Build Coastguard Workerdone
42*fb1b10abSAndroid Build Coastguard Workerversion_str="${changelog_version}${git_version_id}"
43*fb1b10abSAndroid Build Coastguard Workerbare_version=${version_str#v}
44*fb1b10abSAndroid Build Coastguard Workermajor_version=${bare_version%%.*}
45*fb1b10abSAndroid Build Coastguard Workerbare_version=${bare_version#*.}
46*fb1b10abSAndroid Build Coastguard Workerminor_version=${bare_version%%.*}
47*fb1b10abSAndroid Build Coastguard Workerbare_version=${bare_version#*.}
48*fb1b10abSAndroid Build Coastguard Workerpatch_version=${bare_version%%-*}
49*fb1b10abSAndroid Build Coastguard Workerbare_version=${bare_version#${patch_version}}
50*fb1b10abSAndroid Build Coastguard Workerextra_version=${bare_version##-}
51*fb1b10abSAndroid Build Coastguard Worker
52*fb1b10abSAndroid Build Coastguard Worker#since they'll be used as integers below make sure they are or force to 0
53*fb1b10abSAndroid Build Coastguard Workerfor v in major_version minor_version patch_version; do
54*fb1b10abSAndroid Build Coastguard Worker    if eval echo \$$v |grep -E -q '[^[:digit:]]'; then
55*fb1b10abSAndroid Build Coastguard Worker        eval $v=0
56*fb1b10abSAndroid Build Coastguard Worker    fi
57*fb1b10abSAndroid Build Coastguard Workerdone
58*fb1b10abSAndroid Build Coastguard Worker
59*fb1b10abSAndroid Build Coastguard Workerif [ ${bare} ]; then
60*fb1b10abSAndroid Build Coastguard Worker    echo "${changelog_version}${git_version_id}" > $$.tmp
61*fb1b10abSAndroid Build Coastguard Workerelse
62*fb1b10abSAndroid Build Coastguard Worker    cat<<EOF>$$.tmp
63*fb1b10abSAndroid Build Coastguard Worker// This file is generated. Do not edit.
64*fb1b10abSAndroid Build Coastguard Worker#ifndef VPX_VERSION_H_
65*fb1b10abSAndroid Build Coastguard Worker#define VPX_VERSION_H_
66*fb1b10abSAndroid Build Coastguard Worker#define VERSION_MAJOR  $major_version
67*fb1b10abSAndroid Build Coastguard Worker#define VERSION_MINOR  $minor_version
68*fb1b10abSAndroid Build Coastguard Worker#define VERSION_PATCH  $patch_version
69*fb1b10abSAndroid Build Coastguard Worker#define VERSION_EXTRA  "$extra_version"
70*fb1b10abSAndroid Build Coastguard Worker#define VERSION_PACKED ((VERSION_MAJOR<<16)|(VERSION_MINOR<<8)|(VERSION_PATCH))
71*fb1b10abSAndroid Build Coastguard Worker#define ${id}_NOSP "${version_str}"
72*fb1b10abSAndroid Build Coastguard Worker#define ${id}      " ${version_str}"
73*fb1b10abSAndroid Build Coastguard Worker#endif  // VPX_VERSION_H_
74*fb1b10abSAndroid Build Coastguard WorkerEOF
75*fb1b10abSAndroid Build Coastguard Workerfi
76*fb1b10abSAndroid Build Coastguard Workerif [ -n "$out_file" ]; then
77*fb1b10abSAndroid Build Coastguard Workerdiff $$.tmp ${out_file} >/dev/null 2>&1 || cat $$.tmp > ${out_file}
78*fb1b10abSAndroid Build Coastguard Workerelse
79*fb1b10abSAndroid Build Coastguard Workercat $$.tmp
80*fb1b10abSAndroid Build Coastguard Workerfi
81*fb1b10abSAndroid Build Coastguard Workerrm $$.tmp
82