X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=Robust%2Fsrc%2Fbuildscript;h=1c449c9d63b9d264a3f18100e20a8821700cd578;hb=fa930074d7e690f77c2adefa0d43ac82980f9bf6;hp=1c73bf726b4b30bd08df3a1123ae3bfd015b1ccc;hpb=f385d42656169b5b1be21a8d608140b96de1fb89;p=IRC.git diff --git a/Robust/src/buildscript b/Robust/src/buildscript index 1c73bf72..1c449c9d 100755 --- a/Robust/src/buildscript +++ b/Robust/src/buildscript @@ -1,14 +1,32 @@ #!/bin/bash printhelp() { +echo -robustroot set up the ROBUSTROOT to directory other than default one echo -dsm distributed shared memory +echo -trueprob double - probabiltiy of true branch +echo -dsmcaching -enable caching in dsm runtime +echo -mac distributed shared memory mac support echo -check generate check code echo -dmalloc link in dmalloc echo -recover compile task code echo -specdir directory +echo -printflat print out flat representation +echo -selfloop task - this task cannot self loop forever +echo "-excprefetch methoddescriptor - exclude prefetches for this method (specified as class.method)" echo -taskstate do task state analysis +echo -tagstate do tag state analysis +echo -scheduling do task scheduling +echo -multicore generate multi-core version binary +echo "-numcore set the number of cores (should be used together with -multicore), defaultly set as 1" +echo "-raw generate raw version binary (should be used together with -multicore)" +echo "-interrupt generate raw version binary with interruption (should be used togethere with -raw)" +echo "-rawconfig config raw simulator as 4xn (should be used together with -raw)" +echo "-rawpath print out execute path information for raw version (should be used together with -raw)" +echo -threadsimulate generate multi-thread simulate version binary echo -optional enable optional echo -debug generate debug symbols +echo -prefetch do prefetch analysis +echo -transstats generates transaction stats on commits and aborts echo -webinterface enable web interface echo -runtimedebug printout runtime debug messages echo "-thread use support for multiple threads" @@ -17,21 +35,36 @@ echo "-nooptimize call gcc with -O0 (do not optimize)" echo -curdir directory echo -mainclass class with main method echo -o binary +echo -nojava do not run bristlecone compiler echo -instructionfailures inject code for instructionfailures +echo -profile build with profile options +echo "-enable-assertions execute assert statements during compilation" echo -help help } ROBUSTROOT=~/research/Robust/src +DSMRUNTIME=$ROBUSTROOT/Runtime/DSTM/interface/ REPAIRROOT=~/research/Repair/RepairCompiler/ CURDIR=`pwd` +DSMFLAG=false +NOJAVA=false CHECKFLAG=false RECOVERFLAG=false +MULTICOREFLAG=false +TRANSSTATSFLAG=false +RAWFLAG=false +RAWCONFIG='' +RAWDEBUGFLAG=false +RAWPATHFLAG=false +INTERRUPTFLAG=false +THREADSIMULATEFLAG=false; USEDMALLOC=false THREADFLAG=false SPECDIR=`pwd` SRCFILES='' EXTRAOPTIONS='' MAINFILE='a' +JAVAFORWARDOPTS='' JAVAOPTS='' OPTIONALFLAG=false @@ -47,6 +80,13 @@ if [[ $1 = '-help' ]] then printhelp exit +elif [[ $1 = '-robustroot' ]] +then +ROBUSTROOT="$2" +shift +elif [[ $1 = '-nojava' ]] +then +NOJAVA=true elif [[ $1 = '-o' ]] then MAINFILE="$2" @@ -55,12 +95,68 @@ elif [[ $1 = '-mainclass' ]] then JAVAOPTS="$JAVAOPTS -mainclass $2" shift +elif [[ $1 = '-selfloop' ]] +then +JAVAOPTS="$JAVAOPTS -selfloop $2" +shift +elif [[ $1 = '-excprefetch' ]] +then +JAVAOPTS="$JAVAOPTS -excprefetch $2" +shift elif [[ $1 = '-dsm' ]] then JAVAOPTS="$JAVAOPTS -dsm" +DSMFLAG=true +elif [[ $1 = '-prefetch' ]] +then +JAVAOPTS="$JAVAOPTS -prefetch" +elif [[ $1 = '-transstats' ]] +then +TRANSSTATSFLAG=true +elif [[ $1 = '-printflat' ]] +then +JAVAOPTS="$JAVAOPTS -printflat" +elif [[ $1 = '-trueprob' ]] +then +JAVAOPTS="$JAVAOPTS -trueprob $2" +shift +elif [[ $1 = '-mac' ]] +then +EXTRAOPTIONS="$EXTRAOPTIONS -DMAC" +elif [[ $1 = '-profile' ]] +then +EXTRAOPTIONS="$EXTRAOPTIONS -pg" elif [[ $1 = '-taskstate' ]] then JAVAOPTS="$JAVAOPTS -taskstate" +elif [[ $1 = '-tagstate' ]] +then +JAVAOPTS="$JAVAOPTS -tagstate" +elif [[ $1 = '-scheduling' ]] +then +JAVAOPTS="$JAVAOPTS -scheduling" +elif [[ $1 = '-multicore' ]] +then +MULTICOREFLAG=true +JAVAOPTS="$JAVAOPTS -multicore" +elif [[ $1 = '-numcore' ]] +then +JAVAOPTS="$JAVAOPTS -numcore $2" +shift +elif [[ $1 = '-raw' ]] +then +RAWFLAG=true +JAVAOPTS="$JAVAOPTS -raw" +elif [[ $1 = '-rawconfig' ]] +then +RAWCONFIG="$2" +shift +elif [[ $1 = '-interrupt' ]] +then +INTERRUPTFLAG=true +elif [[ $1 = '-threadsimulate' ]] +then +THREADSIMULATEFLAG=true elif [[ $1 = '-optional' ]] then JAVAOPTS="$JAVAOPTS -optional" @@ -82,6 +178,9 @@ elif [[ $1 = '-check' ]] then CHECKFLAG=true JAVAOPTS="$JAVAOPTS -conscheck" +elif [[ $1 = '-enable-assertions' ]] +then +JAVAFORWARDOPTS="$JAVAFORWARDOPTS -ea" elif [[ $1 = '-specdir' ]] then cd $2 @@ -90,10 +189,17 @@ cd $CURDIR shift elif [[ $1 = '-debug' ]] then +RAWDEBUGFLAG=true EXTRAOPTIONS="$EXTRAOPTIONS -g" +elif [[ $1 = '-rawpath' ]] +then +RAWPATHFLAG=true elif [[ $1 = '-runtimedebug' ]] then -EXTRAOPTIONS="$EXTRAOPTIONS -DDEBUG" +EXTRAOPTIONS="$EXTRAOPTIONS -DCHECKTA" +elif [[ $1 = '-dsmcaching' ]] +then +EXTRAOPTIONS="$EXTRAOPTIONS -DCACHE" elif [[ $1 = '-nooptimize' ]] then EXTRAOPTIONS="$EXTRAOPTIONS -O0" @@ -130,9 +236,24 @@ fi # Build bristlecone/java sources -java -cp $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main -classlibrary \ +if $MULTICOREFLAG +then +if ! java $JAVAFORWARDOPTS -classpath $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main -classlibrary \ +$ROBUSTROOT/ClassLibrary/ -dir $BUILDDIR \ +$JAVAOPTS $SRCFILES +then exit $? +fi +else +#if ! java -Xms5m -Xmx100m $JAVAFORWARDOPTS -classpath $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main -classlibrary \ +if ! $NOJAVA +then +if ! java -Xms50m -Xmx600m $JAVAFORWARDOPTS -classpath $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main -classlibrary \ $ROBUSTROOT/ClassLibrary/ -dir $BUILDDIR -precise \ $JAVAOPTS $SRCFILES +then exit $? +fi +fi +fi # Build all of the consistency specs @@ -165,28 +286,100 @@ cd $BUILDDIR/specdir echo > $BUILDDIR/checkers.h for i in `cat $BUILDDIR/specs` do -gcc -O0 -g -c $i\_aux.c +gcc -O0 -g -fbounds-check -c $i\_aux.c echo \#include \"specdir\/$i\_aux.h\" >> $BUILDDIR/checkers.h done fi # CHECKFLAG #build and link everything +if $RAWFLAG +then # RAWFLAG +RAWDIR="$CURDIR/raw" +MAKEFILE="../Makefile.raw" +mkdir $RAWDIR +cd $RAWDIR +make clean +rm ./* + +export RAWRGCCFLAGS="-DTASK -DMULTICORE -DRAW" + +if $RAWPATHFLAG +then # print path +RAWRGCCFLAGS="${RAWRGCCFLAGS} -DRAWPATH" +fi + +if $RAWDEBUGFLAG +then #debug version +RAWRGCCFLAGS="${RAWRGCCFLAGS} -DRAWDEBUG" +fi + +if $INTERRUPTFLAG +then #INTERRUPT version +MAKEFILE="$MAKEFILE.i" +RAWRGCCFLAGS="${RAWRGCCFLAGS} -DINTERRUPT" +fi #INTERRUPT version + +MAKEFILE="$MAKEFILE.$RAWCONFIG" + +cp $MAKEFILE ./Makefile +cp ../Runtime/*.c ./ +cp ../Runtime/*.h ./ +cp ../Runtime/*.S ./ +cp ../Runtime/*.s ./ +cp ../tmpbuilddirectory/*.c ./ +cp ../tmpbuilddirectory/*.h ./ + +make + +else #!RAWFLAG cd $CURDIR INCLUDES="$INCLUDES -I$ROBUSTROOT/Runtime -I. -IRuntime/include \ -I$BUILDDIR" -FILES="$ROBUSTROOT/Runtime/runtime.c $ROBUSTROOT/Runtime/task.c \ +if $MULTICOREFLAG +then +RUNTIMEFILE="$ROBUSTROOT/Runtime/multicoreruntime.c $ROBUSTROOT/Runtime/multicoretask.c" +else +RUNTIMEFILE="$ROBUSTROOT/Runtime/runtime.c $ROBUSTROOT/Runtime/task.c" +fi + +FILES="$RUNTIMEFILE \ $ROBUSTROOT/Runtime/file.c $ROBUSTROOT/Runtime/Queue.c \ $ROBUSTROOT/Runtime/SimpleHash.c $ROBUSTROOT/Runtime/option.c \ +$ROBUSTROOT/Runtime/ObjectHash.c \ $ROBUSTROOT/Runtime/garbage.c $ROBUSTROOT/Runtime/socket.c \ +$ROBUSTROOT/Runtime/math.c \ $ROBUSTROOT/Runtime/GenericHashtable.c $ROBUSTROOT/Runtime/object.c" +if $DSMFLAG +then +EXTRAOPTIONS="$EXTRAOPTIONS -lpthread -DCOMPILER -DDSTM -I$DSMRUNTIME" +if $TRANSSTATSFLAG +then +EXTRAOPTIONS="$EXTRAOPTIONS -lpthread -DTRANSSTATS -DCOMPILER -DDSTM -I$DSMRUNTIME" +fi +FILES="$FILES $DSMRUNTIME/trans.c $DSMRUNTIME/mcpileq.c $DSMRUNTIME/objstr.c $DSMRUNTIME/dstm.c $DSMRUNTIME/mlookup.c $DSMRUNTIME/clookup.c $DSMRUNTIME/llookup.c $DSMRUNTIME/threadnotify.c $DSMRUNTIME/dstmserver.c $DSMRUNTIME/plookup.c $DSMRUNTIME/ip.c $DSMRUNTIME/queue.c $DSMRUNTIME/prelookup.c $DSMRUNTIME/machinepile.c $DSMRUNTIME/localobjects.c $ROBUSTROOT/Runtime/thread.c $DSMRUNTIME/sockpool.c $DSMRUNTIME/addUdpEnhance.c $DSMRUNTIME/signal.c $DSMRUNTIME/gCollect.c $DSMRUNTIME/addPrefetchEnhance.c $DSMRUNTIME/dsmlock.c" +fi + if $RECOVERFLAG then EXTRAOPTIONS="$EXTRAOPTIONS -DTASK" -FILES="$FILES tmpbuilddirectory/taskdefs.c $ROBUSTROOT/Runtime/checkpoint.c" +if $MULTICOREFLAG +then +EXTRAOPTIONS="$EXTRAOPTIONS -DMULTICORE" +fi +FILES="$FILES tmpbuilddirectory/taskdefs.c $ROBUSTROOT/Runtime/checkpoint.c $ROBUSTROOT/Runtime/chash.c" +if $RAWFLAG +then +EXTRAOPTIONS="$EXTRAOPTIONS -DRAW" +fi +if $THREADSIMULATEFLAG +then +# -lpthread for pthread functions, -lrt for message queue functions +EXTRAOPTIONS="$EXTRAOPTIONS -DTHREADSIMULATE -lpthread -lrt" +fi fi if $OPTIONALFLAG @@ -211,8 +404,16 @@ then EXTRAOPTIONS="$EXTRAOPTIONS -ldmalloc -DDMALLOC" fi +if $MULTICOREFLAG +then +gcc $INCLUDES $EXTRAOPTIONS \ +tmpbuilddirectory/methods.c $FILES -lm -o $MAINFILE.bin +else gcc $INCLUDES $EXTRAOPTIONS -DPRECISE_GC \ -tmpbuilddirectory/methods.c $FILES -o $MAINFILE.bin +tmpbuilddirectory/methods.c $FILES -lm -o $MAINFILE.bin +fi + +fi #!RAWFLAG exit