1
1
openmpi/config/ompi_fortran_get_kind_value.m4
Jeff Squyres b29b852281 Consolidate all the opal/orte/ompi .m4 files back to the top-level
config/ directory.  We split them apart a while ago in the hopes that
it would simplify things, but it didn't really (e.g., because there
were still some ompi/opal .m4 files in the top-level config/
directory, resulting in developer confusion where any given m4 macro
was defined).

So this commit consolidates them back into the top-level directory for
simplicity.  

There's still (at least) two changes that would be nice to make:

 1. Split any generated .m4 file (e.g., autogen-generated .m4 files)
    into a separate directory somewhere so that a top-level -Iconfig/
    will only get our explicitly defined macros, not the autogen stuff
    (e.g., with libevent2019 needing to get the visibility macro, but
    NOT all the autogen-generated inclusion of component configure.m4
    files).
 1. Change configure to be of the form:
{{{
# ...a small amount of preamble/setup...
OPAL_SETUP
m4_ifdef([project_orte], [ORTE_SETUP])
m4_ifdef([project_ompi], [OMPI_SETUP])
# ...a small amount of finishing stuff...
}}}

I doubt we'll ever get anything as clean as that, but that would be
the goal to shoot for.

This commit was SVN r27704.
2012-12-19 00:00:36 +00:00

98 строки
3.7 KiB
Bash

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-2012 Cisco Systems, Inc. All rights reserved.
dnl $COPYRIGHT$
dnl
dnl Additional copyrights may follow
dnl
dnl $HEADER$
dnl
# OMPI_FORTRAN_GET_KIND_VALUE(kind, decimal range, variable to set)
# -----------------------------------------------------------------
AC_DEFUN([OMPI_FORTRAN_GET_KIND_VALUE],[
# Use of m4_translit suggested by Eric Blake:
# http://lists.gnu.org/archive/html/bug-autoconf/2010-10/msg00016.html
AS_VAR_PUSHDEF([kind_value_var],
m4_translit([[ompi_cv_fortran_kind_value_$1]], [*], [p]))
rm -f conftest.out
AC_CACHE_CHECK([KIND value of Fortran $1], kind_value_var,
[if test $OMPI_WANT_FORTRAN_BINDINGS -eq 0 -o $ompi_fortran_happy -eq 0; then
value=skipped
else
AC_LANG_PUSH([Fortran])
value=
AC_RUN_IFELSE(AC_LANG_PROGRAM(, [[
use, intrinsic :: ISO_C_BINDING
open(unit = 7, file = "conftest.out")
write(7, *) $1
close(7)
]]), [value=`cat conftest.out | awk '{print [$]1}'`], [value=no], [value=cross])
rm -f conftest.out
fi
# If the compiler is ancient enough to not support the
# ISO_C_BINDING stuff, then we have to fall back to older
# tests. Yuck.
AS_IF([test "$value" = "no"],
[AC_MSG_RESULT([no ISO_C_BINDING -- fallback])
_OMPI_FORTRAN_SELECTED_INT_KIND($2, value)])
AS_IF([test "$value" = "no"],
[AC_MSG_WARN([Could not determine KIND value of $1])
AC_MSG_WARN([See config.log for more details])
AC_MSG_ERROR([Cannot continue])])
AS_IF([test "$value" = "cross"],
[AC_MSG_ERROR([Can not determine KIND value of $1 when cross-compiling])])
AS_VAR_SET(kind_value_var, [$value])
AC_LANG_POP([Fortran])
unset value
])
AS_VAR_COPY([$3], [kind_value_var])
AS_VAR_POPDEF([kind_value_var])
])dnl
# _OMPI_FORTRAN_SELECTED_INT_KIND(decimal range, variable to set)
# -----------------------------------------------------------------
AC_DEFUN([_OMPI_FORTRAN_SELECTED_INT_KIND],[
AS_VAR_PUSHDEF([sel_int_kind_var], [ompi_cv_fortran_int_kind_$1])
AC_CACHE_CHECK([Fortran value of selected_int_kind($1)], sel_int_kind_var,
[outval=no
AS_IF([test $OMPI_WANT_FORTRAN_BINDINGS -eq 1 -a $ompi_fortran_happy -eq 1],
[rm -f conftest.out
AC_LANG_PUSH([Fortran])
AC_RUN_IFELSE(AC_LANG_PROGRAM(, [[
open(8, file="conftest.out")
write(8, fmt="(I5)") selected_int_kind($1)
close(8)
]]), [outval=`cat conftest.out | awk '{print [$]1}'`], [outval=no], [outval=cross])
rm -f conftest.out
AC_LANG_POP([Fortran])
])
AS_VAR_SET(sel_int_kind_var, [$outval])
unset outval
])
# All analysis of $value is done in the upper-level / calling
# macro
AS_VAR_COPY([$2], [sel_int_kind_var])
AS_VAR_POPDEF([sel_int_kind_var])dnl
])