1
1
openmpi/config/ompi_check_mx.m4
Brian Barrett 5163f2b296 Fix for bug #36. The MX, MVAPI, and OpenIB components don't have
support for progress threads, so we shouldn't build them or try to use
them when support for progress threads has been requested.  The TCP, GM,
SELF, and SM BTLs should have progress thread support, so they aren't
disabled.  The Portals BTL isn't compiled on platforms with threads,
so it doens't need to be updated.

This commit was SVN r10156.
2006-06-01 01:30:16 +00:00

128 строки
5.0 KiB
Bash

# -*- shell-script -*-
#
# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
# University Research and Technology
# Corporation. All rights reserved.
# Copyright (c) 2004-2005 The University of Tennessee and The University
# of Tennessee Research Foundation. All rights
# reserved.
# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
# University of Stuttgart. All rights reserved.
# Copyright (c) 2004-2005 The Regents of the University of California.
# All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
AC_DEFUN([_OMPI_CHECK_MX_REGISTER_CALLBACK],[
#
# Check if the MX library provide the mx_register_unexp_callback function.
# With this function, OMPI can avoid having a double matching logic
# (one on the MX library and one on OMPI) by registering our own matching
# function.
AC_MSG_CHECKING([for a MX version with mx_register_match_callback])
AC_TRY_LINK([#include <myriexpress.h>],
[mx_register_unexp_callback(0, 0, 0);],
[mx_provide_match_callback="yes"],
[mx_provide_match_callback="no"])
AC_MSG_RESULT([$mx_provide_match_callback])
AS_IF([test x"$mx_provide_match_callback" = "xyes"],
[AC_DEFINE_UNQUOTED([OMPI_MCA_MX_HAVE_MATCH_CALLBACK], [1],
[MX define a match callback])
$2],
[$3])
unset mx_provide_match_callback
])
AC_DEFUN([_OMPI_CHECK_MX_CONFIG],[
#
# See if we have MX_API. OpenMPI require a MX version bigger than
# the first MX relase (0x300)
#
# restored at end of OMPI_CHECK_MX
CPPFLAGS="$ompi_check_mx_$1_save_CPPFLAGS $$1_CPPFLAGS"
LDFLAGS="$ompi_check_mx_$1_save_LDFLAGS $$1_LDFLAGS"
LIBS="$ompi_check_mx_$1_save_LIBS $$1_LIBS"
AC_MSG_CHECKING([for MX version 1.0 or later])
AC_TRY_COMPILE([#include <myriexpress.h>],
[#if MX_API < 0x300
#error "Version less than 0x300"
#endif],
[have_recent_api="yes"],
[have_recent_api="no"])
AC_MSG_RESULT([$have_recent_api])
AC_MSG_CHECKING(for MX_API)
AS_IF([test x"$have_recent_api" = "xyes"],
[AC_DEFINE_UNQUOTED([OMPI_MCA_]m4_translit([$1], [a-z], [A-Z])[_API_VERSION], $mx_api_ver,
[Version of the MX API to use])
unset mx_api_ver have_mx_api_ver_msg found val msg
$2],
[$3])
AC_MSG_RESULT([$mx_api_ver])
])dnl
# OMPI_CHECK_MX(prefix, [action-if-found], [action-if-not-found])
# --------------------------------------------------------
# check if MX support can be found. sets prefix_{CPPFLAGS,
# LDFLAGS, LIBS} as needed and runs action-if-found if there is
# support, otherwise executes action-if-not-found
AC_DEFUN([OMPI_CHECK_MX],[
AC_ARG_WITH([mx],
[AC_HELP_STRING([--with-mx(=DIR)],
[Build MX (Myrinet Express) support, searching for libraries in DIR])])
AC_ARG_WITH([mx-libdir],
[AC_HELP_STRING([--with-mx-libdir=DIR],
[Search for MX (Myrinet Express) libraries in DIR/lib and DIR/lib64
in addition to other search paths])])
ompi_check_mx_$1_save_CPPFLAGS="$CPPFLAGS"
ompi_check_mx_$1_save_LDFLAGS="$LDFLAGS"
ompi_check_mx_$1_save_LIBS="$LIBS"
AS_IF([test "$with_mx" != "no"],
[AS_IF([test ! -z "$with_mx" -a "$with_mx" != "yes"],
[ompi_check_mx_dir="$with_mx"])
AS_IF([test ! -z "$with_mx_libdir" -a "$with_mx_libdir" != "yes"],
[ompi_check_mx_libdir="$with_mx_libdir"])
OMPI_CHECK_PACKAGE([$1],
[myriexpress.h],
[myriexpress],
[mx_finalize],
[],
[$ompi_check_mx_dir],
[$ompi_check_mx_libdir],
[ompi_check_mx_happy="yes"],
[ompi_check_mx_happy="no"])],
[ompi_check_mx_happy="no"])
AS_IF([test "$ompi_check_mx_happy" = "yes"],
[_OMPI_CHECK_MX_CONFIG($1, [ompi_check_mx_happy="yes"],
[ompi_check_mx_happy="no"])])
AS_IF([test "$ompi_check_mx_happy" = "yes"],
[_OMPI_CHECK_MX_REGISTER_CALLBACK($1, [ompi_check_mx_register="yes"],
[ompi_check_mx_register="no"])])
CPPFLAGS="$ompi_check_mx_$1_save_CPPFLAGS"
LDFLAGS="$ompi_check_mx_$1_save_LDFLAGS"
LIBS="$ompi_check_mx_$1_save_LIBS"
AS_IF([test "$ompi_check_mx_happy" = "yes" -a "$enable_progress_threads" = "yes"],
[AC_MSG_WARN([MX driver does not currently support progress threads. Disabling BTL.])
ompi_check_mx_happy="no"])
AS_IF([test "$ompi_check_mx_happy" = "yes"],
[$2],
[AS_IF([test ! -z "$with_mx" -a "$with_mx" != "no"],
[AC_MSG_ERROR([MX support requested but not found. Aborting])])
$3])
])