1
1
openmpi/config/ompi_setup_wrappers.m4
Brian Barrett c96f870674 * Merge of wrapper compiler updates from the bwb-wrapper-fix branch (r8690 -
r8698), with changes below:

  - Split wrapper flags into those required for each of the three projects,
    and cleaned up some cruft (including the LIBMPI_EXTRA_*FLAGS) through-
    out the build system
  - Added opal_init_util and opal_finalize_util to allow init / cleanup
    of all the opal code that doesn't require the MCA system
  - Create standalone key=value file parser, based on the one that used
    to be in the mca param parser, so that it can be shared in multiple
    places
  - Add wrapper datafiles for opal, orte, and ompi wrappers, and add
    wrapper compiler with support for all the old features

This commit was SVN r8699.

The following SVN revisions from the original message are invalid or
inconsistent and therefore were not cross-referenced:
  r8690
  r8698
2006-01-16 01:48:03 +00:00

296 строки
12 KiB
Bash

dnl -*- shell-script -*-
dnl
dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
dnl University Research and Technology
dnl Corporation. All rights reserved.
dnl Copyright (c) 2004-2005 The University of Tennessee and The University
dnl of Tennessee Research Foundation. All rights
dnl 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
# OMPI_SETUP_WRAPPER_INIT()
# -------------------------
# Setup wrapper compiler configuration information - should be called
# before the bulk of the tests that can affect the wrapper compilers
#
# Note that we keep the user-specified flags seperately because we
# don't want them to go through OMPI_UNIQ because that has resulted in
# unexpected behavior for the user in the past.
AC_DEFUN([OMPI_SETUP_WRAPPER_INIT],[
WRAPPER_EXTRA_CPPFLAGS=
WRAPPER_EXTRA_CFLAGS=
WRAPPER_EXTRA_CXXFLAGS=
WRAPPER_EXTRA_FFLAGS=
WRAPPER_EXTRA_FCFLAGS=
WRAPPER_EXTRA_LDFLAGS=
WRAPPER_EXTRA_LIBS=
USER_WRAPPER_EXTRA_CFLAGS=
USER_WRAPPER_EXTRA_CXXFLAGS=
USER_WRAPPER_EXTRA_FFLAGS=
USER_WRAPPER_EXTRA_FCFLAGS=
USER_WRAPPER_EXTRA_LDFLAGS=
USER_WRAPPER_EXTRA_LIBS=
AC_ARG_WITH([wrapper-cflags],
[AC_HELP_STRING([--with-wrapper-cflags],
[Extra flags to add to CFLAGS when using mpicc])])
if test "$with_wrapper_cflags" = "yes" -o "$with_wrapper_cflags" = "no"; then
AC_MSG_ERROR([--with-wrapper-cflags must have an argument. Aborting])
elif test ! -z "$with_wrapper_cflags" ; then
USER_WRAPPER_EXTRA_CFLAGS="$with_wrapper_cflags"
fi
AC_ARG_WITH([wrapper-cxxflags],
[AC_HELP_STRING([--with-wrapper-cxxflags],
[Extra flags to add to CXXFLAGS when using mpiCC/mpic++])])
if test "$with_wrapper_cxxflags" = "yes" -o "$with_wrapper_cxxflags" = "no"; then
AC_MSG_ERROR([--with-wrapper-cxxflags must have an argument. Aborting])
elif test ! -z "$with_wrapper_cxxflags" ; then
USER_WRAPPER_EXTRA_CXXFLAGS="$with_wrapper_cxxflags"
fi
AC_ARG_WITH([wrapper-fflags],
[AC_HELP_STRING([--with-wrapper-fflags],
[Extra flags to add to FFLAGS when using mpif77])])
if test "$with_wrapper_fflags" = "yes" -o "$with_wrapper_fflags" = "no"; then
AC_MSG_ERROR([--with-wrapper-fflags must have an argument. Aborting])
elif test ! -z "$with_wrapper_fflags" ; then
USER_WRAPPER_EXTRA_FFLAGS="$with_wrapper_fflags"
fi
AC_ARG_WITH([wrapper-fcflags],
[AC_HELP_STRING([--with-wrapper-fcflags],
[Extra flags to add to FCFLAGS when using mpif90])])
if test "$with_wrapper_fcflags" = "yes" -o "$with_wrapper_fcflags" = "no"; then
AC_MSG_ERROR([--with-wrapper-fcflags must have an argument. Aborting])
elif test ! -z "$with_wrapper_fcflags" ; then
USER_WRAPPER_EXTRA_FCFLAGS="$with_wrapper_fcflags"
fi
AC_ARG_WITH([wrapper-ldflags],
[AC_HELP_STRING([--with-wrapper-ldflags],
[Extra flags to add to LDFLAGS when using wrapper compilers])])
if test "$with_wrapper_ldflags" = "yes" -o "$with_wrapper_ldflags" = "no"; then
AC_MSG_ERROR([--with-wrapper-ldflags must have an argument. Aborting])
elif test ! -z "$with_wrapper_ldflags" ; then
USER_WRAPPER_EXTRA_LDFLAGS="$with_wrapper_ldflags"
fi
AC_ARG_WITH([wrapper-libs],
[AC_HELP_STRING([--with-wrapper-libs],
[Extra flags to add to LIBS when using wrapper compilers])])
if test "$with_wrapper_libs" = "yes" -o "$with_wrapper_libs" = "no"; then
AC_MSG_ERROR([--with-wrapper-libs must have an argument. Aborting])
elif test ! -z "$with_wrapper_libs" ; then
USER_WRAPPER_EXTRA_LIBS="$with_wrapper_libs"
fi
])
AC_DEFUN([OMPI_SETUP_WRAPPER_FINAL],[
OMPI_UNIQ([WRAPPER_EXTRA_CPPFLAGS])
OMPI_UNIQ([WRAPPER_EXTRA_CFLAGS])
OMPI_UNIQ([WRAPPER_EXTRA_CXXFLAGS])
OMPI_UNIQ([WRAPPER_EXTRA_FFLAGS])
OMPI_UNIQ([WRAPPER_EXTRA_FCFLAGS])
OMPI_UNIQ([WRAPPER_EXTRA_LDFLAGS])
#
# OPAL
#
OMPI_UNIQ([opal_WRAPPER_EXTRA_LDFLAGS])
OMPI_UNIQ([opal_WRAPPER_EXTRA_LIBS])
AC_MSG_CHECKING([for OPAL CPPFLAGS])
OPAL_WRAPPER_EXTRA_CPPFLAGS="$WRAPPER_EXTRA_CPPFLAGS $USER_WRAPPER_EXTRA_CPPFLAGS"
AC_SUBST([OPAL_WRAPPER_EXTRA_CPPFLAGS])
AC_MSG_RESULT([$OPAL_WRAPPER_EXTRA_CPPFLAGS])
AC_MSG_CHECKING([for OPAL CFLAGS])
OPAL_WRAPPER_EXTRA_CFLAGS="$WRAPPER_EXTRA_CFLAGS $USER_WRAPPER_EXTRA_CFLAGS"
AC_SUBST([OPAL_WRAPPER_EXTRA_CFLAGS])
AC_MSG_RESULT([$OPAL_WRAPPER_EXTRA_CFLAGS])
AC_MSG_CHECKING([for OPAL CXXFLAGS])
OPAL_WRAPPER_EXTRA_CXXFLAGS="$WRAPPER_EXTRA_CXXFLAGS $USER_WRAPPER_EXTRA_CXXFLAGS"
AC_SUBST([OPAL_WRAPPER_EXTRA_CXXFLAGS])
AC_MSG_RESULT([$OPAL_WRAPPER_EXTRA_CXXFLAGS])
AC_MSG_CHECKING([for OPAL LDFLAGS])
OPAL_WRAPPER_EXTRA_LDFLAGS="$opal_WRAPPER_EXTRA_LDFLAGS $WRAPPER_EXTRA_LDFLAGS $USER_WRAPPER_EXTRA_LDFLAGS"
AC_SUBST([OPAL_WRAPPER_EXTRA_LDFLAGS])
AC_MSG_RESULT([$OPAL_WRAPPER_EXTRA_LDFLAGS])
AC_MSG_CHECKING([for OPAL LIBS])
OPAL_WRAPPER_EXTRA_LIBS="$opal_WRAPPER_EXTRA_LIBS $WRAPPER_EXTRA_LIBS $USER_WRAPPER_EXTRA_LIBS"
AC_SUBST([OPAL_WRAPPER_EXTRA_LIBS])
AC_MSG_RESULT([$OPAL_WRAPPER_EXTRA_LIBS])
AC_MSG_CHECKING([for OPAL extra include dirs])
if test "$WANT_INSTALL_HEADERS" = "1" ; then
OPAL_WRAPPER_EXTRA_INCLUDES="openmpi openmpi/opal"
else
OPAL_WRAPPER_EXTRA_INCLUDES=
fi
AC_SUBST([OPAL_WRAPPER_EXTRA_INCLUDES])
AC_MSG_RESULT([$OPAL_WRAPPER_EXTRA_INCLUDES])
#
# ORTE
#
OMPI_UNIQ([orte_WRAPPER_EXTRA_LDFLAGS])
OMPI_UNIQ([orte_WRAPPER_EXTRA_LIBS])
AC_MSG_CHECKING([for ORTE CPPFLAGS])
ORTE_WRAPPER_EXTRA_CPPFLAGS="$OPAL_WRAPPER_EXTRA_CPPFLAGS"
AC_SUBST([ORTE_WRAPPER_EXTRA_CPPFLAGS])
AC_MSG_RESULT([$ORTE_WRAPPER_EXTRA_CPPFLAGS])
AC_MSG_CHECKING([for ORTE CFLAGS])
ORTE_WRAPPER_EXTRA_CFLAGS="$OPAL_WRAPPER_EXTRA_CFLAGS"
AC_SUBST([ORTE_WRAPPER_EXTRA_CFLAGS])
AC_MSG_RESULT([$ORTE_WRAPPER_EXTRA_CFLAGS])
AC_MSG_CHECKING([for ORTE CXXFLAGS])
ORTE_WRAPPER_EXTRA_CXXFLAGS="$OPAL_WRAPPER_EXTRA_CXXFLAGS"
AC_SUBST([ORTE_WRAPPER_EXTRA_CXXFLAGS])
AC_MSG_RESULT([$ORTE_WRAPPER_EXTRA_CXXFLAGS])
AC_MSG_CHECKING([for ORTE LDFLAGS])
ORTE_WRAPPER_EXTRA_LDFLAGS="$orte_WRAPPER_EXTRA_LDFLAGS $OPAL_WRAPPER_EXTRA_LDFLAGS"
AC_SUBST([ORTE_WRAPPER_EXTRA_LDFLAGS])
AC_MSG_RESULT([$ORTE_WRAPPER_EXTRA_LDFLAGS])
AC_MSG_CHECKING([for ORTE LIBS])
ORTE_WRAPPER_EXTRA_LIBS="$orte_WRAPPER_EXTRA_LIBS $OPAL_WRAPPER_EXTRA_LIBS"
AC_SUBST([ORTE_WRAPPER_EXTRA_LIBS])
AC_MSG_RESULT([$ORTE_WRAPPER_EXTRA_LIBS])
AC_MSG_CHECKING([for ORTE extra include dirs])
if test "$WANT_INSTALL_HEADERS" = "1" ; then
ORTE_WRAPPER_EXTRA_INCLUDES="$OPAL_WRAPPER_EXTRA_INCLUDES openmpi openmpi/opal openmpi/orte"
else
ORTE_WRAPPER_EXTRA_INCLUDES="$OPAL_WRAPPER_EXTRA_INCLUDES"
fi
AC_SUBST([ORTE_WRAPPER_EXTRA_INCLUDES])
AC_MSG_RESULT([$ORTE_WRAPPER_EXTRA_INCLUDES])
#
# OMPI
#
OMPI_UNIQ([ompi_WRAPPER_EXTRA_LDFLAGS])
OMPI_UNIQ([ompi_WRAPPER_EXTRA_LIBS])
AC_MSG_CHECKING([for OMPI CPPFLAGS])
OMPI_WRAPPER_EXTRA_CPPFLAGS="$ORTE_WRAPPER_EXTRA_CPPFLAGS"
AC_SUBST([OMPI_WRAPPER_EXTRA_CPPFLAGS])
AC_MSG_RESULT([$OMPI_WRAPPER_EXTRA_CPPFLAGS])
AC_MSG_CHECKING([for OMPI CFLAGS])
OMPI_WRAPPER_EXTRA_CFLAGS="$ORTE_WRAPPER_EXTRA_CFLAGS"
AC_SUBST([OMPI_WRAPPER_EXTRA_CFLAGS])
AC_MSG_RESULT([$OMPI_WRAPPER_EXTRA_CFLAGS])
AC_MSG_CHECKING([for OMPI CXXFLAGS])
OMPI_WRAPPER_EXTRA_CXXFLAGS="$ORTE_WRAPPER_EXTRA_CXXFLAGS"
AC_SUBST([OMPI_WRAPPER_EXTRA_CXXFLAGS])
AC_MSG_RESULT([$OMPI_WRAPPER_EXTRA_CXXFLAGS])
AC_MSG_CHECKING([for OMPI FFLAGS])
OMPI_WRAPPER_EXTRA_FFLAGS="$WRAPPER_EXTRA_FFLAGS $USER_WRAPPER_EXTRA_FFLAGS"
AC_SUBST([OMPI_WRAPPER_EXTRA_FFLAGS])
AC_MSG_RESULT([$OMPI_WRAPPER_EXTRA_FFLAGS])
AC_MSG_CHECKING([for OMPI FCFLAGS])
OMPI_WRAPPER_EXTRA_FCFLAGS="$WRAPPER_EXTRA_FCFLAGS $USER_WRAPPER_EXTRA_FCFLAGS"
AC_SUBST([OMPI_WRAPPER_EXTRA_FCFLAGS])
AC_MSG_RESULT([$OMPI_WRAPPER_EXTRA_FCFLAGS])
AC_MSG_CHECKING([for OMPI LDFLAGS])
OMPI_WRAPPER_EXTRA_LDFLAGS="$ompi_WRAPPER_EXTRA_LDFLAGS $ORTE_WRAPPER_EXTRA_LDFLAGS"
AC_SUBST([OMPI_WRAPPER_EXTRA_LDFLAGS])
AC_MSG_RESULT([$OMPI_WRAPPER_EXTRA_LDFLAGS])
AC_MSG_CHECKING([for OMPI LIBS])
OMPI_WRAPPER_EXTRA_LIBS="$ompi_WRAPPER_EXTRA_LIBS $ORTE_WRAPPER_EXTRA_LIBS"
AC_SUBST([OMPI_WRAPPER_EXTRA_LIBS])
AC_MSG_RESULT([$OMPI_WRAPPER_EXTRA_LIBS])
AC_MSG_CHECKING([for OMPI extra include dirs])
if test "$WANT_INSTALL_HEADERS" = "1" ; then
OMPI_WRAPPER_EXTRA_INCLUDES="$ORTE_WRAPPER_EXTRA_INCLUDES openmpi openmpi/opal openmpi/orte openmpi/ompi"
else
OMPI_WRAPPER_EXTRA_INCLUDES="$ORTE_WRAPPER_EXTRA_INCLUDES openmpi/ompi"
fi
AC_SUBST([OMPI_WRAPPER_EXTRA_INCLUDES])
AC_MSG_RESULT([$OMPI_WRAPPER_EXTRA_INCLUDES])
# language binding support. C++ is a bit different, as the
# compiler should work even if there is no language support.
if test "$WANT_MPI_CXX_SUPPORT" = "1" ; then
OMPI_WRAPPER_CXX_LIB="-lmpi_cxx"
OMPI_WRAPPER_CXX_REQUIRED_FILE="libmpi_cxx.la"
else
OMPI_WRAPPER_CXX_LIB=""
OMPI_WRAPPER_CXX_REQUIRED_FILE=""
fi
AC_SUBST([OMPI_WRAPPER_CXX_LIB])
AC_SUBST([OMPI_WRAPPER_CXX_REQUIRED_FILE])
if test "$OMPI_WANT_F77_BINDINGS" = "1" ; then
OMPI_WRAPPER_F77_REQUIRED_FILE=""
else
OMPI_WRAPPER_F77_REQUIRED_FILE="not supported"
fi
AC_SUBST([OMPI_WRAPPER_F77_REQUIRED_FILE])
if test "$OMPI_WANT_F90_BINDINGS" = "1" ; then
OMPI_WRAPPER_F90_REQUIRED_FILE="libmpi_f90.la"
else
OMPI_WRAPPER_F90_REQUIRED_FILE="not supported"
fi
AC_SUBST([OMPI_WRAPPER_F90_REQUIRED_FILE])
# compatibility defines that will eventually go away
WRAPPER_EXTRA_CFLAGS="$OMPI_WRAPPER_EXTRA_CFLAGS"
WRAPPER_EXTRA_CXXFLAGS="$OMPI_WRAPPER_EXTRA_CXXFLAGS"
WRAPPER_EXTRA_FFLAGS="$OMPI_WRAPPER_EXTRA_FFLAGS"
WRAPPER_EXTRA_FCFLAGS="$OMPI_WRAPPER_EXTRA_FCFLAGS"
WRAPPER_EXTRA_LDFLAGS="$OMPI_WRAPPER_EXTRA_LDFLAGS"
WRAPPER_EXTRA_LIBS="$OMPI_WRAPPER_EXTRA_LIBS"
AC_SUBST(WRAPPER_EXTRA_CFLAGS)
AC_SUBST(WRAPPER_EXTRA_CXXFLAGS)
AC_SUBST(WRAPPER_EXTRA_FFLAGS)
AC_SUBST(WRAPPER_EXTRA_FCFLAGS)
AC_SUBST(WRAPPER_EXTRA_LDFLAGS)
AC_SUBST(WRAPPER_EXTRA_LIBS)
AC_DEFINE_UNQUOTED(WRAPPER_EXTRA_CFLAGS, "$WRAPPER_EXTRA_CFLAGS",
[Additional CFLAGS to pass through the wrapper compilers])
AC_DEFINE_UNQUOTED(WRAPPER_EXTRA_CXXFLAGS, "$WRAPPER_EXTRA_CXXFLAGS",
[Additional CXXFLAGS to pass through the wrapper compilers])
AC_DEFINE_UNQUOTED(WRAPPER_EXTRA_FFLAGS, "$WRAPPER_EXTRA_FFLAGS",
[Additional FFLAGS to pass through the wrapper compilers])
AC_DEFINE_UNQUOTED(WRAPPER_EXTRA_FCFLAGS, "$WRAPPER_EXTRA_FCFLAGS",
[Additional FCFLAGS to pass through the wrapper compilers])
AC_DEFINE_UNQUOTED(WRAPPER_EXTRA_LDFLAGS, "$WRAPPER_EXTRA_LDFLAGS",
[Additional LDFLAGS to pass through the wrapper compilers])
AC_DEFINE_UNQUOTED(WRAPPER_EXTRA_LIBS, "$WRAPPER_EXTRA_LIBS",
[Additional LIBS to pass through the wrapper compilers])
])