]> rtime.felk.cvut.cz Git - arc.git/blob - scripts/compile_examples.sh
Regenerated examples. Removed linux board. Added default cross compiler for TI.
[arc.git] / scripts / compile_examples.sh
1 #!/bin/bash
2
3 if [[ $1 == '-h' || $1 == '-help' || $1 == '--h' || $1 == '--help' ]]; then
4         echo ""
5         echo "Usage: $0 [board1 board2 ...]"
6         echo ""
7         echo "       board1 board2 ... "
8         echo "         Boards to build for (optional)"
9         echo "         If no boards are given, all boards will be built."
10         exit 0
11 fi
12
13 ARC_DIR=../
14 EXAMPLE_DIR=${ARC_DIR}/examples/
15 COMPILER_DIR=/opt/compilers/
16 OUTPUT=test_output.xml
17 BUILDOUTTMP=tmp_out.txt
18
19
20 function failedTest {
21 echo "<FailedTest id=\"${1}\"> \
22   <Name>${2}</Name> \
23   <Message>${3}</Message> \
24 </FailedTest>" >> $OUTPUT
25
26 #       echo "<Location>"
27 #       echo "<File>c:/ArcticStudio/workspace/arc-tests/ComTests/com_test.c</File>"
28 #       echo "<Line>444</Line>"
29 #       echo "</Location>"
30 #       echo "<Message>UPNotificationCalled == getNumberOfSignalsInPdu(IPduId) &amp;&amp; 0</Message>"
31 }
32
33 function successfulTest {
34 echo "<Test id=\"${1}\"> \
35   <Name>${2}</Name> \
36 </Test>" >> $OUTPUT
37 }
38
39 function warningTest {
40 echo "<Test id=\"${1}\"> \
41   <Name>${2}</Name> \
42   <Warning>${3}</Warning>
43 </Test>" >> $OUTPUT
44 }
45
46 cl_args=$@
47
48 function inArguments {
49         board=$1
50         for cl_arg in $cl_args; do
51                 if [ "$cl_arg" == "$board" ]; then
52                         return 1
53                 fi
54         done
55         return 0
56 }
57
58 function shouldBuild {
59         board=$1
60         if [ -z "$cl_args" ]; then
61                 # No args; Build all
62                 return 1
63         else
64                 # Check if told to build for board
65                 inArguments "$board"; ret=$?
66                 return $ret
67         fi
68 }
69
70 echo "<?xml version=\"1.0\" encoding='utf8' standalone='yes' ?> \
71 <?xml-stylesheet type=\"text/xsl\" href=\"unittests.xsl\" ?> \
72 <TestRuns> \
73 <TestRun> \
74 <CompileExamples>" > $OUTPUT
75
76
77 LOGFILE=compile_examples.log
78 if [ -f $LOGFILE ]; then
79         echo "Removing old log"
80         rm -f $ $LOGFILE
81 fi
82
83 TEST_ID=1
84 for EXAMPLE in `ls $EXAMPLE_DIR`; do
85         for BOARD in `ls ${EXAMPLE_DIR}${EXAMPLE}/config`; do
86                 shouldBuild "$BOARD"; build=$?
87                 if [ $build -eq 1 ]; then
88                         C=`grep $BOARD compilers.txt`
89                         COMPILER=${COMPILER_DIR}${C#$BOARD:}
90         
91                         TEST_NAME=${EXAMPLE}-${BOARD}
92         
93                         if [ -x "${COMPILER}gcc" ]; then
94                                 BUILD_FILE=${EXAMPLE}_${BOARD}.elf 
95                                 make -C ${ARC_DIR} \
96                                         CROSS_COMPILE=$COMPILER \
97                                         BOARDDIR=$BOARD \
98                                         BDIR=examples/$EXAMPLE \
99                                         build-exe-y=${BUILD_FILE} \
100                                         clean all 2>&1 | tee -a $LOGFILE
101         
102                                 if [ -a ${ARC_DIR}/binaries/${BUILD_FILE} ]; then
103                                         successfulTest $TEST_ID $TEST_NAME
104                                 else
105                                         BUILDOUT=`cat $BUILDOUTTMP`
106                                         failedTest $TEST_ID $TEST_NAME "See console output for information. (compile_examples.log)"
107                                 fi
108                         else
109                                 warningTest $TEST_ID $TEST_NAME "No compiler found"
110                         fi
111                         let TEST_ID=TEST_ID+1
112                 fi
113         done
114 done
115
116 echo "</CompileExamples> \
117 </TestRun> \
118 </TestRuns>" >> $OUTPUT
119