6 if test "$1" != "--recursive-hack"; then
7 "$0" --recursive-hack "$@"
14 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"
16 GCC_CFLAGS="-O0 -Itcc"
22 OUTPUTDIR="stats-`date +%y.%m.%d`"
28 XMLRES=$OUTPUTDIR/result.xml
29 cat > $XMLRES << __END__
33 <ECC_CFLAGS>${ECC_CFLAGS}</ECC_CFLAGS>
34 <GCC_CFLAGS>${GCC_CFLAGS}</GCC_CFLAGS>
38 # so endless apps stop at some point...
43 DIRS=". langshootout ack gcc-testsuite gcc-testsuite/ieee"
44 test -n "$1" && DIRS="$1"
48 echo "<section name=\"$curdir/\">" >> $XMLRES
49 for file in $curdir/$CFILES; do
54 FIRM_RUN_RES="omitted"
57 name="`basename $file .c`"
58 res="$OUTPUTDIR/buildresult_$name.txt"
60 echo "Results for $name" > $res
61 echo "*** ECC/FIRM Compile" >> $res
62 CMD="ulimit -t${TIMEOUT_COMPILE} ; ${ECC} ${ECC_CFLAGS} $file"
64 /bin/bash -c "ulimit -t${TIMEOUT_COMPILE} ; ${ECC} ${ECC_CFLAGS} $file" >> $res 2>&1 || COMPILE_RES="failed"
66 if [ ${COMPILE_RES} == "ok" ]; then
68 CMD="mv $curdir/$name.s build_firm/$name.s"
71 echo "*** Linking" >> $res
72 CMD="${ECC} build_firm/$name.s ${LINKFLAGS} -o build_firm/$name.exe"
74 $CMD >> $res 2>&1 || LINK_RES="failed"
77 echo "*** GCC Compile" >> $res
78 CMD="${GCC} ${GCC_CFLAGS} $file ${LINKFLAGS} -o build_gcc/$name.exe"
80 $CMD >> $res 2>&1 || GCC_RES="failed"
82 if [ ${GCC_RES} = "ok" ]; then
85 echo "*** Run GCC" >> $res
86 CMD="ulimit -t${TIMEOUT_RUN} ; build_gcc/$name.exe > $OUTPUTDIR/result_gcc_$name.txt 2>&1"
88 /bin/bash -c "ulimit -t${TIMEOUT_RUN} ; build_gcc/$name.exe" > $OUTPUTDIR/result_gcc_$name.txt 2>&1 || GCC_RUN_RES="failed"
91 if [ ${LINK_RES} = "ok" ]; then
94 echo "*** Run Firm" >> $res
95 CMD="ulimit -t${TIMEOUT_RUN} ; build_firm/$name.exe > $OUTPUTDIR/result_gcc_$name.txt 2>&1"
97 /bin/bash -c "ulimit -t${TIMEOUT_RUN} ; build_firm/$name.exe" > $OUTPUTDIR/result_firm_$name.txt 2>&1 || FIRM_RUN_RES="failed"
100 if [ ${GCC_RUN_RES} = "ok" -a ${FIRM_RUN_RES} = "ok" ]; then
103 echo "*** Compare Results" >> $res
104 CMD="diff -u $OUTPUTDIR/result_gcc_$name.txt $OUTPUTDIR/result_firm_$name.txt"
105 $CMD > $OUTPUTDIR/result_diff_$name.txt 2>&1 || DIFF_RES="failed"
108 cat >> $XMLRES << __END__
109 <result name="$name">
110 <compile>$COMPILE_RES</compile>
111 <link>$LINK_RES</link>
112 <gcc_compile>$GCC_RES</gcc_compile>
113 <gcc_run>$GCC_RUN_RES</gcc_run>
114 <firm_run>$FIRM_RUN_RES</firm_run>
115 <diff>$DIFF_RES</diff>
119 echo "</section>" >> $XMLRES
122 echo "</results>" >> $XMLRES
124 xsltproc --output $OUTPUTDIR/index.html makehtml.xslt $XMLRES
126 # maybe execute custom actions after result has been generated
127 [ -e after_compile.sh ] && ./after_compile.sh "$OUTPUTDIR"