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.
181 строка
5.3 KiB
Bash
181 строка
5.3 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_CXX],[
|
|
|
|
# Modularize this setup so that sub-configure.in scripts can use this
|
|
# same setup code.
|
|
|
|
ompi_show_subtitle "C++ compiler and preprocessor"
|
|
|
|
ompi_cxxflags_save="$CXXFLAGS"
|
|
AC_PROG_CXX
|
|
AC_PROG_CXXCPP
|
|
BASECXX="`basename $CXX`"
|
|
CXXFLAGS="$ompi_cxxflags_save"
|
|
AC_DEFINE_UNQUOTED(OMPI_CXX, "$CXX", [OMPI underlying C++ compiler])
|
|
OMPI_CXX_ABSOLUTE="`which $CXX`"
|
|
AC_SUBST(OMPI_CXX_ABSOLUTE)
|
|
|
|
# Check for compilers that impersonate g++
|
|
|
|
AC_MSG_CHECKING([for compilers that impersonate g++])
|
|
msg=
|
|
TRULY_GXX=$GXX
|
|
if test "$GXX" = "yes"; then
|
|
AC_TRY_COMPILE([], [
|
|
int i = 3;
|
|
#if __INTEL_COMPILER
|
|
#error Yes, I am lying about being g++.
|
|
#endif
|
|
], [], [msg=intel])
|
|
|
|
# If we made it through unscathed, then it really is g++
|
|
if test -z "$msg"; then
|
|
TRULY_GXX=yes
|
|
else
|
|
TRULY_GXX=no
|
|
fi
|
|
else
|
|
# We never thought that this was GXX to begin with
|
|
msg="not applicable"
|
|
TRULY_GXX=no
|
|
fi
|
|
AC_MSG_RESULT([$msg])
|
|
|
|
# Do we want code coverage
|
|
if test "$WANT_COVERAGE" = "1"; then
|
|
if test "$TRULY_GXX" = "yes"; then
|
|
AC_MSG_WARN([-fprofile-arcs -ftest-coverage has been added to CFLAGS (--enable-coverage)])
|
|
WANT_DEBUG=1
|
|
CXXFLAGS="-ftest-coverage -fprofile-arcs ${CXXFLAGS}"
|
|
WRAPPER_EXTRA_CXXFLAGS="-ftest-coverage -fprofile-arcs ${WRAPPER_EXTRA_CXXFLAGS}"
|
|
else
|
|
AC_MSG_WARN([Code coverage functionality is currently available only with GCC suite])
|
|
AC_MSG_ERROR([Configure: cannot continue])
|
|
fi
|
|
fi
|
|
|
|
# Do we want debugging?
|
|
|
|
if test "$WANT_DEBUG" = "1"; then
|
|
CXXFLAGS="$CXXFLAGS -g"
|
|
OMPI_UNIQ(CXXFLAGS)
|
|
AC_MSG_WARN([-g has been added to CXXFLAGS (--enable-debug)])
|
|
fi
|
|
|
|
# These flags are generally g++-specific; even the g++-impersonating
|
|
# compilers won't accept them.
|
|
|
|
OMPI_CXXFLAGS_BEFORE_PICKY="$CXXFLAGS"
|
|
if test "$TRULY_GXX" = "yes" -a "$WANT_PICKY_COMPILER" = 1; then
|
|
add="-g -Wall -Wundef -Wno-long-long"
|
|
|
|
# see if -Wno-long-double works...
|
|
AC_LANG_PUSH(C++)
|
|
CXXFLAGS_orig="$CXXFLAGS"
|
|
CXXFLAGS="$CXXFLAGS -Wno-long-double"
|
|
AC_TRY_COMPILE([], [], add="$add -Wno-long-double")
|
|
CXXFLAGS="$CXXFLAGS_orig"
|
|
AC_LANG_POP(C++)
|
|
|
|
CXXFLAGS="$CXXFLAGS $add"
|
|
OMPI_UNIQ(CXXFLAGS)
|
|
AC_MSG_WARN([$add has been added to CXXFLAGS (--enable-picky)])
|
|
unset add
|
|
fi
|
|
|
|
# See if this version of g++ allows -finline-functions
|
|
|
|
if test "$GXX" = "yes"; then
|
|
CXXFLAGS_orig="$CXXFLAGS"
|
|
CXXFLAGS="$CXXFLAGS -finline-functions"
|
|
add=
|
|
AC_TRY_COMPILE([], [], add=" -finline-functions")
|
|
CXXFLAGS="$CXXFLAGS_orig$add"
|
|
OMPI_UNIQ(CXXFLAGS)
|
|
AC_MSG_WARN([$add has been added to CXXFLAGS])
|
|
unset add
|
|
fi
|
|
|
|
# Check for special things due to C++ exceptions
|
|
|
|
ENABLE_CXX_EXCEPTIONS=no
|
|
HAVE_CXX_EXCEPTIONS=0
|
|
AC_ARG_ENABLE(cxx-exceptions,
|
|
AC_HELP_STRING([--enable-cxx-exceptions],
|
|
[enable support for C++ exceptions]),
|
|
[ENABLE_CXX_EXCEPTIONS="$enableval"])
|
|
|
|
AC_MSG_CHECKING([if want C++ exception handling])
|
|
AC_MSG_RESULT([$ENABLE_CXX_EXCEPTIONS])
|
|
if test "$ENABLE_CXX_EXCEPTIONS" = "yes"; then
|
|
# config/cxx_have_exceptions.m4
|
|
OMPI_CXX_HAVE_EXCEPTIONS
|
|
# config/cxx_find_exception_flags.m4
|
|
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"
|
|
CXXFLAGS="$CXXFLAGS $OMPI_CXX_EXCEPTIONS_CXXFLAGS"
|
|
LDFLAGS="$LDFLAGS $OMPI_CXX_EXCEPTIONS_LDFLAGS"
|
|
|
|
WRAPPER_EXTRA_CFLAGS="$OMPI_CXX_EXCEPTIONS_CFLAGS ${WRAPPER_EXTRA_CFLAGS}"
|
|
WRAPPER_EXTRA_FFLAGS="$OMPI_CXX_EXCEPTIONS_FFLAGS ${WRAPPER_EXTRA_FFLAGS}"
|
|
WRAPPER_EXTRA_CXXFLAGS="$OMPI_CXX_EXCEPTIONS_CXXFLAGS ${WRAPPER_EXTRA_CXXFLAGS}"
|
|
fi
|
|
fi
|
|
AC_DEFINE_UNQUOTED(OMPI_HAVE_CXX_EXCEPTION_SUPPORT, $HAVE_CXX_EXCEPTIONS,
|
|
[Whether or not we have compiled with C++ exceptions support])
|
|
|
|
# Find some more characteristics of the C++ compiler
|
|
|
|
# config/cxx_find_template_repository.m4
|
|
OMPI_CXX_FIND_TEMPLATE_REPOSITORY
|
|
# config/cxx_find_template_parameters.m4
|
|
OMPI_CXX_FIND_TEMPLATE_PARAMETERS
|
|
|
|
# If we are on HP-UX, ensure that we're using aCC
|
|
case "$host" in
|
|
*hpux*)
|
|
if test "$BASECXX" = "CC"; then
|
|
AC_MSG_WARN([*** You will probably have problems compiling the MPI 2])
|
|
AC_MSG_WARN([*** C++ bindings with the HP-UX CC compiler. You should])
|
|
AC_MSG_WARN([*** probably be using the aCC compiler. Re-run configure])
|
|
AC_MSG_WARN([*** with the environment variable "CXX=aCC".])
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
# Same rationale for g++ as with gcc in OMPI_SETUP_CC.
|
|
|
|
# Note: gcc-imperonating compilers accept -O3, so there's no need for
|
|
# $TRULY_GCC here.
|
|
|
|
if test "$GXX" = yes; then
|
|
OPTFLAGS="-O3"
|
|
else
|
|
OPTFLAGS="-O"
|
|
fi
|
|
# config/ompi_check_optflags.m4
|
|
OMPI_CHECK_OPTFLAGS("$CXXFLAGS")
|
|
AC_MSG_CHECKING([for C++ optimization flags])
|
|
AC_MSG_RESULT([$co_result])
|
|
CXXFLAGS="$co_result"
|
|
])
|