#!/bin/sh

#
# values substituted from configure
#
host=x86_64-alt-linux-gnu
prefix=/usr/lib64/petsc-real
exec_prefix=/usr
libdir=/usr/lib64
includedir=/usr/include
legacyinclude=no
builddir=/usr/src/RPM/BUILD/libmesh-real-1.0.0
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=" -std=gnu++11 -O2 -felide-constructors -funroll-loops -fstrict-aliasing -Wdisabled-optimization    -fopenmp"
	CPPFLAGS="-DNDEBUG "
	CFLAGS="-O2 -funroll-loops -fstrict-aliasing    -fopenmp"
	libext="_opt"
	;;
    debug|dbg)
	CXXFLAGS=" -std=gnu++11 -O0 -felide-constructors -g -pedantic -W -Wall -Wextra -Wno-long-long -Wunused -Wpointer-arith -Wformat -Wparentheses -Woverloaded-virtual    -fopenmp"
	CPPFLAGS="-DDEBUG -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC "
	CFLAGS="-g -Wimplicit    -fopenmp"
	libext="_dbg"
	;;
    devel)
	CXXFLAGS=" -std=gnu++11 -O2 -felide-constructors -g -pedantic -W -Wall -Wextra -Wno-long-long -Wunused -Wpointer-arith -Wformat -Wparentheses -Wuninitialized -funroll-loops -fstrict-aliasing -Woverloaded-virtual -Wdisabled-optimization    -fopenmp"
	CPPFLAGS=" "
	CFLAGS="-O2 -g -Wimplicit -funroll-loops -fstrict-aliasing    -fopenmp"
	libext="_devel"
	;;
    profiling|pro|prof)
	CXXFLAGS=" -std=gnu++11 -O2 -felide-constructors -funroll-loops -fstrict-aliasing -Wdisabled-optimization   -pg  -fopenmp"
	CPPFLAGS="-DNDEBUG "
	CFLAGS="-O2 -funroll-loops -fstrict-aliasing   -pg  -fopenmp"
	libext="_prof"
	;;
    oprofile|oprof)
	CXXFLAGS=" -std=gnu++11 -O2 -felide-constructors -funroll-loops -fstrict-aliasing -Wdisabled-optimization   -g -fno-omit-frame-pointer  -fopenmp"
	CPPFLAGS="-DNDEBUG "
	CFLAGS="-O2 -funroll-loops -fstrict-aliasing   -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="mpicxx $return_val"
	    ;;

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

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

	"--fc")
	    return_val="x86_64-alt-linux-gfortran $return_val"
	    ;;

	"--cppflags")
	    return_val="${CPPFLAGS} $return_val"
	    ;;
	
	"--cxxflags")
	    return_val="${CXXFLAGS} $return_val"
	    ;;
	
	"--cflags")
	    return_val="${CFLAGS} $return_val"
	    ;;
	
	"--fflags")
	    return_val="-pipe -Wall -g -O2 -DOMPI_IGNORE_CXX_SEEK -DHAVE_NOX -I/usr/include/exodusii -fpermissive -I/usr/include/eigen3 -fopenmp $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/include/glpk36 -I/usr/include/vtk-5.10 -I/usr/include -I/usr/include/qt4/QtDesigner -I/usr/include/qt4/QtDeclarative -I/usr/include/qt4/QtScriptTools -I/usr/include/qt4/QtDBus -I/usr/include/qt4/QtXml -I/usr/include/qt4/QtSql -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4/QtMultimedia -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtXmlPatterns -I/usr/include/qt4/QtWebKit -I/usr/include/qt4/QtHelp -I/usr/include/qt4/QtUiTools -I/usr/include/qt4/QtTest -I/usr/include/qt4/QtScript -I/usr/include/qt4/QtSvg -I/usr/include/qt4/Qt3Support -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtCore -I/usr/share/qt4/mkspecs/default -I/usr/include/qt4 -I/usr/include/oski -I/usr/include/hypre -I/usr/include/suitesparse -I/usr/include/superlu_dist -I/usr/lib64/openmpi/include -I/usr/include/exodusii -I/usr/include/tvmet -I/usr/include/adolc -I/usr/lib64/openmpi/include/metis -I/usr/include/qd -I/usr/include/arprec -I/usr/include/tbb -I/usr/lib64/petsc-real/include -I/usr/include/sundials-double -I/usr/include/spai -I/usr/lib64/pastix/include -I/usr/include/triangle -I/usr/include/sprng1 -I/usr/lib64/openmpi/include/netcdf-3
                        $return_val"
	    ;;
	
	"--libs")
	    return_val="-L/lib -Wl,-rpath,/lib -L/usr/lib64 -lglpk -Wl,-rpath,/usr/lib -L/usr/lib -lvtkIO -lvtkCommon -lvtkFiltering -lvtkImaging -ltbb -ltbbmalloc -ltrilinoscouplings -lmsqutil -lmesquite -loptika -lpytrilinos -lfortrilinos -lctrilinos -lsundancePdeopt -lsundanceStdFwk -lsundanceStdMesh -lsundanceCore -lsundanceInterop -lsundanceUtils -lsundancePlaya -lpiro -lstokhos_muelu -lstokhos_ifpack2 -lstokhos_amesos2 -lstokhos_tpetra -lstokhos_sacado -lstokhos -lmoochothyra -lmoocho -lgaasp -lrythmosgaasp -lrythmos -lmuelu-adapters -lmuelu -lmoertel -llocathyra -llocaepetra -llocalapack -lloca -lnoxepetra -lnoxlapack -lnox -lphalanx -lstk_search_util_base -lstk_search -lstk_io_util -lstk_io -lstk_mesh_fixtures -lstk_mesh_base -lstk_topology -lstk_util_use_cases -lstk_util_registry -lstk_util_parallel -lstk_util_diag -lstk_util_env -lstk_util_util -lstkclassic_adapt -lstkclassic_percept -lstkclassic_search_util -lstkclassic_search -lstkclassic_rebalance_utils -lstkclassic_rebalance -lstkclassic_linsys -lstkclassic_io_util -lstkclassic_io -lstkclassic_expreval -lstkclassic_algsup -lstkclassic_mesh_fem -lstkclassic_mesh_base -lstkclassic_util_use_cases -lstkclassic_util_unit_test_support -lstkclassic_util_parallel -lstkclassic_util_diag -lstkclassic_util_env -lstkclassic_util_util -lintrepid -lteko -lfei_trilinos -lfei_base -lstratimikos -lstratimikosbelos -lstratimikosaztecoo -lstratimikosamesos -lstratimikosml -lstratimikosifpack -lshylu -lifpack2-adapters -lifpack2 -lzoltan2 -lanasazitpetra -lModeLaplace -lanasaziepetra -lanasazi -lbelostpetra -lbelosepetra -lbelos -lkomplex -ltrios_netcdf_client -ltrios_nssi -ltrios_nnti -ltrios_support -lcommsplitter -lmapvarlib -lfastqlib -lblotlib -lplt -lsvdi_cgi_cps -lvdicps_dual -lvdx11cps -lsvdi_cgi_met -lsvdi_cgi_pst -lsvdi_cgi_x11 -lsvdi_cdr -lsvdi_cgi -lsuplib -lsupes -laprepro_lib -lchaco -lIoxf -lIonit -lIotr -lIohb -lIogn -lIopg -lIopx -lIoex -lIoss -lexodus_for -lexodus -lpamgen_extras -lpamgen -lamesos2 -lgaleri-xpetra -lgaleri -ldpliris -lisorropia -loptipack -lthyratpetra -lthyraepetraext -lthyraepetra -lthyracore -lxpetra-sup -lxpetra-ext -lxpetra -ltpetrarti -ltpetraext -ltpetrainout -ltpetra -ltriutils -lglobipack -lshards -lsacado -lkokkostask -lkokkosmpicomm -lkokkoscorelinalg -lkokkosalgorithms -lkokkoscontainers -lkokkosdisttsqr -lkokkosnodetsqr -lkokkoslinalg -lkokkosnodeapi -lkokkos -lkokkoscompat -lkokkoscore -lkokkosTPL_unused_dummy -lgtest -lrtop -ltpi -lteuchosremainder -lteuchosnumerics -lteuchoscomm -lteuchosparameterlist -lteuchoscore /usr/lib64/libX11.so -lmatio /usr/lib64/libpnetcdf.so /usr/lib64/libboost_program_options.so /usr/lib64/libboost_system.so /usr/lib64/libQtCore.so /usr/lib64/libQtGui.so /usr/lib64/libQtTest.so /usr/lib64/libQtXml.so /usr/lib64/libskit.so /usr/lib64/libtaucs.so /usr/lib64/oski/liboski_Tid.so /usr/lib64/oski/liboski.so /usr/lib64/libcmumps.so /usr/lib64/libdmumps.so /usr/lib64/libsmumps.so /usr/lib64/libzmumps.so /usr/lib64/libmumps_common.so /usr/lib64/libpord.so /usr/lib64/libscalapack.so /usr/lib64/libblacs.so /usr/lib64/libHYPRE.so /usr/lib64/libumfpack.so /usr/lib64/libamd.so /usr/lib64/libsuperlu_dist_2.4.so /usr/lib64/liby12m.so /usr/lib64/openmpi/lib/libnetcdff.so /usr/lib64/openmpi/lib/libnetcdf_c++4.so /usr/lib64/openmpi/lib/libnetcdf.so /usr/lib64/openmpi/lib/libhdf5hl_fortran.so /usr/lib64/openmpi/lib/libhdf5_fortran.so /usr/lib64/openmpi/lib/libhdf5_hl.so /usr/lib64/openmpi/lib/libhdf5.so /usr/lib64/libXdmf.so /usr/lib64/libXdmfUtils.so /usr/lib64/libvtkXdmf.so /usr/lib64/libvtkXdmfTCL.so /usr/lib64/libnemesis.so /usr/lib64/libexoIIv2c.so /usr/lib64/libnetcdf.so /usr/lib64/libadolc.so /usr/lib64/libesmumps.so /usr/lib64/libscotch.so /usr/lib64/libscotcherr.so /usr/lib64/libptscotch.so /usr/lib64/libparmetis.so /usr/lib64/libz.so /usr/lib64/libm.so /usr/lib64/librt.so /usr/lib64/libpthread.so /usr/lib64/liblapack.so /usr/lib64/libopenblas.so /usr/lib64/libqdmod.so /usr/lib64/libqd.so /usr/lib64/libqd_f_main.so /usr/lib64/libarprecmod.so /usr/lib64/libarprec.so /usr/lib64/libarprec_f_main.so /usr/lib64/libtbb.so /usr/lib64/libtbbmalloc.so -L/usr/lib64/petsc-real/lib -lslepc -lparpack_MPI-LINUX -lblzpack -ltrlan_mpi -lprimme -Wl,-rpath,/usr/lib64/petsc-real/lib -lsundials_cvode -lsundials_nvecparallel -lspai -lcmumps -ldmumps -lsmumps -lzmumps -lmumps_common -lpord -lscotch -lscotcherr -lparms -loski -loski_Tid -lml -lamesos -lepetraext -lifpack -laztecoo -lepetra -lteuchos -ly12m -lHYPRE -lsuperlu_dist_2.4 -ltmglib -lsuperlu_4.0 -lumfpack -lklu -lcholmod -lbtf -lccolamd -lcolamd -lcamd -lamd -lsuitesparseconfig -lpastix_d -lpastix -lxerbla -llapack -lopenblas -lzoltan -lparmetis -ltriangle -lX11 -ltetgen -lcmrg -llcg64 -llcg -llfg -lmlfg -lexpat -lesmumps -lptscotch -lptscotcherr -lchaco2 -lnetcdf_c++ -lnetcdf -lhdf5_fortran -lhdf5 -lz -L/usr -L/usr/lib64/oski -L/usr/lib64/openmpi/lib -L/usr/lib64/gcc/x86_64-alt-linux/4.9 -lgfortran -lquadmath -lm -lmpi_cxx -lstdc++ -Wl,-rpath,/usr -Wl,-rpath,/usr/lib64/oski -Wl,-rpath,/usr/lib64/gcc/x86_64-alt-linux/4.9 -Wl,-rpath,/usr/lib64/openmpi/lib -lmpi_f90 -lmpi_f77 -lmpi -lrt -lnsl -lutil -lgcc_s -lpthread -ldl -llmpe -lmpe -Wl,-rpath,/usr/lib64 -lscalapack -larpack_LINUX -lblacs -lpetsc 
                        -Wl,-rpath,${libdir} -L${libdir} -lmesh${libext} 
                        $return_val"
	    ;;

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

	"--version")
	    return_val="1.0.0-pre"
	    ;;

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

echo $return_val

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