File: ompi_check_udapl.m4

package info (click to toggle)
openmpi 1.6.5-9.1%2Bdeb8u1
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 91,628 kB
  • ctags: 44,305
  • sloc: ansic: 408,966; cpp: 44,454; sh: 27,828; makefile: 10,486; asm: 3,882; python: 1,239; lex: 805; perl: 549; csh: 253; fortran: 232; f90: 126; tcl: 12
file content (118 lines) | stat: -rw-r--r-- 5,280 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# -*- 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, optionally adding DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries])])
    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])
])