1
1
openmpi/config/opal_check_verbs.m4
Jeff Squyres 148ae6d6e3 This commit unifies the configury of some verbs-lovin' components.
* Add new configure command line options and deprecate some old ones:
   * --with-verbs replaces --with-openib
   * --with-verbs-libdir replaces --with-openib-libdir
 * If you specify --with-openib[-libdir] without
   --with-verbs[-libdir], you'll get a "these options have been
   deprecated!" warning, but then they'll act just like
   --with-verbs[--libdir]. 

  '''Sidenote:''' Note that we are not renaming any components at this
  time, nor are we renaming the top-level OMPI_CHECK_OPENIB m4 macro
  (which is pretty strongly tied to the openib BTL and is bastaridzed
  by the ofud BTL).  Note that there will likely be more changes in
  this area coming soon (next week?) when some long-standing changes
  move to the SVN trunk: some openib BTL infrastructure will move to
  ompi/mca/common, and its configury gets split up / refactored.

We extend our philosophy of other --with-<foo> configure options of
--with-verbs to ''all'' verbs-lovin components:

 * If you specify --with-verbs, then all verbs-lovin' components must
   configure successfully (or abort).  This currently means: OOB ud,
   BTL ofud, BTL openib.
 * If you specify --with-verbs=DIR, then all verbs-lovin' component
   must configure successfully (or abort), and will use DIR to find
   verbs headers and libraries.
 * If you specify --without-verbs, then all verbs-lovin' components
   will be ignored.

This commit also fixes a problem where the --with-openib=DIR form
would not use DIR for ''all'' verbs-lovin' components (I think only
BTL openib and BTL ofud used that DIR).  Now all of them do, as does
hwloc (because hwloc has some !OpenFabrics helper functions that
require ibv types from verbs.h).

There's a little new m4 infrastructure worth mentioning:

 * If you create a new verbs-lovin' component (i.e., a component that
   need verbs), your configure.m4 should
   AC_REQUIRE([OPAL_CHECK_VERBS_DIR]). 
 * You can then use three global shell variables: $opal_want_verbs,
   $opal_verbs_dir, $opal_verbs_libdir, which will be set as follows:
   * opal_want_verbs will be "yes" and opal_verbs_dir and
     opal_verbs_libdir will both be set to directory values, '''OR'''
   * opal_want_verbs will be "no" and opal_verbs_dir and
     opal_verbs_libdir will both be set empty

This commit was SVN r26640.
2012-06-22 19:53:56 +00:00

