1
1
openmpi/config/ompi_check_portals.m4

159 строки
6.2 KiB
Plaintext
Исходник Обычный вид История

# -*- 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-2006 The Regents of the University of California.
# All rights reserved.
# Copyright (c) 2009 Cisco Systems, Inc. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# OMPI_CHECK_PORTALS(prefix, [action-if-found], [action-if-not-found])
# --------------------------------------------------------
# check if PORTALS 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_PORTALS],[
# save compiler flags so that we don't alter them for later
# components.
check_portals_save_CPPFLAGS="$CPPFLAGS"
check_portals_save_LDFLAGS="$LDFLAGS"
check_portals_save_LIBS="$LIBS"
check_portals_CPPFLAGS=
check_portals_LDFLAGS=
check_portals_LIBS=
check_portals_configuration="none"
ompi_check_portals_happy="yes"
# Get some configuration information
AC_ARG_WITH([portals],
[AC_HELP_STRING([--with-portals(=DIR)],
[Build Portals support, optionally adding DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries])])
OPAL_CHECK_WITHDIR([portals], [$with_portals], [include/portals3.h])
AC_ARG_WITH([portals-config],
AC_HELP_STRING([--with-portals-config],
[configuration to use for Portals support.
One of "utcp", "xt3", "xt3-modex". (default: utcp)]))
AC_ARG_WITH([portals-libs],
[AC_HELP_STRING([--with-portals-libs=LIBS],
[Libraries to link with for portals])])
AC_MSG_CHECKING([for Portals configuration])
if test "$with_portals_config" = "" ; then
with_portals_config="utcp"
elif test "$with_portals_config" = "redstorm" ; then
with_portals_config="xt3"
elif test "$with_portals_config" = "cnl_modex" ; then
with_portals_config="xt3-modex"
fi
OMPI_PORTALS_UTCP=0
OMPI_PORTALS_CRAYXT3=0
OMPI_PORTALS_CRAYXT3_MODEX=0
case "$with_portals_config" in
"utcp")
OMPI_PORTALS_UTCP=1
OMPI_PORTALS_HAVE_EVENT_UNLINK=1
check_portals_LIBS="-lp3utcp -lp3api -lp3lib -lp3rt -lp3utcp"
check_portals_header_prefix=
AC_MSG_RESULT([utcp])
;;
"xt3")
OMPI_PORTALS_CRAYXT3=1
OMPI_PORTALS_HAVE_EVENT_UNLINK=0
check_portals_LIBS=
check_portals_header_prefix="portals/"
AC_MSG_RESULT([Cray XT3])
;;
"xt3-modex")
OMPI_PORTALS_CRAYXT3_MODEX=1
OMPI_PORTALS_HAVE_EVENT_UNLINK=0
check_portals_LIBS=
check_portals_header_prefix="portals/"
AC_MSG_RESULT([Cray XT3 - Modex])
;;
*)
# ok to call ERROR here - the user specified something invalid.
# that should be brought to his attention
AC_MSG_ERROR([unknown Portals configuration. Can not continue])
;;
esac
AC_DEFINE_UNQUOTED([OMPI_PORTALS_HAVE_EVENT_UNLINK],
[$OMPI_PORTALS_HAVE_EVENT_UNLINK],
[Does Portals send a PTL_EVENT_UNLINK event])
AC_DEFINE_UNQUOTED([OMPI_PORTALS_UTCP], [$OMPI_PORTALS_UTCP],
[Use the UTCP reference implementation of Portals])
AC_DEFINE_UNQUOTED([OMPI_PORTALS_CRAYXT3], [$OMPI_PORTALS_CRAYXT3],
[Use the Cray XT-3 implementation of Portals])
AC_DEFINE_UNQUOTED([OMPI_PORTALS_CRAYXT3_MODEX], [$OMPI_PORTALS_CRAYXT3_MODEX],
[Use the Cray XT-3 implementation of Portals using Modex])
# Add correct -I and -L flags
AS_IF([test -n "$with_portals"],
[AS_IF([test -d "$with_portals/include"],
[check_portals_CPPFLAGS="-I$with_portals/include"
CPPFLAGS="$CPPFLAGS $check_portals_CPPFLAGS"], [])
AS_IF([test -d "$with_portals/lib"],
[check_portals_LDFLAGS="-L$with_portals/lib"
LDFLAGS="$LDFLAGS $check_portals_LDFLAGS"], [])])
# Try to find all the portals libraries (this is not fun!)
if test -n "$with_portals_libs" ; then
check_portals_LIBS=""
for lib in $with_portals_libs ; do
check_portals_LIBS="$check_portals_LIBS -l$lib"
done
fi
# check for portals
LIBS="$LIBS $check_portals_LIBS"
AC_CHECK_HEADERS([${check_portals_header_prefix}portals3.h],
[AC_MSG_CHECKING([if possible to link Portals application])
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <${check_portals_header_prefix}portals3.h>],
[int i; PtlInit(&i);])],
[AC_MSG_RESULT([yes])
ompi_check_portals_happy="yes"],
[AC_MSG_RESULT([no])
ompi_check_portals_happy="no"])],
[ompi_check_portals_happy="no"])
# Deal with static-only Portals UTCP libs. See note in
# ompi/mca/common/portals/configure.m4. Then possibly cry.
if test "$with_portals_config" = "utcp" ; then
if test "$1" != "common_portals" ; then
check_portals_LIBS=
fi
fi
# reset the flags for the next test
CPPFLAGS="$check_portals_save_CPPFLAGS"
LDFLAGS="$check_portals_save_LDFLAGS"
LIBS="$check_portals_save_LIBS"
$1_CPPFLAGS="$check_portals_CPPFLAGS"
$1_LDFLAGS="$check_portals_LDFLAGS"
$1_LIBS="$check_portals_LIBS"
AS_IF([test "$ompi_check_portals_happy" = "yes"],
[$2],
[AS_IF([test ! -z "$with_portals" -a "$with_portals" != "no"],
[AC_MSG_ERROR([Portals support requested but not found. Aborting])])
$3])
])