Added environment variable for the compiler binary
[libfirm] / ir / be / test / makereport.sh
1 EDG_BIN="edg"
2 EDG_CFLAGS="--c --gnu=400002 -I/usr/lib/gcc-lib/i686-pc-linux-gnu/4.1.1/include"
3 GCC_CFLAGS="-O3 -g -fomit-frame-pointer"
4 LINKFLAGS="-lm"
5
6 CFILES="*.c"
7 OUTPUTDIR="stats-`date +%d.%m.%y`"
8
9 mkdir -p build_firm
10 mkdir -p build_gcc
11 mkdir -p $OUTPUTDIR
12
13 XMLRES=$OUTPUTDIR/result.xml
14 cat > $XMLRES << __END__
15 <?xml version="1.0"?>
16 <results>
17     <environment>
18         <EDG_CFLAGS>${EDG_CFLAGS}</EDG_CFLAGS>
19         <GCC_CFLAGS>${GCC_CFLAGS}</GCC_CFLAGS>
20     </environment>
21 __END__
22
23 # so endless apps stop at some point...
24 #ulimit -t2
25
26 for file in ${CFILES}; do
27     COMPILE_RES="ok"
28     LINK_RES="omitted"
29     GCC_RES="ok"
30     GCC_RUN_RES="omitted"
31     FIRM_RUN_RES="omitted"
32     DIFF_RES="omitted"
33
34     name="`basename $file .c`"
35     res="$OUTPUTDIR/buildresult_$name.txt"
36     echo "Building $name"
37     echo "Results for $name" > $res
38     echo "*** EDG/FIRM Compile" >> $res
39     CMD="${EDG_BIN} ${EDG_CFLAGS} $file"
40     echo "$CMD" >> $res
41     $CMD >> $res 2>&1 || COMPILE_RES="failed"
42
43     if [ ${COMPILE_RES} == "ok" ]; then
44         LINK_RES="ok"
45         CMD="mv $name.s build_firm/$name.s"
46         echo "$CMD" >> $res
47         $CMD >> $res 2>&1
48         echo "*** Linking" >> $res
49         CMD="gcc build_firm/$name.s ${LINKFLAGS} -o build_firm/$name.exe"
50         echo "$CMD" >> $res
51         $CMD >> $res 2>&1 || LINK_RES="failed"
52     fi
53
54     echo "*** GCC Compile" >> $res
55     CMD="gcc ${GCC_CFLAGS} $file ${LINKFLAGS} -o build_gcc/$name.exe"
56     echo "$CMD" >> $res
57     $CMD >> $res 2>&1 || GCC_RES="failed"
58
59     if [ ${GCC_RES} = "ok" ]; then
60         GCC_RUN_RES="ok"
61
62         echo "*** Run GCC" >> $res
63         CMD="build_gcc/$name.exe > $OUTPUTDIR/result_gcc_$name.txt 2>&1"
64         echo "$CMD" >> $res
65         /bin/bash -c "ulimit -t2 ; build_gcc/$name.exe" > $OUTPUTDIR/result_gcc_$name.txt 2>&1 || GCC_RUN_RES="failed"
66     fi
67
68     if [ ${LINK_RES} = "ok" ]; then
69         FIRM_RUN_RES="ok"
70
71         echo "*** Run Firm" >> $res
72         CMD="build_firm/$name.exe > $OUTPUTDIR/result_gcc_$name.txt 2>&1"
73         echo "$CMD" >> $res
74         /bin/bash -c "ulimit -t2 ; build_firm/$name.exe" > $OUTPUTDIR/result_firm_$name.txt 2>&1 || FIRM_RUN_RES="failed"
75     fi
76
77     if [ ${GCC_RUN_RES} = "ok" -a ${FIRM_RUN_RES} = "ok" ]; then
78         DIFF_RES="ok"
79
80         echo "*** Compare Results" >> $res
81         CMD="diff -u $OUTPUTDIR/result_gcc_$name.txt $OUTPUTDIR/result_firm_$name.txt"
82         $CMD > $OUTPUTDIR/result_diff_$name.txt 2>&1 || DIFF_RES="failed"
83     fi
84
85     cat >> $XMLRES << __END__
86     <result name="$name">
87         <compile>$COMPILE_RES</compile>
88         <link>$LINK_RES</link>
89         <gcc_compile>$GCC_RES</gcc_compile>
90         <gcc_run>$GCC_RUN_RES</gcc_run>
91         <firm_run>$FIRM_RUN_RES</firm_run>
92         <diff>$DIFF_RES</diff>
93     </result>
94 __END__
95 done
96
97 echo "</results>" >> $XMLRES
98
99 xsltproc --output $OUTPUTDIR/index.html makehtml.xslt $XMLRES
100
101 # maybe execute custom actions after result has been generated
102 [ -e after_compile.sh ] && ./after_compile.sh "$OUTPUTDIR"