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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/bin/bash
#####################################################################
# This script extracts several properties and then writes them to a
# to a file, 'build.properties'. These properties include:
#
# 1. OpenCV version.
# 2. OpenVC version as a string for use by Maven.
# 3. The CPU binary word size.
# 4. Architecture string.
# 4. OSGi compatible CPU architecture string.
#
# There is no need to execute this script directly as it will be
# called during the Maven build process.
#
# Command-line parameters:
# $1 - Absolute path to the file containing Open CV version
# $2 - The build directory and where the output file will be written
# $3 - The name of the output file to write to.
#
# Returns:
# 0 - Successfully written the properties file.
# 1 - Error occured such as build directory does not exist
# or OpenCV version could not be determined or an
# unexpected error.
#
# Kerry Billingham <contact (at) avionicengineers (d0t) com>
# 20 April 2016
#
#####################################################################
majorHashDefine="#define CV_VERSION_MAJOR"
minorHashDefine="#define CV_VERSION_MINOR"
revisionHashDefine="#define CV_VERSION_REVISION"
statusHashDefine="#define CV_VERSION_STATUS"
#Test build directory exists
if [ ! -n "$2" ] || [ ! -d $2 ];then
echo "Build directory not specified or does not exist!"
exit 1
fi
if [ -n "$1" ] && [ -e $1 ];then
minorVersion=$(grep "${minorHashDefine}" $1 | grep -o ".$")
majorVersion=$(grep "${majorHashDefine}" $1 | grep -o ".$")
revision=$(grep "${revisionHashDefine}" $1 | grep -o ".$")
bits=$(getconf LONG_BIT)
architecture=$(arch)
osgiProcessor="Not Set"
case ${architecture} in
x86*)
echo "This is x86 (32 | 64) bit"
case ${bits} in
32)
osgiProcessor="x86"
;;
64)
osgiProcessor="x86_64"
;;
*)
osgiProcessor="Unknown"
esac
;;
arm*)
echo "This is ARM"
byteOrder=$(lscpu | grep -i "byte order")
shopt -s nocasematch
if [[ "${byteOrder}" == *little* ]]; then
osgiProcessor="arm_le"
elif [[ "${byteOrder}}" == *big* ]]; then
osgiProcessor="arm_be"
fi
shopt -u nocasematch
;;
*)
echo "This is unknown architecture"
esac
echo "The version number will be ${majorVersion}.${minorVersion}.${revision}"
echo "opencv.version=${majorVersion}.${minorVersion}.${revision}" > ${2}/${3}
echo "lib.version.string=${majorVersion}${minorVersion}${revision}" >> ${2}/${3}
echo "bits=${bits}" >> ${2}/${3}
echo "architecture=$(arch)" >> ${2}/${3}
echo "osgi.processor=${osgiProcessor}" >> ${2}/${3}
exit 0
else
echo "Could not locate file $1 to determine versioning."
exit 1
fi