1132720Skan#!/usr/bin/env bash
2132720Skan
3132720Skan# Script to do performance testing.
4132720Skan
5132720Skan# Invocation 
6132720Skan# check_performance SRC_DIR BUILD_DIR
7132720Skan
8132720Skan# 1: variables
9132720Skan#
10132720SkanSRC_DIR=$1
11132720SkanBUILD_DIR=$2
12132720Skan
13132720Skan# Now that we've successfully translated the numerical option into
14132720Skan# a symbolic one, we can safely ignore it.
15132720Skanshift
16132720Skan
17132720Skan# This has been true all along.  Found out about it the hard way...
18132720Skancase $BASH_VERSION in
19132720Skan    1*)  
20132720Skan	echo 'You need bash 2.x to run check_performance.  Exiting.'; 
21132720Skan	exit 1 ;;
22132720Skan    *)   ;;  
23132720Skanesac
24132720Skan
25132720Skanflags_script=$BUILD_DIR/scripts/testsuite_flags
26169691SkanINCLUDES=`$flags_script --build-includes`
27169691SkanPCH_FLAGS=`$flags_script --cxxpchflags`
28132720SkanFLAGS=`$flags_script --cxxflags`
29132720SkanTHREAD_FLAG='-pthread'
30132720SkanCOMPILER=`$flags_script --build-cxx`
31132720SkanSH_FLAG="-Wl,--rpath -Wl,$BUILD_DIR/../../gcc \
32132720Skan         -Wl,--rpath -Wl,$BUILD_DIR/src/.libs"
33132720SkanST_FLAG="-static"
34132720SkanLINK=$SH_FLAG
35169691SkanCXX="$COMPILER $INCLUDES $PCH_FLAGS $FLAGS $LINK"
36169691SkanLIBS="./libtestc++.a"
37132720SkanTESTS_FILE="testsuite_files_performance"
38132720Skan
39132720Skanfor NAME in `cat $TESTS_FILE`
40132720Skando
41132720Skan  RUN=true
42169691Skan  TESTNAME=$SRC_DIR/testsuite/$NAME
43169691Skan  FILE_NAME="`basename $NAME`"
44169691Skan  FILE_NAME="`echo $FILE_NAME | sed 's/.cc//g'`"
45169691Skan
46169691Skan  # TEST_S == single thread
47169691Skan  # TEST_B == do both single and multi-thread
48169691Skan  # TEST_T == multi-thread
49169691Skan  for CYCLE in `sed -n 's,.*\(TEST_[SB][0-9]*\)$,\1,p' $TESTNAME`
50132720Skan  do
51132720Skan    RUN=false
52132720Skan    echo $NAME $CYCLE
53169691Skan    EXE_NAME="`echo $FILE_NAME-$CYCLE.exe`"
54169691Skan    $CXX -DNOTHREAD -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME
55169691Skan    if [ -f $EXE_NAME ]; then
56169691Skan      ./$EXE_NAME
57169691Skan    else
58169691Skan      echo "compile error:"
59169691Skan      echo "$CXX -DNOTHREAD -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME"
60169691Skan    fi
61132720Skan  done
62169691Skan
63169691Skan  for CYCLE in `sed -n 's,.*\(TEST_[TB][0-9]*\)$,\1,p' $TESTNAME`
64132720Skan  do
65132720Skan    RUN=false
66169691Skan    echo $NAME $CYCLE thread
67169691Skan    EXE_NAME="`echo $FILE_NAME-$CYCLE.exe`"
68169691Skan    $CXX $THREAD_FLAG -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME
69169691Skan    if [ -f $EXE_NAME ]; then
70169691Skan      ./$EXE_NAME
71169691Skan    else
72169691Skan      echo "compile error:"
73169691Skan      echo "$CXX $THREAD_FLAG -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME"
74169691Skan    fi
75132720Skan  done
76169691Skan
77132720Skan  if $RUN; then
78132720Skan    echo $NAME
79169691Skan    EXE_NAME="`echo $FILE_NAME.exe`"
80169691Skan    $CXX $TESTNAME $LIBS -o $EXE_NAME
81169691Skan    if [ -f $EXE_NAME ]; then
82169691Skan	./$EXE_NAME >& tmp.$FILE_NAME
83169691Skan    else
84169691Skan      echo "compile error:"
85169691Skan      echo "$CXX $TESTNAME $LIBS -o $EXE_NAME"
86169691Skan    fi
87169691Skan    if [ -s tmp.$FILE_NAME ]; then
88169691Skan	mv tmp.$FILE_NAME $FILE_NAME.xml
89169691Skan    fi
90132720Skan  fi
91132720Skandone
92132720Skan
93132720Skanexit 0
94