ddead64bcf
having it in config/ompi_setup_cxx.m4 2. Adding --enable-coverage option. This will add teh flags -ftest-coverage and -fprofile-arcs to the flags. Also, one needs to compile with debug and static only to enable code coverage 3. Adding the coverage flag options to WRAPPER_*_FLAGS so that mpicc and co., will add these to teh executables when they are compiled This commit was SVN r5416.
188 строки
5.1 KiB
Bash
188 строки
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])
|
|
|
|
# When building OMPI, we need this everywhere
|
|
|
|
CPPFLAGS="$CPPFLAGS -DOMPI_BUILDING=1"
|
|
|
|
# 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"])
|