1
1

* Ensure to pass the C++ exceptions flags to the C and Fortran

compilers as well.   Not doing this was causing problems with
   MPI::ERRORS_THROW_EXCEPTIONS with gcc in 32 bit (but not 64 bit!). 
 * Ensure that the C and Fortran compilers actually like the C++
   exceptions flags.  If not, currently just abort.  Let's see if
   anyone complains about this -- I doubt they will because a) C++
   exception support is not enabled by default, and b) I think C++
   exceptions really only make sense within the same compiler family.

This commit was SVN r19783.
Этот коммит содержится в:
Jeff Squyres 2008-10-21 20:25:20 +00:00
родитель 56c014a3a2
Коммит ac698173b9
3 изменённых файлов: 60 добавлений и 2 удалений

Просмотреть файл

@ -116,8 +116,24 @@ AC_DEFUN([OMPI_SETUP_CXX],[
OMPI_CXX_FIND_EXCEPTION_FLAGS
if test "$OMPI_CXX_EXCEPTIONS" = "1"; then
HAVE_CXX_EXCEPTIONS=1
CFLAGS="$CFLAGS $OMPI_CXX_EXCEPTIONS_CFLAGS"
FFLAGS="$FFLAGS $OMPI_CXX_EXCEPTIONS_FFLAGS"
# Test to see if the C compiler likes these flags
AC_MSG_CHECKING([to see if C compiler likes the exception flags])
CFLAGS="$CFLAGS $OMPI_CXX_EXCEPTIONS_CXXFLAGS"
AC_LANG_SAVE
AC_LANG_C
AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[]], [[int i = 0;]]),
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_MSG_WARN([C++ exception flags are different between the C and C++ compilers; this configure script cannot currently handle this scenario. Either disable C++ exception support or send mail to the Open MPI users list.])
AC_MSG_ERROR([*** Cannot continue])])
AC_LANG_RESTORE
# We can't test the F77 and F90 compilers now because we
# haven't found/set the up yet. So just save the flags
# and test them later (in ompi_setup_f77.m4 and
# ompi_setup_f90.m4).
CXXFLAGS="$CXXFLAGS $OMPI_CXX_EXCEPTIONS_CXXFLAGS"
LDFLAGS="$LDFLAGS $OMPI_CXX_EXCEPTIONS_LDFLAGS"

Просмотреть файл

@ -108,6 +108,27 @@ directory.
EOF
AC_MSG_ERROR([C and Fortran 77 compilers are not link compatible. Can not continue.])])])
# Test to see if the F90 compilers likes the C++ exceptions flags. If
# it doesn't, just abort. We *could* handle this scenario (e.g.,
# probe the F90 compiler for what flags would be necessary), but we're
# kinda assuming that no one will care. If they do, they'll e-mail us.
AC_MSG_CHECKING([to see if F77 compiler likes the C++ exception flags])
if test $OMPI_WANT_F77_BINDINGS -eq 0; then
AC_MSG_RESULT([skipped (no F77 bindings)])
elif test "$OMPI_CXX_EXCEPTIONS_CXXFLAGS" = ""; then
AC_MSG_RESULT([skipped (no C++ exceptions flags)])
else
FFLAGS="$FFLAGS $OMPI_CXX_EXCEPTIONS_CXXFLAGS"
AC_LANG_PUSH(Fortran 77)
AC_COMPILE_IFELSE(AC_LANG_PROGRAM([], [[ INTEGER I
I = 3]]),
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_MSG_WARN([C++ exception flags are different between the C and C++ compilers; this configure script cannot currently handle this scenario. Either disable C++ exception support or send mail to the Open MPI users list.])
AC_MSG_ERROR([*** Cannot continue])])
AC_LANG_POP
fi
AC_DEFINE_UNQUOTED(OMPI_WANT_F77_BINDINGS, $OMPI_WANT_F77_BINDINGS,
[Whether we want the MPI f77 bindings or not])
AC_DEFINE_UNQUOTED(OMPI_F77, "$OMPI_F77", [OMPI underlying F77 compiler])

Просмотреть файл

@ -172,6 +172,27 @@ AS_IF([test $OMPI_WANT_F90_BINDINGS -eq 1],
AC_FC_SRCEXT(f90)
AC_LANG_POP(Fortran)])
# Test to see if the F90 compilers likes the C++ exceptions flags. If
# it doesn't, just abort. We *could* handle this scenario (e.g.,
# probe the F90 compiler for what flags would be necessary), but we're
# kinda assuming that no one will care. If they do, they'll e-mail us.
AC_MSG_CHECKING([to see if F90 compiler likes the C++ exception flags])
if test "$OMPI_WANT_F90_BINDINGS" = "0"; then
AC_MSG_RESULT([skipped (no F90 bindings)])
elif test "$OMPI_CXX_EXCEPTIONS_CXXFLAGS" = ""; then
AC_MSG_RESULT([skipped (no C++ exceptions flags)])
else
FCFLAGS="$FFLAGS $OMPI_CXX_EXCEPTIONS_CXXFLAGS"
AC_LANG_PUSH(Fortran)
AC_COMPILE_IFELSE(AC_LANG_PROGRAM([], [[ INTEGER I
I = 3]]),
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_MSG_WARN([C++ exception flags are different between the C and C++ compilers; this configure script cannot currently handle this scenario. Either disable C++ exception support or send mail to the Open MPI users list.])
AC_MSG_ERROR([*** Cannot continue])])
AC_LANG_POP
fi
# All done -- save values
AC_DEFINE_UNQUOTED(OMPI_WANT_F90_BINDINGS, $OMPI_WANT_F90_BINDINGS,
[Whether we want the MPI f90 bindings or not])