forked from pkuvcl/xavs2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
version.sh
executable file
·61 lines (54 loc) · 3.83 KB
/
version.sh
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
57
58
59
60
61
#!/bin/sh
# ============================================================================
# File:
# version.sh
# - get version of repository and generate the file version.h
# Author:
# Falei LUO <[email protected]>
# ============================================================================
# get version of remote and local repository
VER_R=`git rev-list --count origin/master`
VER_L=`git rev-list --count HEAD`
VER_SHA=`git rev-parse HEAD | cut -c -16`
# get API version from "./source/xavs2.h"
api=`grep '#define XAVS2_BUILD' < ./source/xavs2.h | sed 's/^.* \([1-9][0-9]*\).*$/\1/'`
apiver=`grep '#define XAVS2_API_VERSION' < ./source/xavs2.h | sed 's/^.* \([1-9][0-9]*\).*$/\1/'`
len=`expr length $api`
end1=`expr $len - 1`
VER_MAJOR=`echo $api | cut -c -$end1`
VER_MINOR=`echo $api | cut -c $len-`
# date and time information
BUILD_TIME=`date --date='0 hours ago' "+%Y-%m-%d %H:%M:%S"`
# generate the file version.h
echo "// ===========================================================================" > version.h
echo "// version.h" >> version.h
echo "// - collection of version numbers" >> version.h
echo "//" >> version.h
echo "// Author: Falei LUO <[email protected]>" >> version.h
echo "//" >> version.h
echo "// ===========================================================================" >> version.h
echo "" >> version.h
echo "#ifndef __XAVS2_VERSION_H__" >> version.h
echo "#define __XAVS2_VERSION_H__" >> version.h
echo "" >> version.h
echo "// version number" >> version.h
echo "#define VER_MAJOR $VER_MAJOR // major version number" >> version.h
echo "#define VER_MINOR $VER_MINOR // minor version number" >> version.h
echo "#define VER_BUILD $VER_R // build number" >> version.h
echo "#define VER_TYPE $apiver // api type, 1: callback; 2: non-callback" >> version.h
echo "#define VER_SHA_STR \"$VER_SHA\" // commit id" >> version.h
echo "" >> version.h
echo "// stringify" >> version.h
echo "#define _TOSTR(x) #x // stringify x" >> version.h
echo "#define TOSTR(x) _TOSTR(x) // stringify x, perform macro expansion" >> version.h
echo "" >> version.h
echo "// define XVERSION for resource file(*.rc)" >> version.h
echo "#define XVERSION VER_MAJOR, VER_MINOR, VER_BUILD, VER_TYPE" >> version.h
echo "#define XVERSION_STR TOSTR(VER_MAJOR) \".\" TOSTR(VER_MINOR) \".\" TOSTR(VER_BUILD) \".\" TOSTR(VER_TYPE) \" \" VER_SHA_STR" >> version.h
echo "#define XBUILD_TIME \"$BUILD_TIME\"" >> version.h
echo "" >> version.h
echo "#endif // __VERSION_H__" >> version.h
mv version.h source/version.h
# show version informations
echo "#define XAVS2_VERSION \"r$api\""
echo "#define XAVS2_POINTVER \"$VER_MAJOR.$VER_MINOR.$VER_R.$apiver\""