1#!/usr/bin/env bash
2
3# Script to do performance testing.
4
5# Invocation 
6# check_performance SRC_DIR BUILD_DIR
7
8# 1: variables
9#
10SRC_DIR=$1
11BUILD_DIR=$2
12
13# Now that we've successfully translated the numerical option into
14# a symbolic one, we can safely ignore it.
15shift
16
17# This has been true all along.  Found out about it the hard way...
18case $BASH_VERSION in
19    1*)  
20	echo 'You need bash 2.x to run check_performance.  Exiting.'; 
21	exit 1 ;;
22    *)   ;;  
23esac
24
25flags_script=$BUILD_DIR/scripts/testsuite_flags
26INCLUDES=`$flags_script --build-includes`
27PCH_FLAGS=`$flags_script --cxxpchflags`
28FLAGS=`$flags_script --cxxflags`
29THREAD_FLAG='-pthread'
30COMPILER=`$flags_script --build-cxx`
31SH_FLAG="-Wl,--rpath -Wl,$BUILD_DIR/../../gcc \
32         -Wl,--rpath -Wl,$BUILD_DIR/src/.libs"
33ST_FLAG="-static"
34LINK=$SH_FLAG
35CXX="$COMPILER $INCLUDES $PCH_FLAGS $FLAGS $LINK"
36TESTS_FILE="testsuite_files_performance"
37
38for NAME in `cat $TESTS_FILE`
39do
40  RUN=true
41
42  # TEST_S == single thread
43  # TEST_B == do both single and multi-thread
44  # TEST_T == multi-thread
45  for CYCLE in `sed -n 's,.*\(TEST_[SB][0-9]*\)$,\1,p' $SRC_DIR/testsuite/$NAME`
46  do
47    RUN=false
48    echo $NAME $CYCLE
49    FILE_NAME="`basename $NAME`"
50    FILE_NAME="`echo $FILE_NAME | sed 's/.cc//g'`"
51    EXE_NAME="`echo $FILE_NAME-$CYCLE.exe`"
52    $CXX -DNOTHREAD -D$CYCLE $SRC_DIR/testsuite/$NAME -o $EXE_NAME
53    if [ -f $EXE_NAME ]; then
54      ./$EXE_NAME
55    fi
56  done
57
58  for CYCLE in `sed -n 's,.*\(TEST_[TB][0-9]*\)$,\1,p' $SRC_DIR/testsuite/$NAME`
59  do
60    RUN=false
61    echo $NAME $CYCLE thread
62    FILE_NAME="`basename $NAME`"
63    FILE_NAME="`echo $FILE_NAME | sed 's/.cc//g'`"
64    EXE_NAME="`echo $FILE_NAME-$CYCLE.exe`"
65    $CXX $THREAD_FLAG -D$CYCLE $SRC_DIR/testsuite/$NAME -o $EXE_NAME
66    if [ -f $EXE_NAME ]; then
67      ./$EXE_NAME
68    fi
69  done
70
71  if $RUN; then
72    echo $NAME
73    FILE_NAME="`basename $NAME`"
74    EXE_NAME="`echo $FILE_NAME | sed 's/cc$/exe/'`"
75    $CXX $SRC_DIR/testsuite/$NAME -o $EXE_NAME
76    if [ -f $EXE_NAME ]; then
77      ./$EXE_NAME
78    fi
79  fi
80done
81
82exit 0
83