#!/bin/sh

#
# values substituted from configure
#
host=x86_64-suse-linux-gnu
prefix=/usr/lib64/mpi/gcc/openmpi4
exec_prefix=/usr
libdir=/usr/lib64/mpi/gcc/openmpi4/lib64
includedir=/usr/include
legacyinclude=no
has_been_installed=yes

#
# Define the usage() function
#
usage ()
{
  echo "usage: $0 --cppflags --cxxflags --include --libs"
  echo "       $0 --cxx"
  echo "       $0 --cc"
  echo "       $0 --fc"
  echo "       $0 --fflags"
  echo "       $0 --version"
  echo "       $0 --host"
  echo "       $0 --ldflags"
  exit
}

#
# Need at least one command-line argument
#
if [ "$#" = "0" ] ; then
    usage $0
fi

#
# Need a valid METHOD 
#
if (test "x$METHOD" = x); then
    #echo "No METHOD specified - defaulting to opt"
    METHOD=opt
fi

case "$METHOD" in
    optimized|opt)
	CXXFLAGS="   -O2 -felide-constructors -fstrict-aliasing -Wdisabled-optimization -funroll-loops -ftrapping-math    -fopenmp"
	CPPFLAGS=" -DNDEBUG "
	CFLAGS="  -O2 -fstrict-aliasing -funroll-loops -ftrapping-math    -fopenmp"
	libext="_opt"
	;;
    debug|dbg)
	CXXFLAGS="   -O0 -felide-constructors -g -pedantic -W -Wall -Wextra -Wno-long-long -Wunused -Wpointer-arith -Wformat -Wparentheses -Woverloaded-virtual -ftrapping-math    -fopenmp"
	CPPFLAGS=" -DDEBUG "
	CFLAGS="  -O0 -g -Wimplicit -ftrapping-math    -fopenmp"
	libext="_dbg"
	;;
    devel)
	CXXFLAGS="   -O2 -felide-constructors -g -pedantic -W -Wall -Wextra -Wno-long-long -Wunused -Wpointer-arith -Wformat -Wparentheses -Wuninitialized -fstrict-aliasing -Woverloaded-virtual -Wdisabled-optimization -funroll-loops -ftrapping-math    -fopenmp"
	CPPFLAGS="  "
	CFLAGS="  -O2 -fstrict-aliasing -g -Wimplicit -fstrict-aliasing -funroll-loops -ftrapping-math    -fopenmp"
	libext="_devel"
	;;
    profiling|pro|prof)
	CXXFLAGS="   -O2 -felide-constructors -fstrict-aliasing -Wdisabled-optimization -funroll-loops -ftrapping-math   -pg  -fopenmp"
	CPPFLAGS=" -DNDEBUG "
	CFLAGS="  -O2 -fstrict-aliasing -funroll-loops -ftrapping-math   -pg  -fopenmp"
	libext="_prof"
	;;
    oprofile|oprof)
	CXXFLAGS="   -O2 -felide-constructors -fstrict-aliasing -Wdisabled-optimization -funroll-loops -ftrapping-math   -g -fno-omit-frame-pointer  -fopenmp"
	CPPFLAGS=" -DNDEBUG "
	CFLAGS="  -O2 -fstrict-aliasing -funroll-loops -ftrapping-math   -g -fno-omit-frame-pointer  -fopenmp"
	libext="_oprof"
	;;
    *)
	echo "ERROR: Unknown \$METHOD: $METHOD"
	echo "  should be one of: <opt,dbg,devel,prof,oprof>"
	exit 1
	;;
esac

#
# Process the command-line arguments, build up
# return_val
#
return_val=""

while [ "x$1" != "x" ]; do
    case "$1" in
	"--cxx")
	    return_val="g++ $return_val"
	    ;;

	"--cc")
	    return_val="gcc $return_val"
	    ;;

	"--f77")
	    return_val="gfortran $return_val"
	    ;;

	"--fc")
	    return_val="gfortran $return_val"
	    ;;

	"--cppflags")
	    return_val="${CPPFLAGS} $return_val"
	    ;;
	
	"--cxxflags")
	    return_val="${CXXFLAGS} $return_val"
	    ;;
	
	"--cflags")
	    return_val="${CFLAGS} $return_val"
	    ;;
	
	"--fflags")
	    return_val="-O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g -DNETCDF_ENABLE_LEGACY_MACROS=1  $return_val"
	    ;;
	
	"--include")
	    # handle legacy include paths when needed.
	    if (test "x$legacyinclude" = "xyes"); then
		return_val="-I${includedir}/libmesh $return_val"
	    fi
	    return_val="-I${includedir}
 	                -I/usr/lib64/mpi/gcc/openmpi4/include -I/usr/include -I/usr/include/eigen3 -I/usr/include/tirpc
                        $return_val"
	    ;;
	
	"--libs")
	    return_val="-L${libdir} -lmesh${libext} -ltimpi${libext} -L/usr/lib -lnetcdf -lglpk -lz -ltirpc $return_val"
	    ;;

	"--ldflags")
	    return_val=" $return_val"
	    ;;

	"--version")
	    return_val="1.8.4"
	    ;;

	"--host")
	    return_val="$host"
	    ;;
	
	*)
	    echo "Unknown argument: $1"
	    usage $0
    esac
    shift
done

echo $return_val

# Local Variables:
# mode: shell-script
# End:
