1
1
openmpi/config/opal_config_3rdparty.m4
Brian Barrett 389b4b3a78 build: Add third-party package infrastructure
With Open MPI 5.0, the decision was made to stop building 3rd-party
packages, such as Libevent, HWLOC, PMIx, and PRRTE as MCA components
and instead 1) start relying on external libraries whenever possible
and 2) Open MPI builds the 3rd party libraries (if needed) as
independent libraries, rather than linked into libopen-pal.

This patch is the first step in that process, providing foundational
changes required for supporting 3rd-party packages, such as changes
to autogen.pl, the top-level Makefile.am, and introducing two
Autoconf macros to support running sub-configure scripts; one
supporting source in tarball form and the other supporting
source in a sub-tree.

Signed-off-by: Brian Barrett <bbarrett@amazon.com>
2020-10-01 16:55:48 +00:00

84 строки
4.5 KiB
Plaintext

dnl -*- autoconf -*-
dnl
dnl Copyright (c) 2009-2018 Cisco Systems, Inc. All rights reserved
dnl Copyright (c) 2013 Los Alamos National Security, LLC. All rights reserved.
dnl Copyright (c) 2015-2018 Research Organization for Information Science
dnl and Technology (RIST). All rights reserved.
dnl Copyright (c) 2020 Amazon.com, Inc. or its affiliates. All Rights
dnl reserved.
dnl $COPYRIGHT$
dnl
dnl Additional copyrights may follow
dnl
dnl $HEADER$
dnl
dnl OPAL_3RDPARTY_WITH(short package name, long package name, internal supported)
dnl
dnl Basic --with-pkg/--with-pkg-libdir handling for 3rd party
dnl packages, with the big long description of internal/external/path
dnl handling.
dnl
dnl At the end of this macro, with_pkg will contain an empty string or
dnl a path (implying external). Further, the shell variable opal_pkg_mode
dnl will be set to "internal", "external", or "unspecified". If a path is
dnl given to --with-pkg, then opal_pkg_mode will be set to external.
dnl
dnl If m4_ifdef(internal support) does not evaluate to true (ie, at
dnl autogen time), the references to internal in the help strings will
dnl be removed and internal will not be a supported option.
dnl
dnl $1: short package name
dnl $2: long pacakage name
AC_DEFUN([OPAL_3RDPARTY_WITH], [
m4_ifdef([$3],
[AC_ARG_WITH([$1],
[AC_HELP_STRING([--with-$1(=DIR)],
[Build $2 support. DIR can take one of three values: "internal", "external", or a valid directory name. "internal" forces Open MPI to use its internal copy of $2. "external" forces Open MPI to use an external installation of $2. Supplying a valid directory name also forces Open MPI to use an external installation of $2, and adds DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries. Note that Open MPI no longer supports --without-$1. If no argument is specified, Open MPI will search default locations for $2 and fall back to an internal version if one is not found.])])
AC_ARG_WITH([$1-libdir],
[AC_HELP_STRING([--with-$1-libdir=DIR],
[Search for $2 libraries in DIR. Should only be used if an external copy of $2 is being used.])])],
[AC_ARG_WITH([$1],
[AC_HELP_STRING([--with-$1(=DIR)],
[Build $2 support. DIR can take one of two values: "external" or a valid directory name. "external" forces Open MPI to use an external installation of $2. Supplying a valid directory name also forces Open MPI to use an external installation of $2, and adds DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries. Note that Open MPI no longer supports --without-$1. If no argument is specified, Open MPI will search default locations for $2 and error if one is not found.])])
AC_ARG_WITH([$1-libdir],
[AC_HELP_STRING([--with-$1-libdir=DIR],
[Search for $2 libraries in DIR. Should only be used if an external copy of $2 is being used.])])])
# Bozo check
AS_IF([test "$with_$1" = "no"],
[AC_MSG_WARN([It is not possible to configure Open MPI --without-$1])
AC_MSG_ERROR([Cannot continue])])
AS_IF([test "$with_$1_libdir" = "no" -o "$with_$1_libdir" = "yes"],
[AC_MSG_WARN([yes/no are invalid responses for --with-$1-libdir. Please specify a path.])
AC_MSG_ERROR([Cannot continue])])
# Make sure the user didn't specify --with-$1=internal and
# --with-$1-libdir=whatever (because you can only specify
# --with-$1-libdir when external $2 is being used).
AS_IF([test "$with_$1" = "internal" && test -n "$with_$1_libdir"],
[AC_MSG_WARN([Both --with-$1=internal and --with-$1-libdir=DIR])
AC_MSG_WARN([were specified, which does not make sense.])
AC_MSG_ERROR([Cannot continue])])
# clean up $with_$1 so that it contains only a path or empty
# string. To determine internal or external preferences, use
# $opal_$1_mode.
AS_IF([test "$with_$1" = "yes"], [with_$1=])
AS_CASE([$with_$1],
["internal"], [with_$1=""
opal_$1_mode="internal"],
["external"], [with_$1=""
opal_$1_mode="external"],
[""], [opal_$1_mode="unspecified"],
[opal_$1_mode="external"])
m4_ifdef([$3], [],
[AS_IF([test "$opal_$1_mode" = "internal"],
[AC_MSG_WARN([Invalid argument to --with-$1: internal.])
AC_MSG_ERROR([Cannot continue])])])
])