# -*- 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 (c) 2007-2009 Cisco Systems, Inc. All rights reserved. # $COPYRIGHT$ # # Additional copyrights may follow # # $HEADER$ # # OMPI_CHECK_UDAPL(prefix, [action-if-found], [action-if-not-found]) # -------------------------------------------------------- # check if uDAPL 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_UDAPL],[ AC_ARG_WITH([udapl], [AC_HELP_STRING([--with-udapl(=DIR)], [Build uDAPL support, searching for libraries in DIR])]) OMPI_CHECK_WITHDIR([udapl], [$with_udapl], [include/dat/udat.h]) AC_ARG_WITH([udapl-libdir], [AC_HELP_STRING([--with-udapl-libdir=DIR], [Search for uDAPL libraries in DIR])]) OMPI_CHECK_WITHDIR([udapl-libdir], [$with_udapl_libdir], [libdat.*]) # Special case for OFED/Linux: the default /etc/dat.conf that # ships with OFED is broken in that it includes DAT providers that # are not guarnateed to work (e.g., it includes providers for ib0, # ib1, ib2, ib3, and bond0). Usually, a sysadmin will need to # edit this file to configure it for the specific environment in # which it will be used. Hence, if you run the udapl BTL on # Linux/OFED, you'll get a bunch of warning messages about the # providers that don't work. However, on Linux/OFED, you don't # really want to use udapl anyway; you likely really want to use # the openib BTL (i.e., native verbs, not udapl). # So after exploring many different scenarios, the least evil # solution seemed to be to disable building the udapl BTL on # Linux/OFED *unless the user specifically asks for it.* To be # specific: on Linux/OFED, if you do not specify # --with-udapl(=DIR), the udapl BTL will not be built. AS_IF([test -z "$with_udapl"], [case $host in *linux*) AC_MSG_WARN([On Linux and --with-udapl was not specified]) AC_MSG_WARN([Not building the udapl BTL]) with_udapl=no ;; esac]) AS_IF([test ! -z "$with_udapl" -a "$with_udapl" != "yes"], [ompi_check_udapl_dir="$with_udapl"]) AS_IF([test ! -z "$with_udapl_libdir" -a "$with_udapl_libdir" != "yes"], [ompi_check_udapl_libdir="$with_udapl_libdir"]) AS_IF([test "$with_udapl" = "no"], [ompi_check_udapl_happy="no"], [ompi_check_udapl_happy="yes"]) dnl Do not use ompi_check_package directly, because then we have dnl to test for the header file twice, and caching is disabled dnl for all ompi_check_package checks. Instead, do what dnl ompi_check_package does, but only do the header check once. dnl Still do the lib check twice, the second time if it turns dnl out we need -ldapl to link (looks like udapl over GM). ompi_check_package_$1_save_CPPFLAGS="$CPPFLAGS" ompi_check_package_$1_save_LDFLAGS="$LDFLAGS" ompi_check_package_$1_save_LIBS="$LIBS" ompi_check_package_$1_orig_CPPFLAGS="$$1_CPPFLAGS" ompi_check_package_$1_orig_LDFLAGS="$$1_LDFLAGS" ompi_check_package_$1_orig_LIBS="$$1_LIBS" AS_IF([test "$ompi_check_udapl_happy" = "yes"], [_OMPI_CHECK_PACKAGE_HEADER([$1], [dat/udat.h], [$ompi_check_udapl_dir], [ompi_check_udapl_happy="yes"], [ompi_check_udapl_happy="no"])]) AS_IF([test "$ompi_check_udapl_happy" = "yes"], [_OMPI_CHECK_PACKAGE_LIB([$1], [dat], [dat_registry_list_providers], [], [$ompi_check_udapl_dir], [$ompi_check_udapl_libdir], [ompi_check_udapl_happy="yes"], [_OMPI_CHECK_PACKAGE_LIB([$1], [dat], [dat_registry_list_providers], [-ldapl], [$ompi_check_udapl_dir], [$ompi_check_udapl_libdir], [ompi_check_udapl_happy="yes"], [ompi_check_udapl_happy="no"])])]) CPPFLAGS="$ompi_check_package_$1_save_CPPFLAGS" LDFLAGS="$ompi_check_package_$1_save_LDFLAGS" LIBS="$ompi_check_package_$1_save_LIBS" AS_IF([test "$ompi_check_udapl_happy" = "yes"], [$2], [AS_IF([test ! -z "$with_udapl" -a "$with_udapl" != "no"], [AC_MSG_ERROR([uDAPL support requested but not found. Aborting])]) $3]) ])