#!/bin/sh

#
# This script computes the various flags needed to run GNU C++ testsuites
# (compiler specific as well as library specific). 
#
# Written by Benjamin Kosnik <bkoz@redhat.com>
#            Gabriel Dos Reis <gdr@codesourcery.com>
#

# Print a message saying how this script is intended to be invoked
print_usage() {
    cat <<EOF
Usage: 
    testsuite_flags --install-includes
		    --build-includes
		    --build-cxx
		    --install-cxx
		    --cxxflags
		    --cxxpchflags
EOF
}

# Establish configure-generated directory structure.
BUILD_DIR=@glibcxx_builddir@
SRC_DIR=@glibcxx_srcdir@
PREFIX_DIR=@glibcxx_prefixdir@
query=$1

case ${query} in
    --install-includes)
      INCLUDES="-I${SRC_DIR}/testsuite"
      echo ${INCLUDES}
      ;;
    --build-includes)
      INCLUDES="-nostdinc++ @GLIBCXX_INCLUDES@ 
                -I${SRC_DIR}/include/backward -I${SRC_DIR}/testsuite"
      echo ${INCLUDES}
      ;;
    --install-cxx)
      CXX=${PREFIX_DIR}/bin/g++
      echo ${CXX}
      ;;
    --build-cxx)
      CXX_build="@CXX@"
      CXX=`echo "$CXX_build" | sed 's,gcc/xgcc ,gcc/g++ ,'`
      echo ${CXX}
      ;;
    --cxxflags)
      CXXFLAGS_save="-g -O2 -D_GLIBCXX_ASSERT"
      CXXFLAGS_config='@SECTION_FLAGS@ @SECTION_LDFLAGS@ -fmessage-length=0 
 		      @EXTRA_CXX_FLAGS@ -DLOCALEDIR="@glibcxx_localedir@" '
      echo ${CXXFLAGS_save} ${CXXFLAGS_config}
      ;;
    --cxxpchflags)
      PCHFLAGS="@glibcxx_PCHFLAGS@"
      echo ${PCHFLAGS}
      ;;
    *)
      print_usagex
      ;;
esac

exit 0
