#! /bin/sh
#
# This forms the basis for the nc-config utility, which tells you
# various things about the netCDF installation. This code was
# contributed by netCDF user Arlindo DaSilva. Thanks Arlindo!

prefix="C:/Program Files/netCDF"
exec_prefix="C:/Program Files/netCDF"
libdir="C:/Program Files/netCDF/lib"
includedir="C:/Program Files/netCDF/include"

cc="C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.10.25017/bin/HostX86/x64/cl.exe"
cflags="-IC:/Program Files/netCDF/include"
libs="-LC:/Program Files/netCDF/lib -lnetcdf -lhdf5 -lhdf5_hl"

has_dap2="OFF"
if [ -z $has_dap2 -o "$has_dap2" = "OFF" ]; then
    has_dap2="no"
else
    has_dap2="yes"
fi

has_dap4="OFF"
if [ -z $has_dap4 -o "$has_dap4" = "OFF" ]; then
    has_dap4="no"
else
    has_dap4="yes"
fi

has_nc2="ON"


if [ -z "$has_nc2" -o "$has_nc2" = "OFF" ]; then
    has_nc2="no"
else
    has_nc2="yes"
fi

has_nc4="ON"
if [ -z "$has_nc4" -o "$has_nc4" = "OFF" ]; then
    has_nc4="no"
else
    has_nc4="yes"
fi

has_logging="OFF"
if [ -z "$has_logging" -o "$has_logging" = "OFF" ]; then
    has_logging="no"
else
    has_logging="yes"
fi

has_hdf4=""
if [ -z "$has_hdf4" -o "$has_hdf4" = "OFF" ]; then
    has_hdf4="no"
else
    has_hdf4="yes"
fi

has_pnetcdf=""
if [ -z "$has_pnetcdf" -o "$has_pnetcdf" = "OFF" ]; then
    has_pnetcdf="no"
else
    has_pnetcdf="yes"
fi

has_hdf5="ON"
if [ -z "$has_hdf5" -o "$has_hdf5" = "OFF" ]; then
    has_hdf5="no"
else
    has_hdf5="yes"
fi

has_szlib=""
if [ -z "$has_szlib" -o "$has_szlib" = "OFF" ]; then
    has_szlib="no"
else
    has_szlib="yes"
fi

has_cdf5="OFF"
if [ -z "$has_cdf5" -o "$has_cdf5" = "OFF" -o "$has_cdf5" = "FALSE" ]; then
    has_cdf5="no"
else
    has_cdf5="yes"
fi

has_parallel=""
if [ -z $has_parallel ]; then
    has_parallel="no"
else
    has_parallel="yes"
fi

version="netCDF 4.6.1"


has_fortran="no"
has_f90="no"
has_f03="no"

nfconf=$(which nf-config 2>/dev/null)

if [ -f "$nfconf" ]; then
  has_fortran="yes"
  fc=`nf-config --fc`
  fflags=`nf-config --fflags`
  flibs=`nf-config --flibs`
  has_f90=`nf-config --has-f90`
  has_f03=`nf-config --has-f03`
fi

has_cxx="no"
has_cxx4="no"

ncxxconf=$(which ncxx-config 2>/dev/null)
ncxx4conf=$(which ncxx4-config 2>/dev/null)

if [ -f "$ncxx4conf" ]; then
  cxx4=`ncxx4-config --cxx`
  cxx4flags=`ncxx4-config --cflags`
  cxx4libs=`ncxx4-config --libs`
  has_cxx4="yes"
elif [ -f "$ncxxconf" ]; then
  cxx=`ncxx-config --cxx`
  cxxflags=`ncxx-config --cflags`
  cxxlibs=`ncxx-config --libs`
  has_cxx="yes"
fi

usage()
{
    cat <<EOF
Usage: nc-config [OPTION]

Available values for OPTION include:

  --help         display this help message and exit
  --all          display all options
  --cc           C compiler
  --cflags       pre-processor and compiler flags
  --has-c++      whether C++ API is installed
  --has-c++4     whether netCDF-4 C++ API is installed
  --has-fortran  whether Fortran API is installed
  --has-dap2     whether OPeNDAP (DAP2) is enabled in this build
  --has-dap4     whether DAP4 is enabled in this build
  --has-dap      same as --has-dap2 (Deprecated)
  --has-nc2      whether NetCDF-2 API is enabled
  --has-nc4      whether NetCDF-4/HDF-5 is enabled in this build
  --has-hdf5     whether HDF5 is used in build (always the same as --has-nc4)
  --has-hdf4     whether HDF4 was used in build
  --has-logging  whether logging is enabled with --enable-logging.
  --has-pnetcdf  whether parallel-netcdf (a.k.a. pnetcdf) was used in build
  --has-szlib    whether szlib is included in build
  --has-parallel whether has parallel IO support via hdf5 and/or pnetcdf
  --libs         library linking information for netcdf
  --prefix       Install prefix
  --includedir   Include directory
  --libdir       Library directory
  --version      Library version


EOF
if [ -f "$ncxx4conf" ]; then
    cat <<EOF
  --cxx4        C++ compiler for netCDF-4 C++ library
  --cxx4flags   flags needed to compile a C++ program
  --cxx4libs    libraries needed to link a C++ program
EOF
elif [ -f "$ncxxconf" ]; then
    cat <<EOF
  --cxx         C++ compiler
  --cxxflags    flags needed to compile a C++ program
  --cxxlibs     libraries needed to link a C++ program
EOF
fi
if [ -f "$nfconf" ]; then
    cat <<EOF
  --fc          Fortran compiler
  --fflags      flags needed to compile a Fortran program
  --flibs       libraries needed to link a Fortran program
  --has-f90     whether Fortran 90 API is installed
  --has-f03     whether Fortran 03 API is installed (implies F90).
EOF
fi
    exit $1
}

