dnl -*- shell-script -*-
dnl
dnl Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana
dnl                         University Research and Technology
dnl                         Corporation.  All rights reserved.
dnl Copyright (c) 2004-2005 The University of Tennessee and The University
dnl                         of Tennessee Research Foundation.  All rights
dnl                         reserved.
dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, 
dnl                         University of Stuttgart.  All rights reserved.
dnl Copyright (c) 2004-2005 The Regents of the University of California.
dnl                         All rights reserved.
dnl Copyright (c) 2010      Cisco Systems, Inc.  All rights reserved.
dnl $COPYRIGHT$
dnl 
dnl Additional copyrights may follow
dnl 
dnl $HEADER$
dnl

AC_DEFUN([OMPI_F90_FIND_MODULE_INCLUDE_FLAG],[
    AS_VAR_PUSHDEF([f90_inc_var], [ompi_cv_f90_module_include_flag])
    
    if test "$OMPI_WANT_F90_BINDINGS" -eq 1 ; then
        AC_CACHE_CHECK([for Fortran 90 compiler module include flag], 
           f90_inc_var,
           [ofi_possible_flags="-I -p -M"
            mkdir conftest.$$
            cd conftest.$$

            # Try to compile an F90 module
            mkdir subdir
            cd subdir
            cat > conftest-module.f90 <<EOF
module OMPI_MOD_FLAG

  type OMPI_MOD_FLAG_TYPE
    integer :: i
  end type OMPI_MOD_FLAG_TYPE

end module OMPI_MOD_FLAG
EOF

            OPAL_LOG_COMMAND([$FC $FCFLAGS $FCFLAGS_f90 -c conftest-module.f90 $LDFLAGS $LIBS], , 
                [cd  ..
                 rm -rf conftest.$$
                 AC_MSG_RESULT([Whoops!])
                 AC_MSG_WARN([*** Cannot seem to compile an f90 module])
                 AC_MSG_ERROR([Cannot continue])])
            cd ..

            #
            # Now try to compile a simple program usinng that module, iterating
            # through the possible flags that the compiler might use
            #

            cat > conftest.f90 <<EOF
program f90usemodule
  use OMPI_MOD_FLAG
end program f90usemodule
EOF

            ofi_module_flag=
            for flag in $ofi_possible_flags; do
                if test "$ofi_module_flag" = ""; then
                    OPAL_LOG_COMMAND([$FC $FCFLAGS $FCFLAGS_f90 conftest.f90 ${flag}subdir $LDFLAGS $LIBS],
                            [AS_VAR_SET(f90_inc_var, [$flag])
                            ofi_module_flag="$flag"])
                fi
            done
            cd ..
            rm -rf conftest.$$
        ])

        AS_VAR_COPY([OMPI_FC_MODULE_FLAG], [f90_inc_var])
        if test "$OMPI_FC_MODULE_FLAG" = ""; then
        AC_MSG_WARN([*** Could not determine the f90 compiler flag to indicate where modules reside])
        AC_MSG_ERROR([*** Cannot continue])
        fi
    else
        OMPI_FC_MODULE_FLAG=
    fi
    AC_SUBST(OMPI_FC_MODULE_FLAG)
    AS_VAR_POPDEF([f90_inc_var])
])dnl