#							-*- shell-script -*-
#
# Copyright by The HDF Group.
# Copyright by the Board of Trustees of the University of Illinois.
# All rights reserved.
#
# This file is part of HDF5.  The full HDF5 copyright notice, including
# terms governing use, modification, and redistribution, is contained in
# the COPYING file, which can be found at the root of the source code
# distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases.
# If you do not have access to either file, you may request a copy from
# help@hdfgroup.org.

# Configuration file for building on the IBM AIX platforms.
# 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 AIX supplied C compiler by default, xlc for serial, mpcc_r for parallel.
# Make sure this is applied to other API compile options such as C++.
if test "X-" =  "X-$CC"; then
  if test "X-$enable_parallel" = "X-yes"; then
    CC=mpcc_r
    CC_BASENAME=mpcc_r
  else
    CC=xlc
    CC_BASENAME=xlc
  fi
fi

# Define RUNPARALLEL if parallel mode is enabled or a parallel compiler used.
# Define RUNSERIAL: Temporary patch for Bug 1678. -q32 binary default to run
# with smaller memory.
# Ask for more memory so that "make check" will pass. Not necessary for -q64
# mode but it does no harm.
if test "X-$enable_parallel" = "X-yes" -o X-$CC_BASENAME = X-mpcc_r; then
    RUNPARALLEL=${RUNPARALLEL="env MP_PROCS=\$\${NPROCS:=6} MP_TASKS_PER_NODE=\$\${NPROCS:=6} poe"}
fi

# The default Fortran 90 compiler

if test "X-" = "X-$FC"; then
  if test "X-$enable_parallel" = "X-yes"; then
    FC=mpxlf90_r
  else
    FC=xlf90
  fi
fi

# While we try to avoid setting FCFLAGS directly for use in compilation, in 
# this case we need the -k flag present for some configure checks. As such, 
# the configure script saves the user's set FCFLAGS before running, and 
# restores them when complete. We must then set up both FCFLAGS and H5_FCFLAGS 
# to ensure the flag is present for both configure as well as for the build.
if test "X-" = "X-$f9x_flags_set"; then
  F9XSUFFIXFLAG="-qsuffix=f=f90"
  FCFLAGS="$FCFLAGS ${F9XSUFFIXFLAG}"
  H5_FCFLAGS="$H5_FCFLAGS ${F9XSUFFIXFLAG}"
  FSEARCH_DIRS="-I./ -I../src"

  # Produciton
  PROD_FCFLAGS=

  # Debug
  DEBUG_FCFLAGS=

  # Symbols
  SYMBOLS_FCFLAGS="-g"
  NO_SYMBOLS_FCFLAGS=

  # Profiling
  PROFILE_FCFLAGS="-pg"

  # Optimization
  HIGH_OPT_FCFLAGS="-O"
  DEBUG_OPT_FCFLAGS=
  NO_OPT_FCFLAGS=

  f9x_flags_set=yes
fi

# The default C++ compiler

# Use AIX supplied C++ compiler by default.
CXX=${CXX=xlC}

# Added -qweaksymbol to suppress linker messages warning of duplicate
# symbols; these warnings are harmless. - BMR
H5_CXXFLAGS="$H5_CXXFLAGS -qweaksymbol"
AM_CXXFLAGS="$AM_CXXFLAGS"


#----------------------------------------------------------------------------
# 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
  xlc|xlc-*|xlc_r|xlc_r-*|mpcc_r|mpcc_r-*)
    . $srcdir/config/ibm-flags
    ;;

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

  *)
    # Undetermined compiler
    # Use very generic flags
    H5_CFLAGS="$H5_CFLAGS -ansi"

    # Produciton
    PROD_CFLAGS=

    # Debug
    DEBUG_CFLAGS=

    # Symbols
    SYMBOLS_CFLAGS="-g"
    NO_SYMBOLS_CFLAGS=

    # Profiling
    PROFILE_CFLAGS="-pg"

    # Optimization
    HIGH_OPT_CFLAGS="-O"
    DEBUG_OPT_CFLAGS=
    NO_OPT_CFLAGS=

    # Flags are set
    cc_flags_set=yes
    ;;
esac

#----------------------------------------------------------------------------
# Values for overriding configuration tests when cross compiling.
# This includes compiling on some machines where the serial front end
# compiles for a parallel back end.

# Set this to `yes' or `no' depending on whether the target is big
# endian or little endian.
hdf5_cv_printf_ll=${hdf5_cv_printf_ll='ll'}
ac_cv_c_bigendian=${ac_cv_c_bigendian='yes'}
ac_cv_header_stdc=${ac_cv_header_stdc='yes'}
ac_cv_header_sys_ioctl_h=${ac_cv_header_sys_ioctl_h=yes}

# cache the sizeof of "standard C types" so that configure can run faster.
ac_cv_sizeof_char=${ac_cv_sizeof_char=1}
ac_cv_sizeof_short=${ac_cv_sizeof_short=2}
ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8}
# Do not cache __int64 since it is not a standard C type and some compilers
# (e.g., gcc) does not support it.
ac_cv_sizeof_float=${ac_cv_sizeof_float=4}
ac_cv_sizeof_double=${ac_cv_sizeof_double=8}
ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=8}
ac_cv_sizeof_int8_t=${ac_cv_sizeof_int8_t=1}
ac_cv_sizeof_uint8_t=${ac_cv_sizeof_uint8_t=1}
ac_cv_sizeof_int_least8_t=${ac_cv_sizeof_int_least8_t=1}
ac_cv_sizeof_uint_least8_t=${ac_cv_sizeof_uint_least8_t=1}
# Do not cache int_fast8_t since the vendor changes often.
ac_cv_sizeof_int16_t=${ac_cv_sizeof_int16_t=2}
ac_cv_sizeof_uint16_t=${ac_cv_sizeof_uint16_t=2}
ac_cv_sizeof_int_least16_t=${ac_cv_sizeof_int_least16_t=2}
ac_cv_sizeof_uint_least16_t=${ac_cv_sizeof_uint_least16_t=2}
# Do not cache int_fast16_t since the vendor changes often.
ac_cv_sizeof_int32_t=${ac_cv_sizeof_int32_t=4}
ac_cv_sizeof_uint32_t=${ac_cv_sizeof_uint32_t=4}
ac_cv_sizeof_int_least32_t=${ac_cv_sizeof_int_least32_t=4}
ac_cv_sizeof_uint_least32_t=${ac_cv_sizeof_uint_least32_t=4}
ac_cv_sizeof_int_fast32_t=${ac_cv_sizeof_int_fast32_t=4}
ac_cv_sizeof_uint_fast32_t=${ac_cv_sizeof_uint_fast32_t=4}
ac_cv_sizeof_int64_t=${ac_cv_sizeof_int64_t=8}
ac_cv_sizeof_uint64_t=${ac_cv_sizeof_uint64_t=8}
ac_cv_sizeof_int_least64_t=${ac_cv_sizeof_int_least64_t=8}
ac_cv_sizeof_uint_least64_t=${ac_cv_sizeof_uint_least64_t=8}
ac_cv_sizeof_int_fast64_t=${ac_cv_sizeof_int_fast64_t=8}
ac_cv_sizeof_uint_fast64_t=${ac_cv_sizeof_uint_fast64_t=8}

# Don't cache long since it varies between 32 and 64 bits
#ac_cv_sizeof_long=${ac_cv_sizeof_long=4}