fix :)
[libfirm] / ir / be / test / makereport.sh
1 #!/bin/sh
2
3 unset LANG LC_ALL LC_COLLATE
4 ECC="eccp"
5 ECC_CFLAGS="${ADDCFLAGS} -O3 -c -D__builtin_memcpy=memcpy -D__builtin_memset=memset -D__builtin_strlen=strlen -D__builtin_strcpy=strcpy -D__builtin_strcmp=strcmp -DNO_TRAMPOLINES"
6 GCC_CFLAGS="-O3 -g -fomit-frame-pointer"
7 LINKFLAGS="-lm"
8 TIMEOUT_COMPILE=300
9 TIMEOUT_RUN=30
10
11 CFILES="*.c"
12 OUTPUTDIR="stats-`date +%d.%m.%y`"
13
14 mkdir -p build_firm
15 mkdir -p build_gcc
16 mkdir -p $OUTPUTDIR
17
18 XMLRES=$OUTPUTDIR/result.xml
19 cat > $XMLRES << __END__
20 <?xml version="1.0"?>
21 <results>
22     <environment>
23         <ECC_CFLAGS>${ECC_CFLAGS}</ECC_CFLAGS>
24         <GCC_CFLAGS>${GCC_CFLAGS}</GCC_CFLAGS>
25     </environment>
26 __END__
27
28 # so endless apps stop at some point...
29 #ulimit -t2
30
31 basedir=`pwd`
32
33 DIRS=". gcc-testsuite gcc-testsuite/ieee langshootout"
34 test -n "$1" && DIRS="$1"
35
36 for dir in $DIRS; do
37         curdir=$basedir/$dir
38     echo "<section name=\"$curdir/\">" >> $XMLRES
39 for file in $curdir/$CFILES; do
40     COMPILE_RES="ok"
41     LINK_RES="omitted"
42     GCC_RES="ok"
43     GCC_RUN_RES="omitted"
44     FIRM_RUN_RES="omitted"
45     DIFF_RES="omitted"
46
47     name="`basename $file .c`"
48     res="$OUTPUTDIR/buildresult_$name.txt"
49     echo "Building $name"
50     echo "Results for $name" > $res
51     echo "*** ECC/FIRM Compile" >> $res
52     CMD="ulimit -t${TIMEOUT_COMPILE} ; ${ECC} ${ECC_CFLAGS} $file"
53     echo "$CMD" >> $res
54     /bin/bash -c "ulimit -t${TIMEOUT_COMPILE} ; ${ECC} ${ECC_CFLAGS} $file" >> $res 2>&1 || COMPILE_RES="failed"
55
56     if [ ${COMPILE_RES} == "ok" ]; then
57         LINK_RES="ok"
58         CMD="mv $curdir/$name.s build_firm/$name.s"
59         echo "$CMD" >> $res
60         $CMD >> $res 2>&1
61         echo "*** Linking" >> $res
62         CMD="${ECC} build_firm/$name.s ${LINKFLAGS} -o build_firm/$name.exe"
63         echo "$CMD" >> $res
64         $CMD >> $res 2>&1 || LINK_RES="failed"
65     fi
66
67     echo "*** GCC Compile" >> $res
68     CMD="gcc ${GCC_CFLAGS} $file ${LINKFLAGS} -o build_gcc/$name.exe"
69     echo "$CMD" >> $res
70     $CMD >> $res 2>&1 || GCC_RES="failed"
71
72     if [ ${GCC_RES} = "ok" ]; then
73         GCC_RUN_RES="ok"
74
75         echo "*** Run GCC" >> $res
76         CMD="ulimit -t${TIMEOUT_RUN} ; build_gcc/$name.exe > $OUTPUTDIR/result_gcc_$name.txt 2>&1"
77         echo "$CMD" >> $res
78         /bin/bash -c "ulimit -t${TIMEOUT_RUN} ; build_gcc/$name.exe" > $OUTPUTDIR/result_gcc_$name.txt 2>&1 || GCC_RUN_RES="failed"
79     fi
80
81     if [ ${LINK_RES} = "ok" ]; then
82         FIRM_RUN_RES="ok"
83
84         echo "*** Run Firm" >> $res
85         CMD="ulimit -t${TIMEOUT_RUN} ; build_firm/$name.exe > $OUTPUTDIR/result_gcc_$name.txt 2>&1"
86         echo "$CMD" >> $res
87         /bin/bash -c "ulimit -t${TIMEOUT_RUN} ; build_firm/$name.exe" > $OUTPUTDIR/result_firm_$name.txt 2>&1 || FIRM_RUN_RES="failed"
88     fi
89
90     if [ ${GCC_RUN_RES} = "ok" -a ${FIRM_RUN_RES} = "ok" ]; then
91         DIFF_RES="ok"
92
93         echo "*** Compare Results" >> $res
94         CMD="diff -u $OUTPUTDIR/result_gcc_$name.txt $OUTPUTDIR/result_firm_$name.txt"
95         $CMD > $OUTPUTDIR/result_diff_$name.txt 2>&1 || DIFF_RES="failed"
96     fi
97
98     cat >> $XMLRES << __END__
99     <result name="$name">
100         <compile>$COMPILE_RES</compile>
101         <link>$LINK_RES</link>
102         <gcc_compile>$GCC_RES</gcc_compile>
103         <gcc_run>$GCC_RUN_RES</gcc_run>
104         <firm_run>$FIRM_RUN_RES</firm_run>
105         <diff>$DIFF_RES</diff>
106     </result>
107 __END__
108 done
109     echo "</section>" >> $XMLRES
110 done
111
112 echo "</results>" >> $XMLRES
113
114 xsltproc --output $OUTPUTDIR/index.html makehtml.xslt $XMLRES
115
116 # maybe execute custom actions after result has been generated
117 [ -e after_compile.sh ] && ./after_compile.sh "$OUTPUTDIR"