1
1
openmpi/ompi/mca/topo/treematch/configure.m4
Brian Barrett 0e9581d478 build: Move hwloc to a 3rd-party package
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 moves the hwloc library bundled with Open MPI from a
MCA framework to a stand-alone library built outside of OPAL.  Due
to the amount of code in the MCA base (and its assumptions about
being part of an MCA framework), the framework is left with no
active components.  Any pre-installed version of HWLOC 1.6 or
newer is preferred over the internal version.

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

106 строки
5.3 KiB
Bash

# -*- shell-script -*-
#
# Copyright (c) 2011-2015 The University of Tennessee and The University
# of Tennessee Research Foundation. All rights
# reserved.
# Copyright (c) 2011-2015 INRIA. All rights reserved.
# Copyright (c) 2011-2015 Universite Bordeaux 1
# Copyright (c) 2015 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2015 Intel, Inc. All rights reserved.
# Copyright (c) 2019 Research Organization for Information Science
# and Technology (RIST). All rights reserved.
# Copyright (c) 2020 Amazon.com, Inc. or its affiliates.
# All Rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# MCA_ompi_topo_treematch_CONFIG([action-if-can-compile],
# [action-if-cant-compile])
# -------------------------------------------
AC_DEFUN([MCA_ompi_topo_treematch_CONFIG], [
AC_ARG_WITH([treematch],
[AC_HELP_STRING([--with-treematch(=DIR)],
[Build TreeMatch topology support, optionally adding DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries])])
AC_ARG_WITH([treematch-include],
[AC_HELP_STRING([--with-treematch-include(=DIR)],
["Search for TreeMatch headers in DIR"])])
AC_ARG_WITH([treematch-libdir],
[AC_HELP_STRING([--with-treematch-libdir(=DIR)],
["Search for TreeMatch libraries in DIR"])])
treematch_files_local="no"
ompi_topo_treematch_dir=$srcdir
ompi_topo_treematch_libdir=
ompi_topo_treematch_happy=0
AS_IF([test "x$with_treematch" != xno],
[AC_MSG_CHECKING([TreeMatch headers])
AS_IF([test "x$with_treematch_include" = x],
[AS_IF([test "x$with_treematch" != "xno"],
[treematch_files_local="yes"
with_treematch_include="$OMPI_TOP_SRCDIR/ompi/mca/topo/treematch/treematch"],
[with_treematch_include="$with_treematch/include"])])
AS_IF([test -f "$with_treematch_include/tm_tree.h"],
[AS_IF([test "x$with_treematch" != "xno"],
[AC_MSG_RESULT([in the source])],
[AC_MSG_RESULT([user provided])])
opal_check_treematch_dir=$with_treematch_include
ompi_topo_treematch_happy=1],
[AC_MSG_ERROR([missing tm_tree.h (${with_treematch}:${with_treematch_include})])])])
AS_IF([test $ompi_topo_treematch_happy -eq 1],
[OPAL_CHECK_WITHDIR([treematch],
[$with_treematch_include],
[tm_tree.h])
AS_IF([test "x$with_treematch_libdir" = x],
[AS_IF([test "x$with_treematch" != "xyes"],
[with_treematch_libdir=$with_treematch/lib]
[with_treematch_libdir=$OMPI_TOP_SRCDIR/ompi/mca/topo/treematch/treematch])])
AS_IF([test "x$treematch_files_local" = xno],
[OPAL_CHECK_WITHDIR([treematch-libdir], [$with_treematch_libdir], [libtreematch.*])
AS_IF([test "x$with_treematch" != xno && test "x$with_treematch" != "xyes"],
[AS_IF([test ! -z "$with_treematch" && test "$with_treematch" != "yes"],
[ompi_topo_treematch_dir="$with_treematch"])
AS_IF([test ! -z "$with_treematch_libdir" && test "$with_treematch_libdir" != "yes"],
[ompi_topo_treematch_libdir="$with_treematch_libdir"])
OPAL_CHECK_PACKAGE([topo_treematch],
[tm_tree.h],
[treematch],
[build_tree],
[],
[$with_treematch_include],
[$with_treematch_libdir],
[ompi_topo_treematch_happy=1],
[ompi_topo_treematch_happy=1])],
[ompi_topo_treematch_happy=1])])])
AS_IF([test $ompi_topo_treematch_happy -eq 1],
[AS_IF([test "x$treematch_files_local" = "xyes"],
[AS_IF([! test -d $OMPI_TOP_BUILDDIR/ompi/mca/topo/treematch],
[mkdir -p $OMPI_TOP_BUILDDIR/ompi/mca/topo/treematch])
cat > $OMPI_TOP_BUILDDIR/ompi/mca/topo/treematch/config.h << EOF
/*
* This file is automatically generated by configure. Edits will be lost
*
* This is an dummy config.h in order to prevent the embedded treematch from using
* the config.h from the embedded hwloc
*
* see https://github.com/open-mpi/ompi/pull/6185#issuecomment-458807930
*/
EOF
])
$1],
[AS_IF([test ! -z "$with_treematch" && test "$with_treematch" != "no"],
[AC_MSG_ERROR([TreeMatch support requested but not found. Aborting])])
$2])
AC_CONFIG_FILES([ompi/mca/topo/treematch/Makefile])
AM_CONDITIONAL(topo_treematch_local,
[test $ompi_topo_treematch_happy -eq 1 && \
test "x$treematch_files_local" = "xyes"])
])