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