configure.ac:
- Check for icc-8.1 segfaulting with varargs. - Add check for size of REAL*4,8,16 types and purge, if smaller - Fix configure-output with regard to checking for c-types for the REAL*-types. This commit was SVN r5661.
Этот коммит содержится в:
родитель
6a565b3fb7
Коммит
e06f0723a8
@ -47,6 +47,7 @@ sinclude(config/ompi_config_asm.m4)
|
|||||||
|
|
||||||
sinclude(config/ompi_case_sensitive_fs_setup.m4)
|
sinclude(config/ompi_case_sensitive_fs_setup.m4)
|
||||||
sinclude(config/ompi_check_optflags.m4)
|
sinclude(config/ompi_check_optflags.m4)
|
||||||
|
sinclude(config/ompi_check_icc.m4)
|
||||||
sinclude(config/ompi_config_subdir.m4)
|
sinclude(config/ompi_config_subdir.m4)
|
||||||
sinclude(config/ompi_config_subdir_args.m4)
|
sinclude(config/ompi_config_subdir_args.m4)
|
||||||
sinclude(config/ompi_configure_options.m4)
|
sinclude(config/ompi_configure_options.m4)
|
||||||
|
57
config/ompi_check_icc.m4
Обычный файл
57
config/ompi_check_icc.m4
Обычный файл
@ -0,0 +1,57 @@
|
|||||||
|
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 (c) 2004-2005 The Regents of the University of California.
|
||||||
|
dnl All rights reserved.
|
||||||
|
dnl $COPYRIGHT$
|
||||||
|
dnl
|
||||||
|
dnl Additional copyrights may follow
|
||||||
|
dnl
|
||||||
|
dnl $HEADER$
|
||||||
|
dnl
|
||||||
|
|
||||||
|
AC_DEFUN([OMPI_CHECK_ICC_VARARGS],[
|
||||||
|
dnl
|
||||||
|
dnl On EM64T, icc-8.1 before version 8.1.027 segfaulted, since
|
||||||
|
dnl va_start was miscompiled...
|
||||||
|
dnl
|
||||||
|
AC_MSG_CHECKING([whether icc-8.1 for EM64T works with variable arguments])
|
||||||
|
AC_TRY_RUN([
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
void func (int c, char * f, ...)
|
||||||
|
{
|
||||||
|
va_list arglist;
|
||||||
|
va_start (arglist, f);
|
||||||
|
/* vprintf (f, arglist); */
|
||||||
|
va_end (arglist);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main (int argc, char * argv[])
|
||||||
|
{
|
||||||
|
FILE *f;
|
||||||
|
func (4711, "Help %d [%s]\n", 10, "ten");
|
||||||
|
f=fopen ("conftestval", "w");
|
||||||
|
if (!f) exit (1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
],[ompi_ac_icc_varargs=`test -f conftestval`],[ompi_ac_icc_varargs=1],[ompi_ac_icc_varargs=1])
|
||||||
|
|
||||||
|
if test "$ompi_ac_icc_varargs" = "1"; then
|
||||||
|
AC_MSG_WARN([*** Problem running configure test!])
|
||||||
|
AC_MSG_WARN([*** Your icc-8.1 compiler seems to miscompile va_start!])
|
||||||
|
AC_MSG_WARN([*** Please upgrade compiler to at least version 8.1.027])
|
||||||
|
AC_MSG_ERROR([*** Cannot continue.])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
|
||||||
|
/bin/rm -f conftest*])dnl
|
@ -24,7 +24,7 @@ target_name="$2"
|
|||||||
types="$3"
|
types="$3"
|
||||||
|
|
||||||
# Announce
|
# Announce
|
||||||
AC_MSG_CHECKING([for C type corresopnding to $msg])
|
AC_MSG_CHECKING([for C type corresponding to $msg])
|
||||||
|
|
||||||
# Put a default answer in there
|
# Put a default answer in there
|
||||||
str="MPI_$target_name='not found'"
|
str="MPI_$target_name='not found'"
|
||||||
|
23
configure.ac
23
configure.ac
@ -272,6 +272,10 @@ if test "$GCC" = "yes"; then
|
|||||||
CFLAGS="$CFLAGS_save"
|
CFLAGS="$CFLAGS_save"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "x$CC" = "xicc"; then
|
||||||
|
OMPI_CHECK_ICC_VARARGS
|
||||||
|
fi
|
||||||
|
|
||||||
# If we want the profiling layer:
|
# If we want the profiling layer:
|
||||||
# - If the C compiler has weak symbols, use those.
|
# - If the C compiler has weak symbols, use those.
|
||||||
# - If not, then set to compile the code again with #define's in a
|
# - If not, then set to compile the code again with #define's in a
|
||||||
@ -441,6 +445,19 @@ else
|
|||||||
OMPI_F77_GET_SIZEOF(INTEGER*16, OMPI_SIZEOF_FORTRAN_INTEGER16)
|
OMPI_F77_GET_SIZEOF(INTEGER*16, OMPI_SIZEOF_FORTRAN_INTEGER16)
|
||||||
OMPI_F77_PURGE_UNSUPPORTED_KIND(INTEGER*16)
|
OMPI_F77_PURGE_UNSUPPORTED_KIND(INTEGER*16)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "$OMPI_HAVE_FORTRAN_REAL4" = "1" ; then
|
||||||
|
OMPI_F77_GET_SIZEOF(REAL*4, OMPI_SIZEOF_FORTRAN_REAL4)
|
||||||
|
OMPI_F77_PURGE_UNSUPPORTED_KIND(REAL*4)
|
||||||
|
fi
|
||||||
|
if test "$OMPI_HAVE_FORTRAN_REAL8" = "1" ; then
|
||||||
|
OMPI_F77_GET_SIZEOF(REAL*8, OMPI_SIZEOF_FORTRAN_REAL8)
|
||||||
|
OMPI_F77_PURGE_UNSUPPORTED_KIND(REAL*8)
|
||||||
|
fi
|
||||||
|
if test "$OMPI_HAVE_FORTRAN_REAL16" = "1" ; then
|
||||||
|
OMPI_F77_GET_SIZEOF(REAL*16, OMPI_SIZEOF_FORTRAN_REAL16)
|
||||||
|
OMPI_F77_PURGE_UNSUPPORTED_KIND(REAL*16)
|
||||||
|
fi
|
||||||
OMPI_F77_GET_ALIGNMENT(LOGICAL, OMPI_ALIGNMENT_FORTRAN_LOGICAL)
|
OMPI_F77_GET_ALIGNMENT(LOGICAL, OMPI_ALIGNMENT_FORTRAN_LOGICAL)
|
||||||
OMPI_F77_GET_ALIGNMENT(INTEGER, OMPI_ALIGNMENT_FORTRAN_INTEGER)
|
OMPI_F77_GET_ALIGNMENT(INTEGER, OMPI_ALIGNMENT_FORTRAN_INTEGER)
|
||||||
OMPI_F77_GET_ALIGNMENT(REAL, OMPI_ALIGNMENT_FORTRAN_REAL)
|
OMPI_F77_GET_ALIGNMENT(REAL, OMPI_ALIGNMENT_FORTRAN_REAL)
|
||||||
@ -1203,21 +1220,21 @@ if test "$OMPI_F77" != "none"; then
|
|||||||
float double long:double)
|
float double long:double)
|
||||||
if test "$OMPI_HAVE_FORTRAN_REAL4" = "1"; then
|
if test "$OMPI_HAVE_FORTRAN_REAL4" = "1"; then
|
||||||
OMPI_SIZEOF_FORTRAN_REAL4=4
|
OMPI_SIZEOF_FORTRAN_REAL4=4
|
||||||
OMPI_FIND_TYPE(Fortran REAL, FORTRAN_REAL4,
|
OMPI_FIND_TYPE(Fortran REAL4, FORTRAN_REAL4,
|
||||||
float double long:double)
|
float double long:double)
|
||||||
else
|
else
|
||||||
MPI_FORTRAN_REAL4_TYPE=float
|
MPI_FORTRAN_REAL4_TYPE=float
|
||||||
fi
|
fi
|
||||||
if test "$OMPI_HAVE_FORTRAN_REAL8" = "1"; then
|
if test "$OMPI_HAVE_FORTRAN_REAL8" = "1"; then
|
||||||
OMPI_SIZEOF_FORTRAN_REAL8=8
|
OMPI_SIZEOF_FORTRAN_REAL8=8
|
||||||
OMPI_FIND_TYPE(Fortran REAL, FORTRAN_REAL8,
|
OMPI_FIND_TYPE(Fortran REAL8, FORTRAN_REAL8,
|
||||||
float double long:double)
|
float double long:double)
|
||||||
else
|
else
|
||||||
MPI_FORTRAN_REAL8_TYPE=float
|
MPI_FORTRAN_REAL8_TYPE=float
|
||||||
fi
|
fi
|
||||||
if test "$OMPI_HAVE_FORTRAN_REAL16" = "1"; then
|
if test "$OMPI_HAVE_FORTRAN_REAL16" = "1"; then
|
||||||
OMPI_SIZEOF_FORTRAN_REAL16=16
|
OMPI_SIZEOF_FORTRAN_REAL16=16
|
||||||
OMPI_FIND_TYPE(Fortran REAL, FORTRAN_REAL16,
|
OMPI_FIND_TYPE(Fortran REAL16, FORTRAN_REAL16,
|
||||||
float double long:double)
|
float double long:double)
|
||||||
else
|
else
|
||||||
MPI_FORTRAN_REAL16_TYPE=float
|
MPI_FORTRAN_REAL16_TYPE=float
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user