summaryrefslogtreecommitdiff
path: root/util/getversion.sh
blob: 798bb514481e6a3011ad2e5c0e1709f44eb2e1bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/bash
#
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Generate version information for the EC binary

if ghash=`git rev-parse --short --verify HEAD 2>/dev/null`; then
	if gdesc=`git describe --dirty --match='v*' 2>/dev/null`; then
		IFS="-" fields=($gdesc)
		tag="${fields[0]}"
		IFS="." vernum=($tag)
		numcommits=$((${vernum[2]}+${fields[1]:-0}))
		ver_major="${vernum[0]}"
		ver_branch="${vernum[1]}"
	else
		numcommits=`git rev-list HEAD | wc -l`
		ver_major="v0"
		ver_branch="0"
	fi
	# avoid putting the -dirty attribute if only the timestamp
	# changed
	git status > /dev/null 2>&1

	dirty=`sh -c "[ '$(git diff-index --name-only HEAD)' ] && echo '-dirty'"`
	vbase="${ver_major}.${ver_branch}.${numcommits}-${ghash}${dirty}"
else
	vbase="no_version"
fi

ver="${BOARD}_${vbase}"

gitdate=$(git log -1 --format='%ai' HEAD | cut -d ' ' -f '1 2')

echo "/* This file is generated by util/getversion.sh */"

echo "/* Version string for use by common/version.c */"
echo "#ifdef SHIFT_CODE_FOR_TEST"
echo "#define CROS_EC_VERSION \"${ver}_shift\""
echo "#else"
echo "#define CROS_EC_VERSION \"${ver}\""
echo "#endif"

echo "/* Version string, truncated to 31 chars (+ terminating null = 32) */"
echo "#define CROS_EC_VERSION32 \"${ver:0:31}\""

echo "/* Sub-fields for use in Makefile.rules and to form build info string"
echo " * in common/version.c. */"
echo "#define VERSION \"${ver}\""
echo "#define BUILDER \"${USER}@`hostname`\""

echo "/* Author date of last commit, in case compile-time is not used. */"
echo "#ifndef DATE"
echo "#define DATE \"${gitdate}\""
echo "#endif"