165 строки
6.9 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 (c) 2006-2012 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2006-2011 Los Alamos National Security, LLC. All rights
# reserved.
# Copyright (c) 2006-2009 Mellanox Technologies. All rights reserved.
# Copyright (c) 2010-2012 Oracle and/or its affiliates. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# Internal helper macro to look for the verbs libdir
# --------------------------------------------------------
AC_DEFUN([_OPAL_CHECK_VERBS_LIBDIR],[
AS_IF([test -d "$1"],
[AS_IF([test "x`ls $1/libibverbs.* 2> /dev/null`" != "x"],
[opal_verbs_libdir="$1"])
])
])
# Internal helper macro to look for the verbs dir
# --------------------------------------------------------
AC_DEFUN([_OPAL_CHECK_VERBS_DIR],[
AS_IF([test -d "$1"],
[AS_IF([test -f "$1/include/infiniband/verbs.h"],
[opal_verbs_dir="$1"])
])
])
# OPAL_CHECK_VERBS_DIR
# --------------------------------------------------------
# Add --with-verbs options, and if directories are specified,
# sanity check them.
#
# At the end of this macro:
#
# 1. $opal_want_verbs will be set to "yes" and both of
# $opal_verbs_dir and $opal_verbs_libdir will be set
#
# or
#
# 2. $opal_want_verbs will be set to "no" and both of
# $opal_verbs_dir and $opal_verbs_libdir will be empty
#
AC_DEFUN([OPAL_CHECK_VERBS_DIR],[
# Add --with options
AC_ARG_WITH([verbs],
[AC_HELP_STRING([--with-verbs(=DIR)],
[Build verbs support, optionally adding DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries])])
AC_ARG_WITH([verbs-libdir],
[AC_HELP_STRING([--with-verbs-libdir=DIR],
[Search for verbs libraries in DIR])])
# Add deprecated --with options
# JMS REMOVE THESE IN v1.9
AC_ARG_WITH([openib],
[AC_HELP_STRING([--with-openib(=DIR)],
[DEPRECATED synonym for --with-verbs])])
AC_ARG_WITH([openib-libdir],
[AC_HELP_STRING([--with-openib-libdir=DIR],
[DEPRECATED synonym for --with-verbs-libdir])])
# Did we specify both --with-openib* and --with-verbs*?
# JMS REMOVE THESE IN v1.9
AS_IF([test -n "$with_openib" -a -n "$with_verbs"],
[AC_MSG_WARN([Both --with-verbs and --with-openib specified.])
AC_MSG_WARN([--with-openib value ignored.])
with_openib=
])
AS_IF([test -n "$with_openib_libdir" -a -n "$with_verbs_libdir"],
[AC_MSG_WARN([Both --with-verbs-libdir and --with-openib-libdir specified.])
AC_MSG_WARN([--with-openib-libdir value ignored.])
with_openib_libdir=
])
# Did we specify --with-openib* and not --with-verbs*?
# JMS REMOVE THESE IN v1.9
AS_IF([test -n "$with_openib" -a -z "$with_verbs"],
[AC_MSG_WARN([**************************************************])
AC_MSG_WARN([The use of --with-openib is deprecated.])
AC_MSG_WARN([You should use --with-verbs instead.])
AC_MSG_WARN([Proceeding with the assumption you meant])
AC_MSG_WARN([--with-verbs=$with_openib])
AC_MSG_WARN([(sleeping to let you read this message)])
AC_MSG_WARN([**************************************************])
sleep 10
with_verbs=$with_openib
with_openib=
])
AS_IF([test -n "$with_openib_libdir" -a -z "$with_verbs_libdir"],
[AC_MSG_WARN([**************************************************])
AC_MSG_WARN([The use of --with-openib-libdir is deprecated.])
AC_MSG_WARN([You should use --with-verbs-libdir instead.])
AC_MSG_WARN([Proceeding with the assumption you meant])
AC_MSG_WARN([--with-verbs-libdir=$with_openib_libdir])
AC_MSG_WARN([(sleeping to let you read this message)])
AC_MSG_WARN([**************************************************])
sleep 10
with_verbs_libdir=$with_openib_libdir
with_openib_libdir=
])
# Sanity check the --with values
OMPI_CHECK_WITHDIR([verbs], [$with_verbs],
[include/infiniband/verbs.h])
OMPI_CHECK_WITHDIR([verbs-libdir], [$with_verbs_libdir],
[libibverbs.*])
# Set standardized shell variables for OFED lovin' components to
# use. Either both of $opal_verbs_dir and
# $verbs_libdir will be set, or neither will be set.
opal_want_verbs=no
opal_verbs_dir=
AS_IF([test -n "$with_verbs" -a "$with_verbs" != "yes" -a "$with_verbs" != "no"],
[opal_want_verbs=yes
opal_verbs_dir=$with_verbs
])
opal_verbs_libdir=
AS_IF([test -n "$with_verbs_libdir" -a "$with_verbs_libdir" != "yes" -a "$with_verbs_libdir" != "no"],
[opal_want_verbs=yes
opal_verbs_libdir=$with_verbs_libdir
])
# If the top dir was specified but the libdir was not, look for
# it. Note that if the user needs a specific libdir (i.e., if our
# hueristic ordering below is not sufficient), they need to
# specify it.
AS_IF([test -z "$opal_verbs_libdir" -a -n "$opal_verbs_dir"],
[_OPAL_CHECK_VERBS_LIBDIR(["$opal_verbs_dir/lib"])])
AS_IF([test -z "$opal_verbs_libdir" -a -n "$opal_verbs_dir"],
[_OPAL_CHECK_VERBS_LIBDIR(["$opal_verbs_dir/lib64"])])
AS_IF([test -z "$opal_verbs_libdir" -a -n "$opal_verbs_dir"],
[_OPAL_CHECK_VERBS_LIBDIR(["$opal_verbs_dir/lib32"])])
AS_IF([test -z "$opal_verbs_libdir" -a -n "$opal_verbs_dir"],
[AC_MSG_WARN([Could not find libibverbs in the usual locations under $opal_verbs_dir])
AC_MSG_ERROR([Cannot continue])
])
# If the libdir was specified, but the top dir was not, look for
# it. Note that if the user needs a specific top dir (i.e., if
# our hueristic below is not sufficient), they need to specify it.
AS_IF([test -z "$opal_verbs" -a -n "$opal_verbs_libdir"],
[_OPAL_CHECK_VERBS_DIR([`dirname "$opal_verbs_libdir"`])])
AS_IF([test -z "$opal_verbs_dir" -a -n "$opal_verbs_libdir"],
[AC_MSG_WARN([Could not find verbs.h in the usual locations under $opal_verbs_dir])
AC_MSG_ERROR([Cannot continue])
])
])