all()
{
        echo
        echo "This $version has been built with the following features: "
        echo
        echo "  --cc        -> $cc"
        echo "  --cflags    -> $cflags"
        echo "  --libs      -> $libs"
        echo
        echo "  --has-c++   -> $has_cxx"
        echo "  --cxx       -> $cxx"

if [ -f "$ncxxconf" ]; then
        echo "  --cxxflags  -> $cxxflags"
        echo "  --cxxlibs   -> $cxxlibs"
fi
        echo
        echo "  --has-c++4  -> $has_cxx4"
        echo "  --cxx4      -> $cxx4"
if [ -f "$ncxx4conf" ]; then
        echo "  --cxx4flags -> $cxx4flags"
        echo "  --cxx4libs  -> $cxx4libs"
fi
        echo

        echo "  --has-fortran-> $has_fortran"
if [ -f "$nfconf" ]; then
        echo "  --fc        -> $fc"
        echo "  --fflags    -> $fflags"
        echo "  --flibs     -> $flibs"
        echo "  --has-f90   -> $has_f90"
        echo "  --has-f03   -> $has_f03"
        echo
fi
        echo "  --has-dap   -> $has_dap2"
        echo "  --has-dap2  -> $has_dap2"
        echo "  --has-dap4  -> $has_dap4"
        echo "  --has-nc2   -> $has_nc2"
        echo "  --has-nc4   -> $has_nc4"
        echo "  --has-hdf5  -> $has_hdf5"
        echo "  --has-hdf4  -> $has_hdf4"
        echo "  --has-logging-> $has_logging"
        echo "  --has-pnetcdf-> $has_pnetcdf"
        echo "  --has-szlib -> $has_szlib"
        echo "  --has-cdf5 -> $has_cdf5"
	    echo "  --has-parallel-> $has_parallel"
	    echo
        echo "  --prefix    -> $prefix"
        echo "  --includedir-> $includedir"
        echo "  --libdir    -> $libdir"
        echo "  --version   -> $version"
        echo
}

if test $# -eq 0; then
    usage 1
fi

while test $# -gt 0; do
    case "$1" in
    # this deals with options in the style
    # --option=value and extracts the value part
    # [not currently used]
    -*=*) value=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
    *) value= ;;
    esac

    case "$1" in

    --help)
	usage 0
	;;

    --all)
	all
	;;

    --cc)
	echo $cc
	;;

    --cflags)
	echo $cflags
	;;

    --has-dap)
       	echo $has_dap2
       	;;

    --has-dap2)
       	echo $has_dap2
       	;;

    --has-dap4)
       	echo $has_dap4
       	;;

    --has-nc2)
       	echo $has_nc2
       	;;

    --has-nc4)
       	echo $has_nc4
       	;;

    --has-hdf5)
       	echo $has_hdf5
       	;;

    --has-hdf4)
       	echo $has_hdf4
       	;;

    --has-logging)
        echo $has_logging
        ;;

    --has-pnetcdf)
       	echo $has_pnetcdf
       	;;

    --has-szlib)
       	echo $has_szlib
       	;;

    --has-cdf5)
        echo $has_cdf5
        ;;

    --has-parallel)
	    echo $has_parallel
	    ;;

    --libs)
       	echo $libs
       	;;

    --prefix)
       	echo "${prefix}"
       	;;

    --includedir)
       	echo "${includedir}"
       	;;

    --libdir)
       	echo "${libdir}"
       	;;

    --version)
	echo $version
	;;

    --has-c++)
       	echo $has_cxx
       	;;

    --cxx)
	echo $cxx
	;;

    --cxxflags)
	echo $cxxflags
	;;

    --cxxlibs)
	echo $cxxlibs
	;;

    --has-c++4)
       	echo $has_cxx4
       	;;

    --cxx4)
	echo $cxx4
	;;

    --cxx4flags)
	echo $cxx4flags
	;;

    --cxx4libs)
	echo $cxx4libs
	;;

    --has-fortran)
        echo $has_fortran
        ;;

    --fc)
	echo $fc
	;;

    --fflags)
	echo $fflags
	;;

    --flibs)
       	echo $flibs
       	;;

    --has-f90)
       	echo $has_f90
       	;;

    --has-f03)
       	echo $has_f03
       	;;

    *)
        echo "unknown option: $1"
	    usage 1
	    ;;
    esac
    shift
done

exit 0