blob: 8819caff4226ea236f7da35d42e0c79e630fc03f (
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
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
#!/bin/bash
# Set defaults
if test x"${debug}" = x"true"; then
export CONFIG_SHELL="/bin/bash -x"
else
export CONFIG_SHELL="/bin/bash"
fi
user_workspace="$PWD"
OPTS="`getopt -o w:t:h -l tarball:,workspace:,help`"
while test $# -gt 0; do
echo 1 = "$1"
case $1 in
-w|--workspace) user_workspace=$2 ;;
-t|--tarball) tarball=$2 ;;
-h|--help) usage ;;
--) break ;;
esac
shift
done
if test -e ${user_workspace}; then
cat << EOF > ${user_workspace}/BUILD-INFO.txt
Format-Version: 0.5
Files-Pattern: *
License-Type: open
EOF
fi
testdir=${user_workspace}/_test
# Create a test directory
if test ! -d ${testdir}; then
mkdir -p ${testdir}
fi
# Use the newly created build directory
cd ${testdir}
file=`basename ${tarball}`
tarball_name="${testdir}/${file}"
protocol="`echo ${tarball} | cut -d ':' -f 1`"
if test x${protocol} = x"file"; then
tarball_name="`echo ${tarball} | sed -e 's:file./::'`"
else
# Download the toolchain binary tarball
if test ! -e ${testdir}/${file}; then
wget ${tarball} --directory=${testdir} --progress=dot:giga
if test $? -gt 0; then
echo "ERROR: ${tarball} doesn't exist on remote machine!"
exit 1
fi
fi
fi
# Extract the tarball
dir="`echo ${file} | sed -e 's:.tar.xz::'`"
tar Jxf ${tarball_name} --directory=${testdir}
if test $? -gt 0; then
echo "ERROR: ${tarball} is corrupted!"
exit 1
fi
# Create a simple test case
if test ! -e ${testdir}/hello.cpp; then
# Create the usual Hello World! test case
cat <<EOF > ${testdir}/hello.cpp
#include <iostream>
int
main(int argc, char *argv[])
{
std::cout << "Hello World!" << std::endl;
}
EOF
fi
target="`echo ${dir} | egrep -o '(arm|aarch64)[_0-9a-z-]*' | sed -e 's:-\$::'`"
win32="`echo {$file} | grep -c mingw`"
# Bare metal builds use a specs file
# Do work for ARM : rdpmon.spec dimon.spec linux.specs profile-ve.spec
# aprofile-validation.specs
# Don't work for ARM : iq80310.spec nano.specs pid.specs edboot.spec
baremetal="`echo ${target} | egrep -c "\-eabi|\-elf"`"
if test ${baremetal} -gt 0; then
rdimon="`find ${testdir} -name rdimon.specs | head -1`"
specs="${rdimon:+--specs=${rdimon}}"
fi
# Compile the test case
rm -f ${testdir}/hi
params="-o ${testdir}/hi ${testdir}/hello.cpp ${specs:-} -static"
if test ${win32} -eq 0; then
${testdir}/${dir}/bin/${target}-c++ ${params}
else
wine ${testdir}/${dir}/bin/${target}-c++ ${params}
fi
# See if the compilation worked
if test -e ${testdir}/hi; then
echo Compilation of hello.cpp: SUCCESS
exit 0
else
echo Compilation of hello.cpp: FAILED
exit 1
fi
|