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` -include bits/stdc++.h"
27FLAGS=`$flags_script --cxxflags`
28THREAD_FLAG='-pthread'
29COMPILER=`$flags_script --build-cxx`
30SH_FLAG="-Wl,--rpath -Wl,$BUILD_DIR/../../gcc \
31         -Wl,--rpath -Wl,$BUILD_DIR/src/.libs"
32ST_FLAG="-static"
33LINK=$SH_FLAG
34CXX="$COMPILER $INCLUDES $FLAGS -DNOTHREAD $LINK"
35CXX_THREAD="$COMPILER $INCLUDES $FLAGS $THREAD_FLAG $LINK"
36
37
38TESTS_FILE="testsuite_files_performance"
39
40for NAME in `cat $TESTS_FILE`
41do
42  RUN=true
43  for CYCLE in `sed -n 's,.*\(TEST_[SB][0-9]*\)$,\1,p' $SRC_DIR/testsuite/$NAME`
44  do
45    RUN=false
46    echo $NAME $CYCLE
47    FILE_NAME="`basename $NAME`"
48    EXE_NAME="`echo $FILE_NAME-$CYCLE | sed 's/cc$/exe/'`"
49    $CXX -D$CYCLE $SRC_DIR/testsuite/$NAME -o $EXE_NAME
50    ./$EXE_NAME
51    echo ""
52  done
53  for CYCLE in `sed -n 's,.*\(TEST_[TB][0-9]*\)$,\1,p' $SRC_DIR/testsuite/$NAME`
54  do
55    RUN=false
56    echo $NAME $CYCLE THREAD
57    FILE_NAME="`basename $NAME`"
58    EXE_NAME="`echo $FILE_NAME-$CYCLE | sed 's/cc$/exe/'`"
59    $CXX_THREAD -D$CYCLE $SRC_DIR/testsuite/$NAME -o $EXE_NAME
60    ./$EXE_NAME
61    echo ""
62  done
63  if $RUN; then
64    echo $NAME
65    FILE_NAME="`basename $NAME`"
66    EXE_NAME="`echo $FILE_NAME | sed 's/cc$/exe/'`"
67    $CXX $SRC_DIR/testsuite/$NAME -o $EXE_NAME
68    ./$EXE_NAME
69    echo ""
70  fi
71done
72
73exit 0
74