Merge pull request #5472 from ggouaillardet/topic/v4.0.x/prefer-externals
v4.0.x: Prefer external hwloc and libevent
Этот коммит содержится в:
Коммит
98bd571cc8
@ -1,6 +1,6 @@
|
||||
dnl -*- shell-script -*-
|
||||
dnl
|
||||
dnl Copyright (c) 2010-2013 Cisco Systems, Inc. All rights reserved.
|
||||
dnl Copyright (c) 2010-2018 Cisco Systems, Inc. All rights reserved
|
||||
dnl $COPYRIGHT$
|
||||
dnl
|
||||
dnl Additional copyrights may follow
|
||||
@ -8,21 +8,52 @@ dnl
|
||||
dnl $HEADER$
|
||||
dnl
|
||||
|
||||
# There will only be one component used in this framework, and it will
|
||||
# be selected at configure time by priority. Components must set
|
||||
# their priorities in their configure.m4 files. They must also set
|
||||
# the shell variable $opal_event_base_include to a header file name
|
||||
# (relative to opal/mca/event) that will be included in
|
||||
# opal/mca/event/event.h.
|
||||
dnl There will only be one component used in this framework, and it will
|
||||
dnl be selected at configure time by priority. Components must set
|
||||
dnl their priorities in their configure.m4 files. They must also set
|
||||
dnl the shell variable $opal_event_base_include to a header file name
|
||||
dnl (relative to opal/mca/event) that will be included in
|
||||
dnl opal/mca/event/event.h.
|
||||
|
||||
dnl We only want one winning component (vs. STOP_AT_FIRST_PRIORITY,
|
||||
dnl which will allow all components of the same priority who succeed to
|
||||
dnl win)
|
||||
|
||||
m4_define(MCA_opal_event_CONFIGURE_MODE, STOP_AT_FIRST)
|
||||
|
||||
dnl
|
||||
dnl Setup --with-libevent and --with-libevent-libdir
|
||||
dnl
|
||||
AC_DEFUN([MCA_opal_event_SETUP],[
|
||||
AC_ARG_WITH([libevent],
|
||||
[AC_HELP_STRING([--with-libevent=DIR],
|
||||
[Search for libevent headers and libraries in DIR. Should only be used if an external copy of libevent is being used.])])
|
||||
|
||||
# Bozo check
|
||||
AS_IF([test "$with_libevent" = "no"],
|
||||
[AC_MSG_WARN([It is not possible to configure Open MPI --without-libevent])
|
||||
AC_MSG_ERROR([Cannot continue])])
|
||||
AS_IF([test "$with_libevent" = "yes"],
|
||||
[with_libevent=])
|
||||
|
||||
AC_ARG_WITH([libevent-libdir],
|
||||
[AC_HELP_STRING([--with-libevent-libdir=DIR],
|
||||
[Search for libevent libraries in DIR. Should only be used if an external copy of libevent is being used.])])
|
||||
|
||||
# Make sure the user didn't specify --with-libevent=internal and
|
||||
# --with-libevent-libdir=whatever (because you can only specify
|
||||
# --with-libevent-libdir when external libevent is being used).
|
||||
AS_IF([test "$with_libevent" = "internal" && test -n "$with_libevent_libdir"],
|
||||
[AC_MSG_WARN([Both --with-libevent=internal and --with-libevent-libdir=DIR])
|
||||
AC_MSG_WARN([were specified, which does not make sense.])
|
||||
AC_MSG_ERROR([Cannot continue])])
|
||||
])
|
||||
|
||||
AC_DEFUN([MCA_opal_event_CONFIG],[
|
||||
opal_event_base_include=
|
||||
|
||||
MCA_opal_event_SETUP
|
||||
|
||||
# configure all the components
|
||||
MCA_CONFIGURE_FRAMEWORK($1, $2, 1)
|
||||
|
||||
|
177
opal/mca/event/external/configure.m4
поставляемый
177
opal/mca/event/external/configure.m4
поставляемый
@ -1,11 +1,11 @@
|
||||
# -*- shell-script -*-
|
||||
#
|
||||
# Copyright (c) 2009-2013 Cisco Systems, Inc. All rights reserved.
|
||||
# Copyright (c) 2009-2018 Cisco Systems, Inc. All rights reserved
|
||||
# Copyright (c) 2013 Los Alamos National Security, LLC. All rights reserved.
|
||||
# Copyright (c) 2015-2017 Research Organization for Information Science
|
||||
# Copyright (c) 2015-2018 Research Organization for Information Science
|
||||
# and Technology (RIST). All rights reserved.
|
||||
#
|
||||
# Copyright (c) 2017 Intel, Inc. All rights reserved.
|
||||
# Copyright (c) 2017-2018 Intel, Inc. All rights reserved.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
# Additional copyrights may follow
|
||||
@ -56,72 +56,59 @@ AC_DEFUN([MCA_opal_event_external_POST_CONFIG],[
|
||||
AC_DEFUN([MCA_opal_event_external_CONFIG],[
|
||||
AC_CONFIG_FILES([opal/mca/event/external/Makefile])
|
||||
|
||||
OPAL_VAR_SCOPE_PUSH([opal_event_external_CPPFLAGS_save opal_event_external_CFLAGS_save opal_event_external_LDFLAGS_save opal_event_external_LIBS_save])
|
||||
OPAL_VAR_SCOPE_PUSH([opal_event_external_CPPFLAGS_save opal_event_external_CFLAGS_save opal_event_external_LDFLAGS_save opal_event_external_LIBS_save opal_event_dir opal_event_summary_msg])
|
||||
|
||||
AC_ARG_WITH([libevent],
|
||||
[AC_HELP_STRING([--with-libevent=DIR],
|
||||
[Search for libevent headers and libraries in DIR. Should only be used if an external copy of libevent is being used.])])
|
||||
# Make some processing below easier ($with_libevent==yes and
|
||||
# $with_libevent==no has already been filtered out).
|
||||
AS_IF([test "$with_libevent" = "external"],
|
||||
[with_libevent=])
|
||||
|
||||
# Bozo check
|
||||
AS_IF([test "$with_libevent" = "no"],
|
||||
[AC_MSG_WARN([It is not possible to configure Open MPI --without-libevent])
|
||||
AC_MSG_ERROR([Cannot continue])])
|
||||
opal_event_summary_msg="internal"
|
||||
|
||||
AC_ARG_WITH([libevent-libdir],
|
||||
[AC_HELP_STRING([--with-libevent-libdir=DIR],
|
||||
[Search for libevent libraries in DIR. Should only be used if an external copy of libevent is being used.])])
|
||||
# Once we get to this point, $with_libevent is either: blank, a
|
||||
# directory location, or "internal".
|
||||
|
||||
# Make sure the user didn't specify --with-libevent=internal and
|
||||
# --with-libevent-libdir=whatever (because you can only specify
|
||||
# --with-libevent-libdir when external libevent is being used).
|
||||
AS_IF([test "$with_libevent" = "internal" && test -n "$with_libevent_libdir"],
|
||||
[AC_MSG_WARN([Both --with-libevent=internal and --with-libevent-libdir=DIR])
|
||||
AC_MSG_WARN([were specified, which does not make sense.])
|
||||
AC_MSG_ERROR([Cannot continue])])
|
||||
# Check the value of $with_libevent_libdir. This macro safely
|
||||
# handles "yes", "no", blank, and directory name values.
|
||||
OPAL_CHECK_WITHDIR([libevent-libdir], [$with_libevent_libdir],
|
||||
[libevent.*])
|
||||
|
||||
# Do we want this external component? (slightly redundant logic,
|
||||
# but hopefully slightly more clear...)
|
||||
opal_event_external_want=no
|
||||
AS_IF([test "$with_libevent" = "external"], [opal_event_external_want=yes])
|
||||
AS_IF([test -n "$with_libevent_libdir"], [opal_event_external_want=yes])
|
||||
AS_IF([test -n "$with_libevent" && test "$with_libevent" != "no" && test "$with_libevent" != "internal"], [opal_event_external_want=yes])
|
||||
# Did the user want us to check for libevent in a specific location?
|
||||
AC_MSG_CHECKING([for external libevent in])
|
||||
AS_IF([test -n "$with_libevent" && \
|
||||
test "$with_libevent" != "external" && \
|
||||
test "$with_libevent" != "internal" && \
|
||||
test "$with_libevent" != "yes" && \
|
||||
test "$with_libevent" != "no"],
|
||||
[opal_event_dir=$with_libevent
|
||||
AC_MSG_RESULT([$opal_event_dir])
|
||||
OPAL_CHECK_WITHDIR([libevent], [$opal_event_dir],
|
||||
[include/event.h])
|
||||
AS_IF([test -z "$with_libevent_libdir" || test "$with_libevent_libdir" = "yes"],
|
||||
[AC_MSG_CHECKING([for $with_libevent/lib64])
|
||||
AS_IF([test -d "$with_libevent/lib64"],
|
||||
[opal_event_libdir_found=yes
|
||||
AC_MSG_RESULT([found])],
|
||||
[opal_event_libdir_found=no
|
||||
AC_MSG_RESULT([not found])])
|
||||
AS_IF([test "$opal_event_libdir_found" = "yes"],
|
||||
[opal_event_libdir="$with_libevent/lib64"],
|
||||
[AC_MSG_CHECKING([for $with_libevent/lib])
|
||||
AS_IF([test -d "$with_libevent/lib"],
|
||||
[AC_MSG_RESULT([found])
|
||||
opal_event_libdir="$with_libevent/lib"],
|
||||
[AC_MSG_RESULT([not found])
|
||||
AC_MSG_WARN([Library directories were not found:])
|
||||
AC_MSG_WARN([ $with_libevent/lib64])
|
||||
AC_MSG_WARN([ $with_libevent/lib])
|
||||
AC_MSG_WARN([Please use --with-libevent-libdir to identify it.])
|
||||
AC_MSG_ERROR([Cannot continue])])])])],
|
||||
[AC_MSG_RESULT([(default search paths)])])
|
||||
AS_IF([test ! -z "$with_libevent_libdir" && test "$with_libevent_libdir" != "yes"],
|
||||
[opal_event_libdir="$with_libevent_libdir"])
|
||||
|
||||
# If we want external support, try it
|
||||
AS_IF([test "$opal_event_external_want" = "yes"],
|
||||
[ # Error out if the specified dir does not exist
|
||||
OPAL_CHECK_WITHDIR([libevent-libdir], [$with_libevent_libdir],
|
||||
[libevent.*])
|
||||
|
||||
AC_MSG_CHECKING([for external libevent in])
|
||||
AS_IF([test "$with_libevent" != "external" && test "$with_libevent" != "yes"],
|
||||
[opal_event_dir=$with_libevent
|
||||
AC_MSG_RESULT([$opal_event_dir])
|
||||
OPAL_CHECK_WITHDIR([libevent], [$opal_event_dir],
|
||||
[include/event.h])
|
||||
AS_IF([test -z "$with_libevent_libdir" || test "$with_libevent_libdir" = "yes"],
|
||||
[AC_MSG_CHECKING([for $with_libevent/lib64])
|
||||
AS_IF([test -d "$with_libevent/lib64"],
|
||||
[opal_event_libdir_found=yes
|
||||
AC_MSG_RESULT([found])],
|
||||
[opal_event_libdir_found=no
|
||||
AC_MSG_RESULT([not found])])
|
||||
AS_IF([test "$opal_event_libdir_found" = "yes"],
|
||||
[opal_event_libdir="$with_libevent/lib64"],
|
||||
[AC_MSG_CHECKING([for $with_libevent/lib])
|
||||
AS_IF([test -d "$with_libevent/lib"],
|
||||
[AC_MSG_RESULT([found])
|
||||
opal_event_libdir="$with_libevent/lib"],
|
||||
[AC_MSG_RESULT([not found])
|
||||
AC_MSG_WARN([Library directories were not found:])
|
||||
AC_MSG_WARN([ $with_libevent/lib64])
|
||||
AC_MSG_WARN([ $with_libevent/lib])
|
||||
AC_MSG_WARN([Please use --with-libevent-libdir to identify it.])
|
||||
AC_MSG_ERROR([Cannot continue])])])])],
|
||||
[AC_MSG_RESULT([(default search paths)])])
|
||||
AS_IF([test ! -z "$with_libevent_libdir" && test "$with_libevent_libdir" != "yes"],
|
||||
[opal_event_libdir="$with_libevent_libdir"])
|
||||
|
||||
opal_event_external_CPPFLAGS_save=$CPPFLAGS
|
||||
AS_IF([test "$with_libevent" != "internal"],
|
||||
[opal_event_external_CPPFLAGS_save=$CPPFLAGS
|
||||
opal_event_external_CFLAGS_save=$CFLAGS
|
||||
opal_event_external_LDFLAGS_save=$LDFLAGS
|
||||
opal_event_external_LIBS_save=$LIBS
|
||||
@ -136,23 +123,42 @@ AC_DEFUN([MCA_opal_event_external_CONFIG],[
|
||||
[opal_event_external_support=yes],
|
||||
[opal_event_external_support=no])
|
||||
|
||||
# Ensure that this libevent has the symbol
|
||||
# "evthread_set_lock_callbacks", which will only exist if
|
||||
# libevent was configured with thread support.
|
||||
LIBS="$opal_event_external_LDFLAGS $LIBS"
|
||||
AC_CHECK_LIB([event], [evthread_set_lock_callbacks],
|
||||
[],
|
||||
[AC_MSG_WARN([External libevent does not have thread support])
|
||||
AC_MSG_WARN([Open MPI requires libevent to be compiled with])
|
||||
AC_MSG_WARN([thread support enabled])
|
||||
AC_MSG_ERROR([Cannot continue])])
|
||||
AS_IF([test "$opal_event_external_support" = "yes"],
|
||||
[# Ensure that this libevent has the symbol
|
||||
# "evthread_set_lock_callbacks", which will only exist if
|
||||
# libevent was configured with thread support.
|
||||
LIBS="$opal_event_external_LDFLAGS $LIBS"
|
||||
AC_CHECK_LIB([event], [evthread_set_lock_callbacks],
|
||||
[],
|
||||
[AC_MSG_WARN([External libevent does not have thread support])
|
||||
AC_MSG_WARN([Open MPI requires libevent to be compiled with])
|
||||
AC_MSG_WARN([thread support enabled])
|
||||
opal_event_external_support=no])])
|
||||
|
||||
AC_CHECK_LIB([event_pthreads], [evthread_use_pthreads],
|
||||
[],
|
||||
[AC_MSG_WARN([External libevent does not have thread support])
|
||||
AC_MSG_WARN([Open MPI requires libevent to be compiled with])
|
||||
AC_MSG_WARN([thread support enabled])
|
||||
AC_MSG_ERROR([Cannot continue])])
|
||||
AS_IF([test "$opal_event_external_support" = "yes"],
|
||||
[AC_CHECK_LIB([event_pthreads], [evthread_use_pthreads],
|
||||
[],
|
||||
[AC_MSG_WARN([External libevent does not have thread support])
|
||||
AC_MSG_WARN([Open MPI requires libevent to be compiled with])
|
||||
AC_MSG_WARN([thread support enabled])
|
||||
opal_event_external_support=no])])
|
||||
|
||||
AS_IF([test "$opal_event_external_support" = "yes"],
|
||||
[AS_IF([test -z "$with_libevent" || test "$with_libevent" = "yes"],
|
||||
[AC_MSG_CHECKING([if external libevent version is 2.0.21 or greater])
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[#include <event.h>]],
|
||||
[[
|
||||
#if _EVENT_NUMERIC_VERSION < 0x02001500
|
||||
#error "libevent API version is less than 0x02001500"
|
||||
#endif
|
||||
]])],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
opal_event_summary_msg="internal (external libevent version is less that internal version 2.0.21)"
|
||||
AC_MSG_WARN([external libevent version is less than internal version (2.0.21)])
|
||||
AC_MSG_WARN([using internal libevent])
|
||||
opal_event_external_support=no])])])
|
||||
|
||||
CPPFLAGS=$opal_event_external_CPPFLAGS_save
|
||||
CFLAGS=$opal_event_external_CFLAGS_save
|
||||
@ -171,20 +177,27 @@ AC_DEFUN([MCA_opal_event_external_CONFIG],[
|
||||
# building with developer headers so that our headers can
|
||||
# be found.
|
||||
event_external_WRAPPER_EXTRA_LDFLAGS=$opal_event_external_LDFLAGS
|
||||
event_external_WRAPPER_EXTRA_LIBS=$opal_event_external_LIBS
|
||||
])
|
||||
event_external_WRAPPER_EXTRA_LIBS=$opal_event_external_LIBS])
|
||||
|
||||
##################################################################
|
||||
|
||||
# Done!
|
||||
AS_IF([test "$opal_event_external_support" = "yes"],
|
||||
[ # If we configured successfully, set
|
||||
[# If we configured successfully, set
|
||||
# OPAL_HAVE_WORKING_EVENTOPS to 1 (it's a calculated value
|
||||
# in the embedded Open MPI libevent, so we can only assume
|
||||
# what it is in the installed libevent :-\ ).
|
||||
file=$opal_event_dir/include/libevent/config.h
|
||||
OPAL_HAVE_WORKING_EVENTOPS=1
|
||||
opal_event_summary_msg="external"
|
||||
$1],
|
||||
[OPAL_HAVE_WORKING_EVENTOPS=0
|
||||
AS_IF([test "$with_libevent" != internal && test -n "$with_libevent"],
|
||||
[AC_MSG_WARN([external libevent requested but cannot be built])
|
||||
AC_MSG_ERROR([Cannot continue.])])
|
||||
$2])
|
||||
|
||||
OPAL_SUMMARY_ADD([[Miscellaneous]],[[Libevent support]], [], [$opal_event_summary_msg])
|
||||
|
||||
OPAL_VAR_SCOPE_POP
|
||||
])dnl
|
||||
|
@ -1,6 +1,6 @@
|
||||
# -*- shell-script -*-
|
||||
#
|
||||
# Copyright (c) 2009-2015 Cisco Systems, Inc. All rights reserved.
|
||||
# Copyright (c) 2009-2018 Cisco Systems, Inc. All rights reserved.
|
||||
# Copyright (c) 2012-2013 Los Alamos National Security, LLC. All rights reserved.
|
||||
# Copyright (c) 2015 Intel, Inc. All rights reserved.
|
||||
# Copyright (c) 2015-2016 Research Organization for Information Science
|
||||
@ -14,9 +14,9 @@
|
||||
#
|
||||
AC_DEFUN([MCA_opal_event_libevent2022_PRIORITY], [80])
|
||||
|
||||
#
|
||||
# Force this component to compile in static-only mode
|
||||
#
|
||||
dnl
|
||||
dnl Force this component to compile in static-only mode
|
||||
dnl
|
||||
AC_DEFUN([MCA_opal_event_libevent2022_COMPILE_MODE], [
|
||||
AC_MSG_CHECKING([for MCA component $2:$3 compile mode])
|
||||
$4="static"
|
||||
@ -24,7 +24,8 @@ AC_DEFUN([MCA_opal_event_libevent2022_COMPILE_MODE], [
|
||||
])
|
||||
|
||||
AC_DEFUN([MCA_opal_event_libevent2022_POST_CONFIG], [
|
||||
AM_CONDITIONAL(OPAL_EVENT_HAVE_THREAD_SUPPORT, test "$enable_event_thread_support" = "yes")
|
||||
AM_CONDITIONAL(OPAL_EVENT_HAVE_THREAD_SUPPORT,
|
||||
[test "$enable_event_thread_support" = "yes"])
|
||||
AS_IF([test "$1" = "1"],
|
||||
[ # Build libevent/include/event2/event-config.h. If we
|
||||
# don't do it here, then libevent's Makefile.am will build
|
||||
@ -34,8 +35,8 @@ AC_DEFUN([MCA_opal_event_libevent2022_POST_CONFIG], [
|
||||
# copied from libevent's Makefile.am.
|
||||
|
||||
AC_CONFIG_COMMANDS([opal/mca/event/libevent2022/libevent/include/event2/event-config.h],
|
||||
[libevent_basedir="opal/mca/event/libevent2022"
|
||||
libevent_file="$libevent_basedir/libevent/include/event2/event-config.h"
|
||||
[opal_event_libevent2022_basedir="opal/mca/event/libevent2022"
|
||||
libevent_file="$opal_event_libevent2022_basedir/libevent/include/event2/event-config.h"
|
||||
rm -f "$libevent_file.new"
|
||||
cat > "$libevent_file.new" <<EOF
|
||||
/* event2/event-config.h
|
||||
@ -55,7 +56,7 @@ EOF
|
||||
|
||||
sed -e 's/#define /#define _EVENT_/' \
|
||||
-e 's/#undef /#undef _EVENT_/' \
|
||||
-e 's/#ifndef /#ifndef _EVENT_/' < "$libevent_basedir/libevent/config.h" >> "$libevent_file.new"
|
||||
-e 's/#ifndef /#ifndef _EVENT_/' < "$opal_event_libevent2022_basedir/libevent/config.h" >> "$libevent_file.new"
|
||||
echo "#endif" >> "$libevent_file.new"
|
||||
|
||||
# Only make a new .h libevent_file if the
|
||||
@ -74,7 +75,7 @@ EOF
|
||||
|
||||
# Add some stuff to CPPFLAGS so that the rest of the source
|
||||
# tree can be built
|
||||
libevent_file=$libevent_basedir/libevent
|
||||
libevent_file=$opal_event_libevent2022_basedir/libevent
|
||||
CPPFLAGS="-I$OPAL_TOP_SRCDIR/$libevent_file -I$OPAL_TOP_SRCDIR/$libevent_file/include $CPPFLAGS"
|
||||
AS_IF([test "$OPAL_TOP_BUILDDIR" != "$OPAL_TOP_SRCDIR"],
|
||||
[CPPFLAGS="-I$OPAL_TOP_BUILDDIR/$libevent_file/include $CPPFLAGS"])
|
||||
@ -82,14 +83,51 @@ EOF
|
||||
])
|
||||
])
|
||||
|
||||
# MCA_event_libevent2022_CONFIG([action-if-can-compile],
|
||||
# [action-if-cant-compile])
|
||||
# ------------------------------------------------
|
||||
dnl MCA_event_libevent2022_CONFIG([action-if-can-compile],
|
||||
dnl [action-if-cant-compile])
|
||||
dnl ------------------------------------------------
|
||||
AC_DEFUN([MCA_opal_event_libevent2022_CONFIG],[
|
||||
OPAL_VAR_SCOPE_PUSH([CFLAGS_save CPPFLAGS_save libevent_file event_args libevent_happy])
|
||||
|
||||
AC_CONFIG_FILES([opal/mca/event/libevent2022/Makefile])
|
||||
libevent_basedir="opal/mca/event/libevent2022"
|
||||
opal_event_libevent2022_basedir="opal/mca/event/libevent2022"
|
||||
|
||||
# We know that the external event component will be configured
|
||||
# before this one because of its priority. This component is only
|
||||
# needed if the external component was not successful in selecting
|
||||
# itself.
|
||||
AC_MSG_CHECKING([if event external component succeeded])
|
||||
AS_IF([test "$opal_event_external_support" = "yes"],
|
||||
[AC_MSG_RESULT([yes])
|
||||
AC_MSG_NOTICE([event:external succeeded, so this component will be configured, but then will be skipped])
|
||||
MCA_opal_event_libevent2022_FAKE_CONFIG($2)],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_NOTICE([event:external failed, so this component will be used])
|
||||
MCA_opal_event_libevent2022_REAL_CONFIG($1, $2)])
|
||||
])
|
||||
|
||||
dnl
|
||||
dnl This macro is invoked when event:external is going to be used (and
|
||||
dnl this component is *not* going to be used).
|
||||
dnl
|
||||
dnl $1: action if this component can compile
|
||||
dnl (we still invoke $1 so that "make distclean" and friends will work)
|
||||
dnl
|
||||
AC_DEFUN([MCA_opal_event_libevent2022_FAKE_CONFIG],[
|
||||
MCA_opal_event_libevent2022_SUB_CONFIGURE([], [], [])
|
||||
AC_MSG_NOTICE([remember: event:external will be used; this component was configured, but will be skipped])
|
||||
$1
|
||||
])
|
||||
|
||||
dnl
|
||||
dnl This macro has a bunch of side effects. It is only meant to be
|
||||
dnl invoked when this component is going to be used (i.e., when
|
||||
dnl event:external is *not* going to be used). If this macro is invoked
|
||||
dnl when event:external is used, Terrible Things will happen.
|
||||
dnl
|
||||
dnl $1: action if this component can compile
|
||||
dnl $2: action if this component cannot compile
|
||||
dnl
|
||||
AC_DEFUN([MCA_opal_event_libevent2022_REAL_CONFIG],[
|
||||
OPAL_VAR_SCOPE_PUSH([CFLAGS_save CPPFLAGS_save libevent_file event_args libevent_happy])
|
||||
|
||||
CFLAGS_save="$CFLAGS"
|
||||
CFLAGS="$OPAL_CFLAGS_BEFORE_PICKY $OPAL_VISIBILITY_CFLAGS"
|
||||
@ -159,14 +197,14 @@ AC_DEFUN([MCA_opal_event_libevent2022_CONFIG],[
|
||||
|
||||
AC_MSG_RESULT([$event_args])
|
||||
|
||||
# Invoke the embedded configure script.
|
||||
# We define "random" to be "opal_random" so that Libevent will not
|
||||
# use random(3) internally (and potentially unexpectedly perturb
|
||||
# values returned by rand(3) to the application).
|
||||
|
||||
CPPFLAGS="$CPPFLAGS -Drandom=opal_random"
|
||||
OPAL_CONFIG_SUBDIR([$libevent_basedir/libevent],
|
||||
[$event_args $opal_subdir_args 'CPPFLAGS=$CPPFLAGS'],
|
||||
[libevent_happy="yes"], [libevent_happy="no"])
|
||||
MCA_opal_event_libevent2022_SUB_CONFIGURE([$event_args],
|
||||
[libevent_happy="yes"],
|
||||
[libevent_happy="no"])
|
||||
if test "$libevent_happy" = "no"; then
|
||||
AC_MSG_WARN([Event library failed to configure])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
@ -184,26 +222,34 @@ AC_DEFUN([MCA_opal_event_libevent2022_CONFIG],[
|
||||
# the value in the generated libevent/config.h (NOT
|
||||
# libevent/include/event2/event-config.h!). Otherwise, set it to
|
||||
# 0.
|
||||
libevent_file=$libevent_basedir/libevent/config.h
|
||||
libevent_file=$opal_event_libevent2022_basedir/libevent/config.h
|
||||
|
||||
# If we are not building the internal libevent, then indicate that
|
||||
# this component should not be built. NOTE: we still did all the
|
||||
# above configury so that all the proper GNU Autotools
|
||||
# infrastructure is setup properly (e.g., w.r.t. SUBDIRS=libevent in
|
||||
# this directory's Makefile.am, we still need the Autotools "make
|
||||
# distclean" infrastructure to work properly).
|
||||
|
||||
AS_IF([test "$with_libevent" != "internal" && test -n "$with_libevent" && test "$with_libevent" != "yes"],
|
||||
[AC_MSG_WARN([using an external libevent; disqualifying this component])
|
||||
libevent_happy=no],
|
||||
|
||||
[AS_IF([test "$libevent_happy" = "yes" && test -r $libevent_file],
|
||||
[OPAL_HAVE_WORKING_EVENTOPS=`grep HAVE_WORKING_EVENTOPS $libevent_file | awk '{print [$]3 }'`
|
||||
$1],
|
||||
[$2
|
||||
OPAL_HAVE_WORKING_EVENTOPS=0])
|
||||
]
|
||||
)
|
||||
AS_IF([test "$libevent_happy" = "yes" && test -r $libevent_file],
|
||||
[OPAL_HAVE_WORKING_EVENTOPS=`grep HAVE_WORKING_EVENTOPS $libevent_file | awk '{print [$]3 }'`
|
||||
$1],
|
||||
[$2
|
||||
OPAL_HAVE_WORKING_EVENTOPS=0])
|
||||
|
||||
OPAL_VAR_SCOPE_POP
|
||||
])
|
||||
|
||||
dnl Call configure in the embedded libevent.
|
||||
dnl
|
||||
dnl We still do this so that all the proper GNU Autotools
|
||||
dnl infrastructure is setup properly (e.g., w.r.t. SUBDIRS=libevent in
|
||||
dnl this directorys Makefile.am, we still need the Autotools "make
|
||||
dnl distclean" infrastructure to work properly).
|
||||
dnl
|
||||
dnl $1: extra configure arguments
|
||||
dnl $2: action on success
|
||||
dnl $3: action on failure
|
||||
dnl
|
||||
AC_DEFUN([MCA_opal_event_libevent2022_SUB_CONFIGURE],[
|
||||
# We define "random" to be "opal_random" so that Libevent will not
|
||||
# use random(3) internally (and potentially unexpectedly perturb
|
||||
# values returned by rand(3) to the application).
|
||||
|
||||
OPAL_CONFIG_SUBDIR([$opal_event_libevent2022_basedir/libevent],
|
||||
[$1 $opal_subdir_args 'CPPFLAGS=$CPPFLAGS'],
|
||||
[$2], [$3])
|
||||
])
|
||||
|
146
opal/mca/hwloc/external/configure.m4
поставляемый
146
opal/mca/hwloc/external/configure.m4
поставляемый
@ -1,7 +1,7 @@
|
||||
# -*- shell-script -*-
|
||||
#
|
||||
# Copyright (c) 2009-2017 Cisco Systems, Inc. All rights reserved
|
||||
# Copyright (c) 2014-2017 Research Organization for Information Science
|
||||
# Copyright (c) 2014-2018 Research Organization for Information Science
|
||||
# and Technology (RIST). All rights reserved.
|
||||
#
|
||||
# Copyright (c) 2018 Intel, Inc. All rights reserved.
|
||||
@ -84,7 +84,7 @@ AC_DEFUN([MCA_opal_hwloc_external_POST_CONFIG],[
|
||||
AC_DEFUN([MCA_opal_hwloc_external_CONFIG],[
|
||||
AC_CONFIG_FILES([opal/mca/hwloc/external/Makefile])
|
||||
|
||||
OPAL_VAR_SCOPE_PUSH([opal_hwloc_external_CPPFLAGS_save opal_hwloc_external_CFLAGS_save opal_hwloc_external_LDFLAGS_save opal_hwloc_external_LIBS_save opal_hwloc_external_want opal_hwloc_external_tmp opal_hwloc_external_lstopo])
|
||||
OPAL_VAR_SCOPE_PUSH([opal_hwloc_external_CPPFLAGS_save opal_hwloc_external_CFLAGS_save opal_hwloc_external_LDFLAGS_save opal_hwloc_external_LIBS_save opal_hwloc_external_tmp opal_hwloc_external_lstopo opal_hwloc_summary_msg])
|
||||
|
||||
AC_ARG_WITH([hwloc-libdir],
|
||||
[AC_HELP_STRING([--with-hwloc-libdir=DIR],
|
||||
@ -98,19 +98,9 @@ AC_DEFUN([MCA_opal_hwloc_external_CONFIG],[
|
||||
AC_MSG_WARN([were specified, which does not make sense.])
|
||||
AC_MSG_ERROR([Cannot continue])])
|
||||
|
||||
# Do we want this external component? (slightly redundant logic,
|
||||
# but hopefully slightly more clear...)
|
||||
opal_hwloc_external_want=no
|
||||
AS_IF([test "$with_hwloc_libdir" != ""], [opal_hwloc_external_want=yes])
|
||||
AS_IF([test "$with_hwloc" = "external"], [opal_hwloc_external_want=yes])
|
||||
AS_IF([test "$with_hwloc" != "" && \
|
||||
test "$with_hwloc" != "no" && \
|
||||
test "$with_hwloc" != "internal" && \
|
||||
test "$with_hwloc" != "future"], [opal_hwloc_external_want=yes])
|
||||
AS_IF([test "$with_hwloc" = "no"], [opal_hwloc_external_want=no])
|
||||
|
||||
# If we still want external support, try it
|
||||
AS_IF([test "$opal_hwloc_external_want" = "yes"],
|
||||
opal_hwloc_summary_msg="internal"
|
||||
# Try external support if needed
|
||||
AS_IF([test "$with_hwloc" != "internal"],
|
||||
[OPAL_CHECK_WITHDIR([hwloc-libdir], [$with_hwloc_libdir],
|
||||
[libhwloc.*])
|
||||
|
||||
@ -144,64 +134,86 @@ AC_DEFUN([MCA_opal_hwloc_external_CONFIG],[
|
||||
LDFLAGS="$LDFLAGS $opal_hwloc_external_LDFLAGS"
|
||||
LIBS="$LIBS $opal_hwloc_external_LIBS"
|
||||
AC_CHECK_DECLS([HWLOC_OBJ_OSDEV_COPROC], [], [], [#include <hwloc.h>])
|
||||
AC_CHECK_FUNCS([hwloc_topology_dup])])
|
||||
AC_CHECK_FUNCS([hwloc_topology_dup])
|
||||
|
||||
CPPFLAGS=$opal_hwloc_external_CPPFLAGS_save
|
||||
CFLAGS=$opal_hwloc_external_CFLAGS_save
|
||||
LDFLAGS=$opal_hwloc_external_LDFLAGS_save
|
||||
LIBS=$opal_hwloc_external_LIBS_save
|
||||
AC_MSG_CHECKING([if external hwloc version is 1.5 or greater])
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[#include <hwloc.h>]],
|
||||
[[
|
||||
#if HWLOC_API_VERSION < 0x00010500
|
||||
#error "hwloc API version is less than 0x00010500"
|
||||
#endif
|
||||
]])],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
opal_hwloc_external_support=no])])
|
||||
|
||||
# If external hwloc is not explicitly requested, check external version
|
||||
# is not lower than the internal one
|
||||
AS_IF([test "$opal_hwloc_external_support" = "yes"],
|
||||
[AS_IF([test -z "$with_hwloc" || test "$with_hwloc" = "yes"],
|
||||
[AC_MSG_CHECKING([if external hwloc version is 2.0 or greater])
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[#include <hwloc.h>]],
|
||||
[[
|
||||
#if HWLOC_API_VERSION < 0x00020000
|
||||
#error "hwloc API version is less than 0x00020000"
|
||||
#endif
|
||||
]])],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
opal_hwloc_summary_msg="internal (external hlwoc version is less than internal version 2.0)"
|
||||
AC_MSG_WARN([external hwloc version is less than internal version 2.0])
|
||||
AC_MSG_WARN([using internal hwloc])
|
||||
opal_hwloc_external_support=no])])])
|
||||
|
||||
AS_IF([test "$opal_hwloc_external_support" = "yes"],
|
||||
[AC_DEFINE_UNQUOTED([HWLOC_EXTERNAL_HWLOC_VERSION],
|
||||
[external],
|
||||
[Version of hwloc])
|
||||
|
||||
# See if the external hwloc supports XML
|
||||
AC_MSG_CHECKING([if external hwloc supports XML])
|
||||
AS_IF([test "$opal_hwloc_dir" != ""],
|
||||
[opal_hwloc_external_lstopo="$opal_hwloc_dir/bin/lstopo"],
|
||||
[OPAL_WHICH(lstopo, opal_hwloc_external_lstopo)])
|
||||
opal_hwloc_external_tmp=`$opal_hwloc_external_lstopo --help | $GREP "Supported output file formats" | grep xml`
|
||||
AS_IF([test "$opal_hwloc_external_tmp" = ""],
|
||||
[opal_hwloc_external_enable_xml=0
|
||||
AC_MSG_RESULT([no])],
|
||||
[opal_hwloc_external_enable_xml=1
|
||||
AC_MSG_RESULT([yes])])
|
||||
|
||||
AC_CHECK_HEADERS([infiniband/verbs.h])
|
||||
|
||||
# These flags need to get passed to the wrapper compilers
|
||||
# (this is unnecessary for the internal/embedded hwloc)
|
||||
|
||||
# Finally, add some flags to the wrapper compiler if we're
|
||||
# building with developer headers so that our headers can
|
||||
# be found.
|
||||
hwloc_external_WRAPPER_EXTRA_CPPFLAGS=$opal_hwloc_external_CPPFLAGS
|
||||
hwloc_external_WRAPPER_EXTRA_LDFLAGS=$opal_hwloc_external_LDFLAGS
|
||||
hwloc_external_WRAPPER_EXTRA_LIBS=$opal_hwloc_external_LIBS])
|
||||
|
||||
CPPFLAGS=$opal_hwloc_external_CPPFLAGS_save
|
||||
CFLAGS=$opal_hwloc_external_CFLAGS_save
|
||||
LDFLAGS=$opal_hwloc_external_LDFLAGS_save
|
||||
LIBS=$opal_hwloc_external_LIBS_save
|
||||
])
|
||||
|
||||
# Done!
|
||||
AS_IF([test "$opal_hwloc_external_support" = "yes"],
|
||||
[AC_DEFINE_UNQUOTED([HWLOC_EXTERNAL_HWLOC_VERSION],
|
||||
[external],
|
||||
[Version of hwloc])
|
||||
|
||||
# See if the external hwloc supports XML
|
||||
AC_MSG_CHECKING([if external hwloc supports XML])
|
||||
AS_IF([test "$opal_hwloc_dir" != ""],
|
||||
[opal_hwloc_external_lstopo="$opal_hwloc_dir/bin/lstopo"],
|
||||
[OPAL_WHICH(lstopo, opal_hwloc_external_lstopo)])
|
||||
opal_hwloc_external_tmp=`$opal_hwloc_external_lstopo --help | $GREP "Supported output file formats" | grep xml`
|
||||
AS_IF([test "$opal_hwloc_external_tmp" = ""],
|
||||
[opal_hwloc_external_enable_xml=0
|
||||
AC_MSG_RESULT([no])],
|
||||
[opal_hwloc_external_enable_xml=1
|
||||
AC_MSG_RESULT([yes])])
|
||||
|
||||
AC_CHECK_HEADERS([infiniband/verbs.h])
|
||||
|
||||
AC_MSG_CHECKING([if external hwloc version is 1.5 or greater])
|
||||
AS_IF([test "$opal_hwloc_dir" != ""],
|
||||
[opal_hwloc_external_CFLAGS_save=$CFLAGS
|
||||
CFLAGS="-I$opal_hwloc_dir/include $opal_hwloc_external_CFLAGS_save"])
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[#include <hwloc.h>]],
|
||||
[[
|
||||
#if HWLOC_API_VERSION < 0x00010500
|
||||
#error "hwloc API version is less than 0x00010500"
|
||||
#endif
|
||||
]])],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([Cannot continue])])
|
||||
|
||||
AS_IF([test "$opal_hwloc_dir" != ""],
|
||||
[CFLAGS=$opal_hwloc_external_CFLAGS_save])
|
||||
|
||||
# These flags need to get passed to the wrapper compilers
|
||||
# (this is unnecessary for the internal/embedded hwloc)
|
||||
|
||||
# Finally, add some flags to the wrapper compiler if we're
|
||||
# building with developer headers so that our headers can
|
||||
# be found.
|
||||
hwloc_external_WRAPPER_EXTRA_CPPFLAGS=$opal_hwloc_external_CPPFLAGS
|
||||
hwloc_external_WRAPPER_EXTRA_LDFLAGS=$opal_hwloc_external_LDFLAGS
|
||||
hwloc_external_WRAPPER_EXTRA_LIBS=$opal_hwloc_external_LIBS
|
||||
|
||||
[opal_hwloc_summary_msg="external"
|
||||
$1],
|
||||
[$2])
|
||||
[# Abort is external hwloc was explicitly requested but cannot be built
|
||||
AS_IF([test "$with_hwloc" != internal &&
|
||||
test -n "$with_hwloc"],
|
||||
[AC_MSG_WARN([external hwloc cannot be built])
|
||||
AC_MSG_ERROR([Cannot continue.])])
|
||||
$2])
|
||||
|
||||
OPAL_SUMMARY_ADD([[Miscellaneous]],[[HWLOC support]], [], [$opal_hwloc_summary_msg])
|
||||
|
||||
AC_SUBST(opal_hwloc_external_LDFLAGS)
|
||||
AC_SUBST(opal_hwloc_external_LIBS)
|
||||
|
@ -1,8 +1,8 @@
|
||||
# -*- shell-script -*-
|
||||
#
|
||||
# Copyright (c) 2009-2017 Cisco Systems, Inc. All rights reserved
|
||||
# Copyright (c) 2009-2018 Cisco Systems, Inc. All rights reserved
|
||||
# Copyright (c) 2014-2017 Intel, Inc. All rights reserved.
|
||||
# Copyright (c) 2015-2017 Research Organization for Information Science
|
||||
# Copyright (c) 2015-2018 Research Organization for Information Science
|
||||
# and Technology (RIST). All rights reserved.
|
||||
# Copyright (c) 2016 Los Alamos National Security, LLC. All rights
|
||||
# reserved.
|
||||
@ -17,7 +17,7 @@
|
||||
#
|
||||
# Priority
|
||||
#
|
||||
AC_DEFUN([MCA_opal_hwloc_hwloc201_PRIORITY], [90])
|
||||
AC_DEFUN([MCA_opal_hwloc_hwloc201_PRIORITY], [80])
|
||||
|
||||
#
|
||||
# Force this component to compile in static-only mode
|
||||
@ -76,24 +76,25 @@ AC_DEFUN([MCA_opal_hwloc_hwloc201_CONFIG],[
|
||||
|
||||
OPAL_VAR_SCOPE_PUSH([HWLOC_VERSION opal_hwloc_hwloc201_save_CPPFLAGS opal_hwloc_hwloc201_save_LDFLAGS opal_hwloc_hwloc201_save_LIBS opal_hwloc_hwloc201_save_cairo opal_hwloc_hwloc201_save_xml opal_hwloc_hwloc201_save_mode opal_hwloc_hwloc201_basedir opal_hwloc_hwloc201_file opal_hwloc_hwloc201_save_cflags CPPFLAGS_save LIBS_save opal_hwloc_external])
|
||||
|
||||
# We know that the external hwloc component will be configured
|
||||
# before this one because of its priority. This component is only
|
||||
# needed if the external component was not successful in selecting
|
||||
# itself. Print out a message explaining this.
|
||||
AC_MSG_CHECKING([if hwloc external component succeeded])
|
||||
AS_IF([test "$opal_hwloc_external_support" = "yes"],
|
||||
[AC_MSG_RESULT([yes])
|
||||
AC_MSG_NOTICE([hwloc:external succeeded, so this component will be configured, but then will be skipped])],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_NOTICE([hwloc:external failed, so this component will be used])])
|
||||
|
||||
# default to this component not providing support
|
||||
opal_hwloc_hwloc201_basedir=opal/mca/hwloc/hwloc201
|
||||
opal_hwloc_hwloc201_support=no
|
||||
|
||||
AS_IF([test "$with_hwloc" = "internal" || test -z "$with_hwloc" || test "$with_hwloc" = "yes"],
|
||||
[opal_hwloc_external="no"],
|
||||
[opal_hwloc_external="yes"])
|
||||
|
||||
opal_hwloc_hwloc201_save_CPPFLAGS=$CPPFLAGS
|
||||
opal_hwloc_hwloc201_save_LDFLAGS=$LDFLAGS
|
||||
opal_hwloc_hwloc201_save_LIBS=$LIBS
|
||||
|
||||
# Run the hwloc configuration - if no external hwloc, then set the prefixi
|
||||
# to minimize the chance that someone will use the internal symbols
|
||||
AS_IF([test "$opal_hwloc_external" = "no" &&
|
||||
test "$with_hwloc" != "future"],
|
||||
[HWLOC_SET_SYMBOL_PREFIX([opal_hwloc201_])])
|
||||
|
||||
# save XML or graphical options
|
||||
opal_hwloc_hwloc201_save_cairo=$enable_cairo
|
||||
opal_hwloc_hwloc201_save_xml=$enable_xml
|
||||
@ -136,6 +137,12 @@ AC_DEFUN([MCA_opal_hwloc_hwloc201_CONFIG],[
|
||||
AS_IF([test -n "$opal_datatype_cuda_CPPFLAGS"],
|
||||
[CPPFLAGS="$CPPFLAGS $opal_datatype_cuda_CPPFLAGS"])
|
||||
|
||||
# Only set the symbol prefix if this component is being used
|
||||
# (i.e., if the external component is not being used).
|
||||
AS_IF([test "$opal_hwloc_external_support" = "no"],
|
||||
[HWLOC_SET_SYMBOL_PREFIX([opal_hwloc201_])])
|
||||
|
||||
# Do the bulk of the hwloc core setup
|
||||
HWLOC_SETUP_CORE([opal/mca/hwloc/hwloc201/hwloc],
|
||||
[AC_MSG_CHECKING([whether hwloc configure succeeded])
|
||||
AC_MSG_RESULT([yes])
|
||||
@ -195,8 +202,8 @@ AC_DEFUN([MCA_opal_hwloc_hwloc201_CONFIG],[
|
||||
# infrastructure is setup properly (e.g., w.r.t. SUBDIRS=hwloc in
|
||||
# this directory's Makefile.am, we still need the Autotools "make
|
||||
# distclean" infrastructure to work properly).
|
||||
AS_IF([test "$opal_hwloc_external" = "yes"],
|
||||
[AC_MSG_WARN([using an external hwloc; disqualifying this component])
|
||||
AS_IF([test "$opal_hwloc_external_support" = "yes"],
|
||||
[AC_MSG_NOTICE([using an external hwloc; disqualifying this component])
|
||||
opal_hwloc_hwloc201_support=no],
|
||||
[AC_DEFINE([HAVE_DECL_HWLOC_OBJ_OSDEV_COPROC], [1])
|
||||
AC_DEFINE([HAVE_HWLOC_TOPOLOGY_DUP], [1])])
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user