#!/usr/bin/env bash

# Script to do compilation-only testing.

# Invocation 
# check_compile 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_compile.  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`
TEST_FLAGS="-S"
COMPILER=`$flags_script --build-cxx`
CXX="$COMPILER $INCLUDES $PCH_FLAGS $FLAGS -Wfatal-errors $TEST_FLAGS"

echo "compile line is:"
echo $CXX
echo ""

TESTS_FILE="testsuite_files"

#mkdir binaries
UNIQUE_ID=0

for NAME in `cat $TESTS_FILE`
do
  if $RUN; then
    echo $NAME
    OUTPUT_NAME=$UNIQUE_ID
    $CXX $SRC_DIR/testsuite/$NAME -o $OUTPUT_NAME
    if [ -f $OUTPUT_NAME ]; then
#	mv $OUTPUT_NAME binaries
	rm $OUTPUT_NAME
    fi
    let UNIQUE_ID+=1 
  fi
done

exit 0
