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