#!/bin/sh

#
# This script computes the various flags needed to run D Phobos unittests.
#

# Print a message saying how this script is intended to be invoked
print_usage() {
    cat <<EOF
Usage:
    testsuite_flags --gdc
		    --gdcflags
		    --gdcpaths
		    --gdcldflags

EOF
}

# Establish configure-generated directory structure.
BUILD_DIR=@libphobos_builddir@
SRC_DIR=@libphobos_srcdir@
query=$1

case ${query} in
    --gdc)
      GDC="@GDC@"
      echo ${GDC}
      ;;
    --gdcflags)
      GDCFLAGS_default="-fmessage-length=0 -fno-show-column"
      GDCFLAGS_config="@WARN_DFLAGS@ @GDCFLAGS@ @CET_DFLAGS@
		       @phobos_compiler_shared_flag@ -fno-release -funittest"
      echo ${GDCFLAGS_default} ${GDCFLAGS_config}
      ;;
    --gdcpaths)
      GDCPATHS_default="-nostdinc"
      GDCPATHS_config="-B${BUILD_DIR}/src
                       -I${BUILD_DIR}/libdruntime
                       -I${SRC_DIR}/libdruntime"
      # Include phobos in search path if compiling in library.
      if [ "x@ENABLE_LIBDRUNTIME_ONLY_FALSE@" = "x" ]; then
         GDCPATHS_config="${GDCPATHS_config} -I${SRC_DIR}/src"
      fi
      echo ${GDCPATHS_default} ${GDCPATHS_config}
      ;;
    --gdcldflags)
      GDCLDFLAGS="-B${BUILD_DIR}/src
                  -B${BUILD_DIR}/libdruntime/gcc
                  -L${BUILD_DIR}/src/.libs"
      echo ${GDCLDFLAGS}
      ;;
    *)
      print_usage
      ;;
esac

exit 0
