6 if test "$1" != "--recursive-hack"; then
7 "$0" --recursive-hack "$@"
14 if [ "$ECC" = "" ]; then
17 #EXEC_PREFIX="qemu-arm"
18 #ECC="/ben/beck/ipd/bin/eccp -march=arm -bra-chordal-co-algo=heur"
19 ECC_CFLAGS="${ADDCFLAGS} -v -O3 -ffp-strict"
21 GCC_CFLAGS="-O0 -Itcc -fp-model precise"
28 OUTPUTDIR="stats-`date +%y.%m.%d`"
34 XMLRES=$OUTPUTDIR/result.xml
35 cat > $XMLRES << __END__
39 <ECC_CFLAGS>${ECC_CFLAGS}</ECC_CFLAGS>
40 <GCC_CFLAGS>${GCC_CFLAGS}</GCC_CFLAGS>
44 # so endless apps stop at some point...
50 DIRS=". langshootout ack"
66 for file in $FILES; do
67 curdir="`dirname $file`"
72 FIRM_RUN_RES="omitted"
74 FILE_FLAGS=`awk '/\/\\*\\$ .* \\$\\*\// { for (i = 2; i < NF; ++i) printf "%s ", $i }' $file`
76 name="`basename $file .c`"
77 obj_name="build_firm/$name.o"
78 res="$OUTPUTDIR/buildresult_$name.txt"
79 echo -n "Building $name"
80 echo "Results for $name" > $res
81 echo "*** ECC/FIRM Compile" >> $res
82 CMD="ulimit -t ${TIMEOUT_COMPILE} ; ${ECC} -c -o ${obj_name} ${ECC_CFLAGS} ${FILE_FLAGS} ${file}"
84 /bin/sh -c "$CMD" >> $res 2>&1 || { COMPILE_RES="failed"; echo -n " ... FAILED"; }
86 if [ ${COMPILE_RES} = "ok" ]; then
88 echo "*** Linking" >> $res
89 CMD="${ECC_LINK} $obj_name ${LINKFLAGS} -o build_firm/$name.exe"
91 $CMD >> $res 2>&1 || { LINK_RES="failed"; echo -n " ... FAILED"; }
94 echo "*** GCC Compile" >> $res
95 CMD="${GCC} ${GCC_CFLAGS} ${FILE_FLAGS} $file ${LINKFLAGS} -o build_gcc/$name.exe"
97 /bin/sh -c "$CMD" >> $res 2>&1 || { GCC_RES="failed"; echo -n " ... FAILED"; }
99 if [ ${GCC_RES} = "ok" ]; then
102 echo "*** Run GCC" >> $res
103 CMD="ulimit -t ${TIMEOUT_RUN} ; build_gcc/$name.exe > $OUTPUTDIR/result_gcc_$name.txt 2>&1"
105 /bin/sh -c "$CMD" > $OUTPUTDIR/result_gcc_$name.txt 2>&1 || GCC_RUN_RES="failed"
108 if [ ${LINK_RES} = "ok" ]; then
111 echo "*** Run Firm" >> $res
112 CMD="ulimit -t ${TIMEOUT_RUN} ; ${EXEC_PREFIX} build_firm/$name.exe > $OUTPUTDIR/result_firm_$name.txt 2>&1"
114 /bin/sh -c "$CMD" > $OUTPUTDIR/result_firm_$name.txt 2>&1 || { FIRM_RUN_RES="failed"; echo -n " ... FAILED"; }
117 if [ ${GCC_RUN_RES} = "ok" -a ${FIRM_RUN_RES} = "ok" ]; then
120 echo "*** Compare Results" >> $res
121 CMD="diff -u $OUTPUTDIR/result_gcc_$name.txt $OUTPUTDIR/result_firm_$name.txt"
122 $CMD > $OUTPUTDIR/result_diff_$name.txt 2>&1 || { DIFF_RES="failed"; echo -n " ... FAILED"; }
126 cat >> $XMLRES << __END__
127 <result name="$name">
128 <compile>$COMPILE_RES</compile>
129 <link>$LINK_RES</link>
130 <gcc_compile>$GCC_RES</gcc_compile>
131 <gcc_run>$GCC_RUN_RES</gcc_run>
132 <firm_run>$FIRM_RUN_RES</firm_run>
133 <diff>$DIFF_RES</diff>
138 echo "</results>" >> $XMLRES
140 xsltproc --output $OUTPUTDIR/index.html makehtml.xslt $XMLRES
142 # maybe execute custom actions after result has been generated
143 [ -e after_compile.sh ] && ./after_compile.sh "$OUTPUTDIR"