1
1
openmpi/config/f77_find_ext_symbol_convention.m4

97 строки
3.6 KiB
Plaintext
Исходник Обычный вид История

dnl -*- shell-script -*-
dnl
dnl Copyright (c) 2004-2005 The Trustees of Indiana University.
dnl All rights reserved.
dnl Copyright (c) 2004-2005 The Trustees of the University of Tennessee.
dnl All rights reserved.
dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
dnl University of Stuttgart. All rights reserved.
dnl $COPYRIGHT$
dnl
dnl Additional copyrights may follow
dnl
dnl $HEADER$
dnl
define(OMPI_F77_FIND_EXT_SYMBOL_CONVENTION,[
AC_MSG_CHECKING($1 external symbol convention)
ompi_fortran_double_underscore=0
ompi_fortran_single_underscore=0
ompi_fortran_caps=0
ompi_fortran_plain=0
# If we didn't find an f77 compiler, or if we don't want the f77
# bindings, just leave everything hardwired to 0. Otherwise, do the
# real test.
if test "$1" = "none" -o "$OMPI_WANT_F77_BINDINGS" = "0"; then
AC_MSG_RESULT([no Fortran 77 bindings -- skipped])
else
cat > conftestf.f <<EOF
subroutine FOO_bar(a)
integer a
a = 1
return
end
EOF
$1 $FFLAGS -c conftestf.f 1>&5 2>&1
if test ! -s conftestf.o; then
AC_MSG_WARN(unable to produce an object file testing F77 compiler)
else
nm conftestf.o | grep foo_bar__ > /dev/null 2>&1
if test $? = "0"; then
AC_MSG_RESULT([double underscore])
ompi_fortran_double_underscore=1
ompi_ac_doubleunder=y
else
nm conftestf.o | grep foo_bar_ > /dev/null 2>&1
if test $? = "0"; then
AC_MSG_RESULT([single underscore])
ompi_fortran_single_underscore=1
ompi_ac_singleunder=y
else
# We may get into trouble here if we start accepting
# mixed case compilers -- we may need to have caps
# underscore, or caps double underscore, for example.
# But we haven't found any that require that yet. :-)
nm conftestf.o | grep FOO_bar > /dev/null 2>&1
if test $? = "0"; then
AC_MSG_RESULT([mixed case, so FORTRANCAPS])
ompi_fortran_caps=1
ompi_ac_caps=y
else
nm conftestf.o | grep foo_bar > /dev/null 2>&1
if test $? = "0"; then
AC_MSG_RESULT([no underscore])
ompi_fortran_plain=1
ompi_ac_nounder=y
else
nm conftestf.o | grep FOO_BAR > /dev/null 2>&1
if test $? = "0"; then
AC_MSG_RESULT([all upper case])
ompi_fortran_caps=1
ompi_ac_caps=y
else
AC_MSG_WARN([*** Could not find name of subroutine foo_bar])
AC_MSG_ERROR([Cannot continue])
fi
fi
fi
fi
fi
fi
fi
AC_DEFINE_UNQUOTED(OMPI_F77_DOUBLE_UNDERSCORE,
$ompi_fortran_double_underscore,
[Whether fortran symbols have a trailing double underscore or not])
AC_DEFINE_UNQUOTED(OMPI_F77_SINGLE_UNDERSCORE, $ompi_fortran_single_underscore,
[Whether fortran symbols have a trailing underscore or not])
AC_DEFINE_UNQUOTED(OMPI_F77_CAPS, $ompi_fortran_caps,
[Whether fortran symbols are all caps or not])
AC_DEFINE_UNQUOTED(OMPI_F77_PLAIN, $ompi_fortran_plain,
[Whether fortran symbols have no trailing underscore or not])
/bin/rm -f conftestf.f conftestf.o])dnl