#!/bin/bash # arguments are: # 1 Name of executable # 2 Directory containing specs # 3-n List of class files to compile ROBUSTROOT=~/research/Robust/src REPAIRROOT=~/research/Repair/RepairCompiler/ CURDIR=`pwd` BUILDDIR=$CURDIR/tmpbuilddirectory MAINFILE=$1 shift cd $1 SPECDIR=`pwd` cd $CURDIR shift mkdir $BUILDDIR java -cp $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main -classlibrary \ $ROBUSTROOT/ClassLibrary/ -dir $BUILDDIR -struct $MAINFILE -conscheck \ -struct structfile -task $@ # Build all of the consistency specs cd $SPECDIR mkdir $BUILDDIR/specdir cp $REPAIRROOT/MCC/CRuntime/* $BUILDDIR/specdir echo > $BUILDDIR/specs # compile specs into C code for i in * do if [ "$i" != "CVS" ] then cd $SPECDIR/$i cat $BUILDDIR/structfile.struct $i.label > $i.struct java -cp $REPAIRROOT/:. MCC.Compiler -name $i -checkonly $i ls cp size.[c,h] $BUILDDIR/specdir cp $i.c $i\_aux.[c,h] $BUILDDIR/specdir echo $i >> $BUILDDIR/specs fi done #compile C code cd $BUILDDIR/specdir ./buildrobust echo > $BUILDDIR/checkers.h for i in `cat $BUILDDIR/specs` do gcc -O0 -g -c $i\_aux.c echo \#include \"specdir\/$i\_aux.h\" >> $BUILDDIR/checkers.h done #build and link everything cd $CURDIR gcc -I$ROBUSTROOT/Runtime -I. -I$BUILDDIR/specdir \ -IRuntime/include -I$BUILDDIR -O0 -DBOEHM_GC -DCONSCHECK \ -LRuntime/lib/ -lgc -DTASK -g tmpbuilddirectory/methods.c \ tmpbuilddirectory/taskdefs.c $ROBUSTROOT/Runtime/runtime.c \ $ROBUSTROOT/Runtime/file.c \ $ROBUSTROOT/Runtime/socket.c \ $ROBUSTROOT/Runtime/Queue.c $ROBUSTROOT/Runtime/SimpleHash.c \ $ROBUSTROOT/Runtime/checkpoint.c \ $ROBUSTROOT/Runtime/option.c \ $ROBUSTROOT/Runtime/GenericHashtable.c $BUILDDIR/specdir/*.o -o \ $MAINFILE.bin