|  | #!/usr/bin/env bash | 
|  |  | 
|  | # Script to do performance testing. | 
|  |  | 
|  | # Invocation | 
|  | # check_performance SRC_DIR BUILD_DIR | 
|  |  | 
|  | # 1: variables | 
|  | # | 
|  | SRC_DIR=$1 | 
|  | BUILD_DIR=$2 | 
|  |  | 
|  | # Now that we've successfully translated the numerical option into | 
|  | # a symbolic one, we can safely ignore it. | 
|  | shift | 
|  |  | 
|  | # This has been true all along.  Found out about it the hard way... | 
|  | case $BASH_VERSION in | 
|  | 1*) | 
|  | echo 'You need bash 2.x to run check_performance.  Exiting.'; | 
|  | exit 1 ;; | 
|  | *)   ;; | 
|  | esac | 
|  |  | 
|  | flags_script=$BUILD_DIR/scripts/testsuite_flags | 
|  | INCLUDES=`$flags_script --build-includes` | 
|  | PCH_FLAGS=`$flags_script --cxxpchflags` | 
|  | FLAGS=`$flags_script --cxxflags` | 
|  | THREAD_FLAG='-pthread' | 
|  | COMPILER=`$flags_script --build-cxx` | 
|  | SH_FLAG="-Wl,--rpath -Wl,$BUILD_DIR/../../gcc \ | 
|  | -Wl,--rpath -Wl,$BUILD_DIR/src/.libs" | 
|  | ST_FLAG="-static" | 
|  | LINK=$SH_FLAG | 
|  | CXX="$COMPILER $INCLUDES $FLAGS -std=gnu++11 $CXXFLAGS $LINK" | 
|  | LIBS="./libtestc++.a" | 
|  | TESTS_FILE="testsuite_files_performance" | 
|  |  | 
|  | echo CXX is $CXX | 
|  |  | 
|  | for NAME in `cat $TESTS_FILE` | 
|  | do | 
|  | RUN=true | 
|  | TESTNAME=$SRC_DIR/testsuite/$NAME | 
|  | FILE_NAME="`basename $NAME`" | 
|  | FILE_NAME="`echo $FILE_NAME | sed 's/.cc//g'`" | 
|  | ORIG_CXX="$CXX" | 
|  | CXX="$CXX `sed -n 's/.* STD=/-std=/p' $TESTNAME`" | 
|  |  | 
|  | # TEST_S == single thread | 
|  | # TEST_B == do both single and multi-thread | 
|  | # TEST_T == multi-thread | 
|  | for CYCLE in `sed -n 's,.*\(TEST_[SB][0-9]*\)$,\1,p' $TESTNAME` | 
|  | do | 
|  | RUN=false | 
|  | echo $NAME $CYCLE | 
|  | EXE_NAME="`echo $FILE_NAME-$CYCLE.exe`" | 
|  | $CXX -DNOTHREAD -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME | 
|  | if [ -f $EXE_NAME ]; then | 
|  | ./$EXE_NAME | 
|  | else | 
|  | echo "compile error:" | 
|  | echo "$CXX -DNOTHREAD -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME" | 
|  | fi | 
|  | done | 
|  |  | 
|  | for CYCLE in `sed -n 's,.*\(TEST_[TB][0-9]*\)$,\1,p' $TESTNAME` | 
|  | do | 
|  | RUN=false | 
|  | echo $NAME $CYCLE thread | 
|  | EXE_NAME="`echo $FILE_NAME-$CYCLE.exe`" | 
|  | $CXX $THREAD_FLAG -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME | 
|  | if [ -f $EXE_NAME ]; then | 
|  | ./$EXE_NAME | 
|  | else | 
|  | echo "compile error:" | 
|  | echo "$CXX $THREAD_FLAG -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME" | 
|  | fi | 
|  | done | 
|  |  | 
|  | if $RUN; then | 
|  | echo $NAME | 
|  | EXE_NAME="`echo $FILE_NAME.exe`" | 
|  | $CXX $TESTNAME $LIBS -o $EXE_NAME | 
|  | if [ -f $EXE_NAME ]; then | 
|  | ./$EXE_NAME >& tmp.$FILE_NAME | 
|  | else | 
|  | echo "compile error:" | 
|  | echo "$CXX $TESTNAME $LIBS -o $EXE_NAME" | 
|  | fi | 
|  | if [ -s tmp.$FILE_NAME ]; then | 
|  | mv tmp.$FILE_NAME $FILE_NAME.xml | 
|  | fi | 
|  | fi | 
|  | CXX="$ORIG_CXX" | 
|  | done | 
|  |  | 
|  | exit 0 |