1
1

Merge pull request #5533 from jsquyres/pr/fix-libevent-hwloc-gwlargflappbt

Fix internal/external hwloc and libevent
Этот коммит содержится в:
Jeff Squyres 2018-08-11 14:59:24 -04:00 коммит произвёл GitHub
родитель 09ad7258e2 01e4570af7
Коммит f1346cba42
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 91 добавлений и 60 удалений

Просмотреть файл

@ -14,9 +14,9 @@
# #
AC_DEFUN([MCA_opal_event_libevent2022_PRIORITY], [80]) AC_DEFUN([MCA_opal_event_libevent2022_PRIORITY], [80])
# dnl
# Force this component to compile in static-only mode dnl Force this component to compile in static-only mode
# dnl
AC_DEFUN([MCA_opal_event_libevent2022_COMPILE_MODE], [ AC_DEFUN([MCA_opal_event_libevent2022_COMPILE_MODE], [
AC_MSG_CHECKING([for MCA component $2:$3 compile mode]) AC_MSG_CHECKING([for MCA component $2:$3 compile mode])
$4="static" $4="static"
@ -24,7 +24,8 @@ AC_DEFUN([MCA_opal_event_libevent2022_COMPILE_MODE], [
]) ])
AC_DEFUN([MCA_opal_event_libevent2022_POST_CONFIG], [ 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"], AS_IF([test "$1" = "1"],
[ # Build libevent/include/event2/event-config.h. If we [ # Build libevent/include/event2/event-config.h. If we
# don't do it here, then libevent's Makefile.am will build # 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. # copied from libevent's Makefile.am.
AC_CONFIG_COMMANDS([opal/mca/event/libevent2022/libevent/include/event2/event-config.h], AC_CONFIG_COMMANDS([opal/mca/event/libevent2022/libevent/include/event2/event-config.h],
[libevent_basedir="opal/mca/event/libevent2022" [opal_event_libevent2022_basedir="opal/mca/event/libevent2022"
libevent_file="$libevent_basedir/libevent/include/event2/event-config.h" libevent_file="$opal_event_libevent2022_basedir/libevent/include/event2/event-config.h"
rm -f "$libevent_file.new" rm -f "$libevent_file.new"
cat > "$libevent_file.new" <<EOF cat > "$libevent_file.new" <<EOF
/* event2/event-config.h /* event2/event-config.h
@ -55,7 +56,7 @@ EOF
sed -e 's/#define /#define _EVENT_/' \ sed -e 's/#define /#define _EVENT_/' \
-e 's/#undef /#undef _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" echo "#endif" >> "$libevent_file.new"
# Only make a new .h libevent_file if the # 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 # Add some stuff to CPPFLAGS so that the rest of the source
# tree can be built # 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" CPPFLAGS="-I$OPAL_TOP_SRCDIR/$libevent_file -I$OPAL_TOP_SRCDIR/$libevent_file/include $CPPFLAGS"
AS_IF([test "$OPAL_TOP_BUILDDIR" != "$OPAL_TOP_SRCDIR"], AS_IF([test "$OPAL_TOP_BUILDDIR" != "$OPAL_TOP_SRCDIR"],
[CPPFLAGS="-I$OPAL_TOP_BUILDDIR/$libevent_file/include $CPPFLAGS"]) [CPPFLAGS="-I$OPAL_TOP_BUILDDIR/$libevent_file/include $CPPFLAGS"])
@ -82,10 +83,13 @@ EOF
]) ])
]) ])
# MCA_event_libevent2022_CONFIG([action-if-can-compile], dnl MCA_event_libevent2022_CONFIG([action-if-can-compile],
# [action-if-cant-compile]) dnl [action-if-cant-compile])
# ------------------------------------------------ dnl ------------------------------------------------
AC_DEFUN([MCA_opal_event_libevent2022_CONFIG],[ AC_DEFUN([MCA_opal_event_libevent2022_CONFIG],[
AC_CONFIG_FILES([opal/mca/event/libevent2022/Makefile])
opal_event_libevent2022_basedir="opal/mca/event/libevent2022"
# We know that the external event component will be configured # We know that the external event component will be configured
# before this one because of its priority. This component is only # before this one because of its priority. This component is only
# needed if the external component was not successful in selecting # needed if the external component was not successful in selecting
@ -93,18 +97,37 @@ AC_DEFUN([MCA_opal_event_libevent2022_CONFIG],[
AC_MSG_CHECKING([if event external component succeeded]) AC_MSG_CHECKING([if event external component succeeded])
AS_IF([test "$opal_event_external_support" = "yes"], AS_IF([test "$opal_event_external_support" = "yes"],
[AC_MSG_RESULT([yes]) [AC_MSG_RESULT([yes])
AC_MSG_NOTICE([event:external succeeded, so this component will be skipped]) AC_MSG_NOTICE([event:external succeeded, so this component will be configured, but then will be skipped])
$2], MCA_opal_event_libevent2022_FAKE_CONFIG($2)],
[AC_MSG_RESULT([no]) [AC_MSG_RESULT([no])
AC_MSG_NOTICE([event:external failed, so this component will be used]) AC_MSG_NOTICE([event:external failed, so this component will be used])
MCA_opal_event_libevent2022_BACKEND_CONFIG($1, $2)]) MCA_opal_event_libevent2022_REAL_CONFIG($1, $2)])
]) ])
AC_DEFUN([MCA_opal_event_libevent2022_BACKEND_CONFIG],[ dnl
OPAL_VAR_SCOPE_PUSH([CFLAGS_save CPPFLAGS_save libevent_file event_args libevent_happy]) 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
])
AC_CONFIG_FILES([opal/mca/event/libevent2022/Makefile]) dnl
libevent_basedir="opal/mca/event/libevent2022" 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_save="$CFLAGS"
CFLAGS="$OPAL_CFLAGS_BEFORE_PICKY $OPAL_VISIBILITY_CFLAGS" CFLAGS="$OPAL_CFLAGS_BEFORE_PICKY $OPAL_VISIBILITY_CFLAGS"
@ -174,14 +197,14 @@ AC_DEFUN([MCA_opal_event_libevent2022_BACKEND_CONFIG],[
AC_MSG_RESULT([$event_args]) AC_MSG_RESULT([$event_args])
# Invoke the embedded configure script.
# We define "random" to be "opal_random" so that Libevent will not # We define "random" to be "opal_random" so that Libevent will not
# use random(3) internally (and potentially unexpectedly perturb # use random(3) internally (and potentially unexpectedly perturb
# values returned by rand(3) to the application). # values returned by rand(3) to the application).
CPPFLAGS="$CPPFLAGS -Drandom=opal_random" CPPFLAGS="$CPPFLAGS -Drandom=opal_random"
OPAL_CONFIG_SUBDIR([$libevent_basedir/libevent], MCA_opal_event_libevent2022_SUB_CONFIGURE([$event_args],
[$event_args $opal_subdir_args 'CPPFLAGS=$CPPFLAGS'], [libevent_happy="yes"],
[libevent_happy="yes"], [libevent_happy="no"]) [libevent_happy="no"])
if test "$libevent_happy" = "no"; then if test "$libevent_happy" = "no"; then
AC_MSG_WARN([Event library failed to configure]) AC_MSG_WARN([Event library failed to configure])
AC_MSG_ERROR([Cannot continue]) AC_MSG_ERROR([Cannot continue])
@ -199,26 +222,34 @@ AC_DEFUN([MCA_opal_event_libevent2022_BACKEND_CONFIG],[
# the value in the generated libevent/config.h (NOT # the value in the generated libevent/config.h (NOT
# libevent/include/event2/event-config.h!). Otherwise, set it to # libevent/include/event2/event-config.h!). Otherwise, set it to
# 0. # 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 AS_IF([test "$libevent_happy" = "yes" && test -r $libevent_file],
# this component should not be built. NOTE: we still did all the [OPAL_HAVE_WORKING_EVENTOPS=`grep HAVE_WORKING_EVENTOPS $libevent_file | awk '{print [$]3 }'`
# above configury so that all the proper GNU Autotools $1],
# infrastructure is setup properly (e.g., w.r.t. SUBDIRS=libevent in [$2
# this directory's Makefile.am, we still need the Autotools "make OPAL_HAVE_WORKING_EVENTOPS=0])
# 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])
]
)
OPAL_VAR_SCOPE_POP 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])
])

Просмотреть файл

@ -69,21 +69,6 @@ AC_DEFUN([MCA_opal_hwloc_hwloc201_POST_CONFIG],[
# MCA_hwloc_hwloc201_CONFIG([action-if-found], [action-if-not-found]) # MCA_hwloc_hwloc201_CONFIG([action-if-found], [action-if-not-found])
# -------------------------------------------------------------------- # --------------------------------------------------------------------
AC_DEFUN([MCA_opal_hwloc_hwloc201_CONFIG],[ AC_DEFUN([MCA_opal_hwloc_hwloc201_CONFIG],[
# 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.
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 skipped])
$2],
[AC_MSG_RESULT([no])
AC_MSG_NOTICE([hwloc:external failed, so this component will be used])
MCA_opal_hwloc_hwloc201_BACKEND_CONFIG($1, $2)])
])
AC_DEFUN([MCA_opal_hwloc_hwloc201_BACKEND_CONFIG],[
# Hwloc needs to know if we have Verbs support # Hwloc needs to know if we have Verbs support
AC_REQUIRE([OPAL_CHECK_VERBS_DIR]) AC_REQUIRE([OPAL_CHECK_VERBS_DIR])
@ -91,6 +76,17 @@ AC_DEFUN([MCA_opal_hwloc_hwloc201_BACKEND_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]) 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 # default to this component not providing support
opal_hwloc_hwloc201_basedir=opal/mca/hwloc/hwloc201 opal_hwloc_hwloc201_basedir=opal/mca/hwloc/hwloc201
opal_hwloc_hwloc201_support=no opal_hwloc_hwloc201_support=no
@ -99,8 +95,6 @@ AC_DEFUN([MCA_opal_hwloc_hwloc201_BACKEND_CONFIG],[
opal_hwloc_hwloc201_save_LDFLAGS=$LDFLAGS opal_hwloc_hwloc201_save_LDFLAGS=$LDFLAGS
opal_hwloc_hwloc201_save_LIBS=$LIBS opal_hwloc_hwloc201_save_LIBS=$LIBS
HWLOC_SET_SYMBOL_PREFIX([opal_hwloc201_])
# save XML or graphical options # save XML or graphical options
opal_hwloc_hwloc201_save_cairo=$enable_cairo opal_hwloc_hwloc201_save_cairo=$enable_cairo
opal_hwloc_hwloc201_save_xml=$enable_xml opal_hwloc_hwloc201_save_xml=$enable_xml
@ -143,6 +137,12 @@ AC_DEFUN([MCA_opal_hwloc_hwloc201_BACKEND_CONFIG],[
AS_IF([test -n "$opal_datatype_cuda_CPPFLAGS"], AS_IF([test -n "$opal_datatype_cuda_CPPFLAGS"],
[CPPFLAGS="$CPPFLAGS $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], HWLOC_SETUP_CORE([opal/mca/hwloc/hwloc201/hwloc],
[AC_MSG_CHECKING([whether hwloc configure succeeded]) [AC_MSG_CHECKING([whether hwloc configure succeeded])
AC_MSG_RESULT([yes]) AC_MSG_RESULT([yes])
@ -202,8 +202,8 @@ AC_DEFUN([MCA_opal_hwloc_hwloc201_BACKEND_CONFIG],[
# infrastructure is setup properly (e.g., w.r.t. SUBDIRS=hwloc in # infrastructure is setup properly (e.g., w.r.t. SUBDIRS=hwloc in
# this directory's Makefile.am, we still need the Autotools "make # this directory's Makefile.am, we still need the Autotools "make
# distclean" infrastructure to work properly). # distclean" infrastructure to work properly).
AS_IF([test "$opal_hwloc_external" = "yes"], AS_IF([test "$opal_hwloc_external_support" = "yes"],
[AC_MSG_WARN([using an external hwloc; disqualifying this component]) [AC_MSG_NOTICE([using an external hwloc; disqualifying this component])
opal_hwloc_hwloc201_support=no], opal_hwloc_hwloc201_support=no],
[AC_DEFINE([HAVE_DECL_HWLOC_OBJ_OSDEV_COPROC], [1]) [AC_DEFINE([HAVE_DECL_HWLOC_OBJ_OSDEV_COPROC], [1])
AC_DEFINE([HAVE_HWLOC_TOPOLOGY_DUP], [1])]) AC_DEFINE([HAVE_HWLOC_TOPOLOGY_DUP], [1])])