#							-*- shell-script -*-
#
# This file is part of the HDF5 build script.  It is processed shortly
# after configure starts and defines, among other things, flags for
# the various compile modes.

# Use Intel C compiler by default (if it's available).
if test "X$CC" = "X" && which icc > /dev/null; then
  CC=icc
  CC_BASENAME=icc
fi

#----------------------------------------------------------------------------
# Compiler flags. The CPPFLAGS values should not include package debug
# flags like `-DH5G_DEBUG' since these are added with the
# `--enable-debug' switch of configure.

case $CC_BASENAME in
    ecc|icc)
	. $srcdir/config/intel-flags
	;;

    gcc)
	. $srcdir/config/gnu-flags
	;;

    *)
	CFLAGS="$CFLAGS -ansi"
	DEBUG_CFLAGS="-g"
	DEBUG_CPPFLAGS=
	PROD_CFLAGS="-O"
	PROD_CPPFLAGS=
	PROFILE_CFLAGS="-pg"
	PROFILE_CPPFLAGS=
	;;
esac

# The default Fortran 90 compiler

#
# HDF5 integers
#
#       R_LARGE is the number of digits for the bigest integer supported.
#       R_INTEGER is the number of digits in INTEGER
#
# (for the Linux architechture)
#

R_LARGE=18
R_INTEGER=9

# Use Intel Fortran compiler by default.
if test "X-$FC" = "X-"; then
  FC="ifort"
fi

case $FC in
  *efc|*ifort)
    # this is for efc v7.  Older efc do not work with these.
    # -Vaxlib is for non-standard fortran calls like exit().
    MORE_FCFLAGS='-fpp -DDEC$=DEC_ -DMS$=MS_ -Vaxlib'
    FCFLAGS="$FCFLAGS $MORE_FCFLAGS"
    HADDR_T='SELECTED_INT_KIND(R_LARGE)'
    HSIZE_T='SELECTED_INT_KIND(R_LARGE)'
    HSSIZE_T='SELECTED_INT_KIND(R_LARGE)'
    HID_T='SELECTED_INT_KIND(R_INTEGER)'
    SIZE_T='SELECTED_INT_KIND(R_LARGE)'
    OBJECT_NAMELEN_DEFAULT_F=-1
    f9x_flags_set=yes
    ;;

  *)
    HADDR_T='SELECTED_INT_KIND(R_LARGE)'
    HSIZE_T='SELECTED_INT_KIND(R_LARGE)'
    HSSIZE_T='SELECTED_INT_KIND(R_LARGE)'
    HID_T='SELECTED_INT_KIND(R_INTEGER)'
    SIZE_T='SELECTED_INT_KIND(R_LARGE)'
    OBJECT_NAMELEN_DEFAULT_F=-1
    f9x_flags_set=yes
    ;;
esac

# The following is not right and need work.
if test "X$f9x_flags_set" = "X"; then
  F9XSUFFIXFLAG=""
  FSEARCH_DIRS=""
  FCFLAGS="$FCFLAGS"
  DEBUG_FCFLAGS=""
  PROD_FCFLAGS=""
  PROFILE_FCFLAGS=""
  f9x_flags_set=yes
fi

# The Default settings for C++
if test -z "$CXX"; then
    CXX=icc
    CXX_BASENAME=icc
fi

# A patch to make g++ getting the default settings.
# CXX_BASENAME should have been set in configure.
if test "X$CXX" = "Xg++"; then
    CXX_BASENAME=g++
fi


case $CXX_BASENAME in
    ecc|icc)	# Intel compilers
	# Default to C99 standard.
	CXXFLAGS="${CXXFLAGS:--std=c99}"
	DEBUG_CXXFLAGS="-g -w2 -Wall"
	DEBUG_CPPFLAGS=
	PROD_CXXFLAGS=""     #Default optimization O2 is used
	PROD_CPPFLAGS=
	PROFILE_CXXFLAGS="-pg"
	PROFILE_CPPFLAGS=
	;;
    g++)
	CXXFLAGS="$CXXFLAGS -Wsign-compare" #Only works for some versions
	DEBUG_CXXFLAGS="-g -fverbose-asm"
	DEBUG_CPPFLAGS=
	PROD_CXXFLAGS="-O3 -fomit-frame-pointer"
	PROD_CPPFLAGS=
	PROFILE_CXXFLAGS="-pg"
	PROFILE_CPPFLAGS=
	;;

    *)
	# Default to C99 standard.
	CXXFLAGS="${CXXFLAGS:--std=c99}"
	DEBUG_CXXFLAGS="-g"
	DEBUG_CPPFLAGS=
	PROD_CXXFLAGS="-O"
	PROD_CPPFLAGS=
	PROFILE_CXXFLAGS="-pg"
	PROFILE_CPPFLAGS=
	;;
esac