d78ecb98d8
- Take Ben Allan's suggestion to have ompi_info show the absolute path name of the compilers that were used to compile OMPI This commit was SVN r6075.
186 строки
5.1 KiB
Bash
186 строки
5.1 KiB
Bash
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_SETUP_CC],[
|
|
|
|
# Modularize this setup so that sub-configure.in scripts can use this
|
|
# same setup code.
|
|
|
|
ompi_show_subtitle "C compiler and preprocessor"
|
|
|
|
# $%@#!@#% AIX!! This has to be called before anything invokes the C
|
|
# compiler.
|
|
|
|
dnl AC_AIX
|
|
|
|
#
|
|
# Check for the compiler
|
|
#
|
|
|
|
ompi_cflags_save="$CFLAGS"
|
|
AC_PROG_CC
|
|
BASECC="`basename $CC`"
|
|
CFLAGS="$ompi_cflags_save"
|
|
AC_DEFINE_UNQUOTED(OMPI_CC, "$CC", [OMPI underlying C compiler])
|
|
OMPI_CC_ABSOLUTE="`which $CC`"
|
|
AC_SUBST(OMPI_CC_ABSOLUTE)
|
|
|
|
# Check for compilers that impersonate gcc
|
|
|
|
AC_MSG_CHECKING([for compilers that impersonate gcc])
|
|
msg=
|
|
TRULY_GCC=$GCC
|
|
if test "$GCC" = "yes"; then
|
|
AC_TRY_COMPILE([], [
|
|
int i = 3;
|
|
#if __INTEL_COMPILER
|
|
#error Yes, I am lying about being gcc.
|
|
#endif
|
|
], [], [msg=intel])
|
|
|
|
# If we made it through unscathed, then it really is gcc
|
|
if test -z "$msg"; then
|
|
TRULY_GCC=yes
|
|
else
|
|
TRULY_GCC=no
|
|
fi
|
|
else
|
|
# We never thought that this was gcc to begin with
|
|
msg="not applicable"
|
|
TRULY_GCC=no
|
|
fi
|
|
AC_MSG_RESULT([$msg])
|
|
|
|
# Do we want code coverage
|
|
if test "$WANT_COVERAGE" = "1"; then
|
|
if test "$TRULY_GCC" = "yes"; then
|
|
CLEANFILES="*.bb *.bbg *.da *.*.gcov ${CLEANFILES}"
|
|
AC_MSG_WARN([-fprofile-arcs -ftest-coverage has been added to CFLAGS (--enable-coverage)])
|
|
WANT_DEBUG=1
|
|
CFLAGS="-ftest-coverage -fprofile-arcs ${CFLAGS}"
|
|
WRAPPER_EXTRA_CFLAGS="-ftest-coverage -fprofile-arcs ${WRAPPER_EXTRA_CFLAGS}"
|
|
else
|
|
AC_MSG_WARN([Code coverage functionality is currently available only with GCC])
|
|
AC_MSG_ERROR([Configure: Cannot continue])
|
|
fi
|
|
fi
|
|
|
|
# Do we want debugging?
|
|
|
|
if test "$WANT_DEBUG" = "1"; then
|
|
CFLAGS="$CFLAGS -g"
|
|
OMPI_UNIQ(CFLAGS)
|
|
AC_MSG_WARN([-g has been added to CFLAGS (--enable-debug)])
|
|
fi
|
|
|
|
# These flags are generally gcc-specific; even the gcc-impersonating
|
|
# compilers won't accept them.
|
|
|
|
OMPI_CFLAGS_BEFORE_PICKY="$CFLAGS"
|
|
if test "$TRULY_GCC" = "yes" -a "$WANT_PICKY_COMPILER" = 1; then
|
|
add="-Wall -Wundef -Wno-long-long -Wsign-compare"
|
|
add="$add -Wmissing-prototypes -Wstrict-prototypes"
|
|
add="$add -Wcomment -pedantic"
|
|
|
|
# see if -Wno-long-double works...
|
|
CFLAGS_orig="$CFLAGS"
|
|
CFLAGS="$CFLAGS -Wno-long-double"
|
|
AC_TRY_COMPILE([], [], add="$add -Wno-long-double")
|
|
CFLAGS="$CFLAGS_orig"
|
|
|
|
add="$add -Werror-implicit-function-declaration "
|
|
|
|
CFLAGS="$CFLAGS $add"
|
|
OMPI_UNIQ(CFLAGS)
|
|
AC_MSG_WARN([$add has been added to CFLAGS (--enable-picky)])
|
|
unset add
|
|
fi
|
|
|
|
# See if this version of gcc allows -finline-functions and/or
|
|
# -fno-strict-aliasing. Even check the gcc-impersonating compilers.
|
|
if test "$GCC" = "yes"; then
|
|
CFLAGS_orig="$CFLAGS"
|
|
|
|
CFLAGS="$CFLAGS_orig -finline-functions"
|
|
add=
|
|
AC_TRY_COMPILE([], [], add=" -finline-functions")
|
|
CFLAGS="$CFLAGS_orig$add"
|
|
|
|
CFLAGS="$CFLAGS_orig -fno-strict-aliasing"
|
|
add=
|
|
AC_TRY_COMPILE([], [], add=" -fno-strict-aliasing")
|
|
CFLAGS="$CFLAGS_orig$add"
|
|
|
|
OMPI_UNIQ(CFLAGS)
|
|
AC_MSG_WARN([$add has been added to CFLAGS])
|
|
unset add
|
|
fi
|
|
|
|
# Try to enable restrict keyword
|
|
RESTRICT_CFLAGS=
|
|
case "${host}" in
|
|
ia64-unknown-linux*)
|
|
if test "$CC" = "ecc" ; then
|
|
RESTRICT_CFLAGS="-restrict"
|
|
fi
|
|
;;
|
|
mips-sgi-irix*)
|
|
if test "$CC" = "cc" ; then
|
|
RESTRICT_CFLAGS="-LANG:restrict=ON"
|
|
fi
|
|
;;
|
|
i?86-pc-linux*)
|
|
if test "$CC" = "icc" ; then
|
|
RESTRICT_CFLAGS="-restrict"
|
|
fi
|
|
;;
|
|
esac
|
|
if test ! -z "$RESTRICT_CFLAGS" ; then
|
|
CFLAGS_orig="$CFLAGS"
|
|
CFLAGS="$CFLAGS_orig $RESTRICT_CFLAGS"
|
|
add=
|
|
AC_TRY_COMPILE([], [], add=" $RESTRICT_CFLAGS")
|
|
CFLAGS="${CFLAGS_orig}${add}"
|
|
OMPI_UNIQ(CFLAGS)
|
|
AC_MSG_WARN([$add has been added to CFLAGS])
|
|
unset add
|
|
fi
|
|
|
|
# Preload the optflags for the case where the user didn't specify any.
|
|
# If we're using GNU compilers, use -O3 (since it GNU doesn't require
|
|
# all compilation units to be compiled with the same level of
|
|
# optimization -- selecting a high level of optimization is not
|
|
# prohibitive). If we're using anything else, be conservative and
|
|
# just use -O.
|
|
|
|
# Note: gcc-imperonating compilers accept -O3, so there's no need for
|
|
# $TRULY_GCC here.
|
|
|
|
if test "$GCC" = yes; then
|
|
OPTFLAGS="-O3"
|
|
else
|
|
OPTFLAGS="-O"
|
|
fi
|
|
|
|
OMPI_CHECK_OPTFLAGS("$OMPI_CFLAGS_BEFORE_PICKY")
|
|
OMPI_CFLAGS_BEFORE_PICKY="$co_result"
|
|
|
|
AC_MSG_CHECKING([for C optimization flags])
|
|
OMPI_CHECK_OPTFLAGS("$CFLAGS")
|
|
AC_MSG_RESULT([$co_result])
|
|
CFLAGS="$co_result"])
|