diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000000..c7d93416a43 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "hwloc-20x"] + path = opal/mca/hwloc/hwloc2/hwloc + url = https://github.com/open-mpi/hwloc.git diff --git a/autogen.pl b/autogen.pl index 9715c0ea1ce..54323b78d1f 100755 --- a/autogen.pl +++ b/autogen.pl @@ -1,6 +1,6 @@ #!/usr/bin/env perl # -# Copyright (c) 2009-2017 Cisco Systems, Inc. All rights reserved +# Copyright (c) 2009-2019 Cisco Systems, Inc. All rights reserved # Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2013 Mellanox Technologies, Inc. # All rights reserved. @@ -1231,6 +1231,54 @@ sub in_tarball { #--------------------------------------------------------------------------- +++$step; +verbose "\n$step. Checking for git submodules\n\n"; + +# Make sure we got a submodule-full clone. If not, abort and let a +# human figure it out. +if (-f ".gitmodules") { + open(IN, "git submodule status|") + || die "Can't run \"git submodule status\""; + while () { + chomp; + $_ =~ m/^(.)(.{40}) ([^ ]+) *\(*([^\(\)]*)\)*$/; + my $status = $1; + my $local_hash = $2; + my $path = $3; + my $extra = $4; + + print("=== Submodule: $path\n"); + + # Make sure the submodule is there + if ($status eq "-") { + print(" ==> ERROR: Missing + +The submodule \"$path\" is missing. + +Perhaps you forgot to \"git clone --recursive ...\", or you need to +\"git submodule update --init --recursive\"...?\n\n"); + exit(1); + } + + # See if the submodule is at the expected git hash + # (it may be ok if it's not -- just warn the user) + $extra =~ m/-g(.+)/; + my $remote_hash = $1; + if ($remote_hash) { + my $abbrev_local_hash = substr($local_hash, 0, length($remote_hash)); + if ($remote_hash ne $abbrev_local_hash) { + print(" ==> WARNING: Submodule hash is different than upstream. + If this is not intentional, you may want to run: + \"git submodule update --init --recursive\"\n"); + } else { + print(" Local hash == remote hash (good!)\n"); + } + } + } +} + +#--------------------------------------------------------------------------- + # Save the platform file in the m4 $m4 .= "dnl Platform file\n"; diff --git a/opal/mca/hwloc/hwloc201/Makefile.am b/opal/mca/hwloc/hwloc2/Makefile.am similarity index 75% rename from opal/mca/hwloc/hwloc201/Makefile.am rename to opal/mca/hwloc/hwloc2/Makefile.am index 3b153ff2a1f..79370c14efa 100644 --- a/opal/mca/hwloc/hwloc201/Makefile.am +++ b/opal/mca/hwloc/hwloc2/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright (c) 2011-2018 Cisco Systems, Inc. All rights reserved. +# Copyright (c) 2011-2019 Cisco Systems, Inc. All rights reserved. # Copyright (c) 2014-2017 Intel, Inc. All rights reserved. # Copyright (c) 2016 Los Alamos National Security, LLC. All rights # reserved. @@ -19,29 +19,19 @@ DISTCLEANFILES = \ hwloc/include/hwloc/autogen/stamp-h? \ hwloc/include/private/autogen/stamp-h? -# Need to include these files so that these directories are carried in -# the tarball (in case someone invokes autogen.sh on a dist tarball). -EXTRA_DIST = \ - hwloc/doc/README.txt \ - hwloc/contrib/systemd/README.txt \ - hwloc/tests/README.txt \ - hwloc/utils/README.txt \ - hwloc/netloc/README.txt \ - hwloc/contrib/misc/README.txt - SUBDIRS = hwloc # Headers and sources -headers = hwloc201.h -sources = hwloc201_component.c +headers = hwloc2.h +sources = hwloc2_component.c # We only ever build this component statically -noinst_LTLIBRARIES = libmca_hwloc_hwloc201.la -libmca_hwloc_hwloc201_la_SOURCES = $(headers) $(sources) -nodist_libmca_hwloc_hwloc201_la_SOURCES = $(nodist_headers) -libmca_hwloc_hwloc201_la_LDFLAGS = -module -avoid-version $(opal_hwloc_hwloc201_LDFLAGS) -libmca_hwloc_hwloc201_la_LIBADD = $(opal_hwloc_hwloc201_LIBS) -libmca_hwloc_hwloc201_la_DEPENDENCIES = \ +noinst_LTLIBRARIES = libmca_hwloc_hwloc2.la +libmca_hwloc_hwloc2_la_SOURCES = $(headers) $(sources) +nodist_libmca_hwloc_hwloc2_la_SOURCES = $(nodist_headers) +libmca_hwloc_hwloc2_la_LDFLAGS = -module -avoid-version $(opal_hwloc_hwloc2_LDFLAGS) +libmca_hwloc_hwloc2_la_LIBADD = $(opal_hwloc_hwloc2_LIBS) +libmca_hwloc_hwloc2_la_DEPENDENCIES = \ $(HWLOC_top_builddir)/hwloc/libhwloc_embedded.la # Since the rest of the code base includes the underlying hwloc.h, we diff --git a/opal/mca/hwloc/hwloc2/README-ompi.txt b/opal/mca/hwloc/hwloc2/README-ompi.txt new file mode 100644 index 00000000000..2490b6e6db7 --- /dev/null +++ b/opal/mca/hwloc/hwloc2/README-ompi.txt @@ -0,0 +1 @@ +Cherry-picked commits after 2.1.0: diff --git a/opal/mca/hwloc/hwloc2/autogen.subdirs b/opal/mca/hwloc/hwloc2/autogen.subdirs new file mode 100644 index 00000000000..beb596cf6af --- /dev/null +++ b/opal/mca/hwloc/hwloc2/autogen.subdirs @@ -0,0 +1 @@ +hwloc diff --git a/opal/mca/hwloc/hwloc201/configure.m4 b/opal/mca/hwloc/hwloc2/configure.m4 similarity index 54% rename from opal/mca/hwloc/hwloc201/configure.m4 rename to opal/mca/hwloc/hwloc2/configure.m4 index e503eb4c32f..9519fb2d504 100644 --- a/opal/mca/hwloc/hwloc201/configure.m4 +++ b/opal/mca/hwloc/hwloc2/configure.m4 @@ -1,6 +1,6 @@ # -*- shell-script -*- # -# Copyright (c) 2009-2018 Cisco Systems, Inc. All rights reserved +# Copyright (c) 2009-2019 Cisco Systems, Inc. All rights reserved # Copyright (c) 2014-2017 Intel, Inc. All rights reserved. # Copyright (c) 2015-2018 Research Organization for Information Science # and Technology (RIST). All rights reserved. @@ -17,43 +17,43 @@ # # Priority # -AC_DEFUN([MCA_opal_hwloc_hwloc201_PRIORITY], [80]) +AC_DEFUN([MCA_opal_hwloc_hwloc2_PRIORITY], [80]) # # Force this component to compile in static-only mode # -AC_DEFUN([MCA_opal_hwloc_hwloc201_COMPILE_MODE], [ +AC_DEFUN([MCA_opal_hwloc_hwloc2_COMPILE_MODE], [ AC_MSG_CHECKING([for MCA component $2:$3 compile mode]) $4="static" AC_MSG_RESULT([$$4]) ]) # Include hwloc m4 files -m4_include(opal/mca/hwloc/hwloc201/hwloc/config/hwloc.m4) -m4_include(opal/mca/hwloc/hwloc201/hwloc/config/hwloc_pkg.m4) -m4_include(opal/mca/hwloc/hwloc201/hwloc/config/hwloc_check_attributes.m4) -m4_include(opal/mca/hwloc/hwloc201/hwloc/config/hwloc_check_visibility.m4) -m4_include(opal/mca/hwloc/hwloc201/hwloc/config/hwloc_check_vendor.m4) -m4_include(opal/mca/hwloc/hwloc201/hwloc/config/hwloc_components.m4) -m4_include(opal/mca/hwloc/hwloc201/hwloc/config/hwloc_internal.m4) -m4_include(opal/mca/hwloc/hwloc201/hwloc/config/netloc.m4) - -# MCA_hwloc_hwloc201_POST_CONFIG() +m4_include(opal/mca/hwloc/hwloc2/hwloc/config/hwloc.m4) +m4_include(opal/mca/hwloc/hwloc2/hwloc/config/hwloc_pkg.m4) +m4_include(opal/mca/hwloc/hwloc2/hwloc/config/hwloc_check_attributes.m4) +m4_include(opal/mca/hwloc/hwloc2/hwloc/config/hwloc_check_visibility.m4) +m4_include(opal/mca/hwloc/hwloc2/hwloc/config/hwloc_check_vendor.m4) +m4_include(opal/mca/hwloc/hwloc2/hwloc/config/hwloc_components.m4) +m4_include(opal/mca/hwloc/hwloc2/hwloc/config/hwloc_internal.m4) +m4_include(opal/mca/hwloc/hwloc2/hwloc/config/netloc.m4) + +# MCA_hwloc_hwloc2_POST_CONFIG() # --------------------------------- -AC_DEFUN([MCA_opal_hwloc_hwloc201_POST_CONFIG],[ - OPAL_VAR_SCOPE_PUSH([opal_hwloc_hwloc201_basedir]) +AC_DEFUN([MCA_opal_hwloc_hwloc2_POST_CONFIG],[ + OPAL_VAR_SCOPE_PUSH([opal_hwloc_hwloc2_basedir]) # If we won, then do all the rest of the setup - AS_IF([test "$1" = "1" && test "$opal_hwloc_hwloc201_support" = "yes"], + AS_IF([test "$1" = "1" && test "$opal_hwloc_hwloc2_support" = "yes"], [ # Set this variable so that the framework m4 knows what # file to include in opal/mca/hwloc/hwloc-internal.h - opal_hwloc_hwloc201_basedir=opal/mca/hwloc/hwloc201 - opal_hwloc_base_include="$opal_hwloc_hwloc201_basedir/hwloc201.h" + opal_hwloc_hwloc2_basedir=opal/mca/hwloc/hwloc2 + opal_hwloc_base_include="$opal_hwloc_hwloc2_basedir/hwloc2.h" # Add some stuff to CPPFLAGS so that the rest of the source # tree can be built - file=$opal_hwloc_hwloc201_basedir/hwloc + file=$opal_hwloc_hwloc2_basedir/hwloc CPPFLAGS="-I$OPAL_TOP_SRCDIR/$file/include $CPPFLAGS" AS_IF([test "$OPAL_TOP_BUILDDIR" != "$OPAL_TOP_SRCDIR"], [CPPFLAGS="-I$OPAL_TOP_BUILDDIR/$file/include $CPPFLAGS"]) @@ -66,12 +66,12 @@ AC_DEFUN([MCA_opal_hwloc_hwloc201_POST_CONFIG],[ ])dnl -# MCA_hwloc_hwloc201_CONFIG([action-if-found], [action-if-not-found]) +# MCA_hwloc_hwloc2_CONFIG([action-if-found], [action-if-not-found]) # -------------------------------------------------------------------- -AC_DEFUN([MCA_opal_hwloc_hwloc201_CONFIG],[ - AC_CONFIG_FILES([opal/mca/hwloc/hwloc201/Makefile]) +AC_DEFUN([MCA_opal_hwloc_hwloc2_CONFIG],[ + AC_CONFIG_FILES([opal/mca/hwloc/hwloc2/Makefile]) - 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_hwloc2_save_CPPFLAGS opal_hwloc_hwloc2_save_LDFLAGS opal_hwloc_hwloc2_save_LIBS opal_hwloc_hwloc2_save_cairo opal_hwloc_hwloc2_save_xml opal_hwloc_hwloc2_save_mode opal_hwloc_hwloc2_basedir opal_hwloc_hwloc2_file opal_hwloc_hwloc2_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 @@ -85,20 +85,20 @@ AC_DEFUN([MCA_opal_hwloc_hwloc201_CONFIG],[ 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 + opal_hwloc_hwloc2_basedir=opal/mca/hwloc/hwloc2 + opal_hwloc_hwloc2_support=no - opal_hwloc_hwloc201_save_CPPFLAGS=$CPPFLAGS - opal_hwloc_hwloc201_save_LDFLAGS=$LDFLAGS - opal_hwloc_hwloc201_save_LIBS=$LIBS + opal_hwloc_hwloc2_save_CPPFLAGS=$CPPFLAGS + opal_hwloc_hwloc2_save_LDFLAGS=$LDFLAGS + opal_hwloc_hwloc2_save_LIBS=$LIBS # save XML or graphical options - opal_hwloc_hwloc201_save_cairo=$enable_cairo - opal_hwloc_hwloc201_save_xml=$enable_xml - opal_hwloc_hwloc201_save_static=$enable_static - opal_hwloc_hwloc201_save_shared=$enable_shared - opal_hwloc_hwloc201_save_plugins=$enable_plugins - opal_hwloc_hwloc201_save_mode=$hwloc_mode + opal_hwloc_hwloc2_save_cairo=$enable_cairo + opal_hwloc_hwloc2_save_xml=$enable_xml + opal_hwloc_hwloc2_save_static=$enable_static + opal_hwloc_hwloc2_save_shared=$enable_shared + opal_hwloc_hwloc2_save_plugins=$enable_plugins + opal_hwloc_hwloc2_save_mode=$hwloc_mode # never enable hwloc's graphical option enable_cairo=no @@ -129,7 +129,7 @@ AC_DEFUN([MCA_opal_hwloc_hwloc201_CONFIG],[ # hwloc checks for compiler visibility, and its needs to do # this without "picky" flags. - opal_hwloc_hwloc201_save_cflags=$CFLAGS + opal_hwloc_hwloc2_save_cflags=$CFLAGS CFLAGS=$OPAL_CFLAGS_BEFORE_PICKY AS_IF([test -n "$opal_datatype_cuda_CPPFLAGS"], [CPPFLAGS="$CPPFLAGS $opal_datatype_cuda_CPPFLAGS"]) @@ -137,20 +137,20 @@ AC_DEFUN([MCA_opal_hwloc_hwloc201_CONFIG],[ # 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_])]) + [HWLOC_SET_SYMBOL_PREFIX([opal_hwloc2_])]) # Do the bulk of the hwloc core setup - HWLOC_SETUP_CORE([opal/mca/hwloc/hwloc201/hwloc], + HWLOC_SETUP_CORE([opal/mca/hwloc/hwloc2/hwloc], [AC_MSG_CHECKING([whether hwloc configure succeeded]) AC_MSG_RESULT([yes]) - HWLOC_VERSION="internal v`$srcdir/$opal_hwloc_hwloc201_basedir/hwloc/config/hwloc_get_version.sh $srcdir/$opal_hwloc_hwloc201_basedir/hwloc/VERSION`" + HWLOC_VERSION="internal v`$srcdir/$opal_hwloc_hwloc2_basedir/hwloc/config/hwloc_get_version.sh $srcdir/$opal_hwloc_hwloc2_basedir/hwloc/VERSION`" # Build flags for our Makefile.am - opal_hwloc_hwloc201_LDFLAGS='$(HWLOC_EMBEDDED_LDFLAGS)' - opal_hwloc_hwloc201_LIBS='$(OPAL_TOP_BUILDDIR)/'"$opal_hwloc_hwloc201_basedir"'/hwloc/hwloc/libhwloc_embedded.la $(HWLOC_EMBEDDED_LIBS)' - opal_hwloc_hwloc201_support=yes + opal_hwloc_hwloc2_LDFLAGS='$(HWLOC_EMBEDDED_LDFLAGS)' + opal_hwloc_hwloc2_LIBS='$(OPAL_TOP_BUILDDIR)/'"$opal_hwloc_hwloc2_basedir"'/hwloc/hwloc/libhwloc_embedded.la $(HWLOC_EMBEDDED_LIBS)' + opal_hwloc_hwloc2_support=yes - AC_DEFINE_UNQUOTED([HWLOC_HWLOC201_HWLOC_VERSION], + AC_DEFINE_UNQUOTED([HWLOC_HWLOC2_HWLOC_VERSION], ["$HWLOC_VERSION"], [Version of hwloc]) @@ -163,35 +163,35 @@ AC_DEFUN([MCA_opal_hwloc_hwloc201_CONFIG],[ ], [AC_MSG_CHECKING([whether hwloc configure succeeded]) AC_MSG_RESULT([no]) - opal_hwloc_hwloc201_support=no]) - CFLAGS=$opal_hwloc_hwloc201_save_cflags + opal_hwloc_hwloc2_support=no]) + CFLAGS=$opal_hwloc_hwloc2_save_cflags # Restore some env variables, if necessary - AS_IF([test -n "$opal_hwloc_hwloc201_save_cairo"], - [enable_cairo=$opal_hwloc_hwloc201_save_cairo]) - AS_IF([test -n "$opal_hwloc_hwloc201_save_xml"], - [enable_xml=$opal_hwloc_hwloc201_save_xml]) - AS_IF([test -n "$opal_hwloc_hwloc201_save_static"], - [enable_static=$opal_hwloc_hwloc201_save_static]) - AS_IF([test -n "$opal_hwloc_hwloc201_save_shared"], - [enable_shared=$opal_hwloc_hwloc201_save_shared]) - AS_IF([test -n "$opal_hwloc_hwloc201_save_plugins"], - [enable_plugins=$opal_hwloc_hwloc201_save_shared]) - - CPPFLAGS=$opal_hwloc_hwloc201_save_CPPFLAGS - LDFLAGS=$opal_hwloc_hwloc201_save_LDFLAGS - LIBS=$opal_hwloc_hwloc201_save_LIBS - - AC_SUBST([opal_hwloc_hwloc201_CFLAGS]) - AC_SUBST([opal_hwloc_hwloc201_CPPFLAGS]) - AC_SUBST([opal_hwloc_hwloc201_LDFLAGS]) - AC_SUBST([opal_hwloc_hwloc201_LIBS]) + AS_IF([test -n "$opal_hwloc_hwloc2_save_cairo"], + [enable_cairo=$opal_hwloc_hwloc2_save_cairo]) + AS_IF([test -n "$opal_hwloc_hwloc2_save_xml"], + [enable_xml=$opal_hwloc_hwloc2_save_xml]) + AS_IF([test -n "$opal_hwloc_hwloc2_save_static"], + [enable_static=$opal_hwloc_hwloc2_save_static]) + AS_IF([test -n "$opal_hwloc_hwloc2_save_shared"], + [enable_shared=$opal_hwloc_hwloc2_save_shared]) + AS_IF([test -n "$opal_hwloc_hwloc2_save_plugins"], + [enable_plugins=$opal_hwloc_hwloc2_save_shared]) + + CPPFLAGS=$opal_hwloc_hwloc2_save_CPPFLAGS + LDFLAGS=$opal_hwloc_hwloc2_save_LDFLAGS + LIBS=$opal_hwloc_hwloc2_save_LIBS + + AC_SUBST([opal_hwloc_hwloc2_CFLAGS]) + AC_SUBST([opal_hwloc_hwloc2_CPPFLAGS]) + AC_SUBST([opal_hwloc_hwloc2_LDFLAGS]) + AC_SUBST([opal_hwloc_hwloc2_LIBS]) # Finally, add some flags to the wrapper compiler so that our # headers can be found. - hwloc_hwloc201_WRAPPER_EXTRA_LDFLAGS="$HWLOC_EMBEDDED_LDFLAGS" - hwloc_hwloc201_WRAPPER_EXTRA_LIBS="$HWLOC_EMBEDDED_LIBS" - hwloc_hwloc201_WRAPPER_EXTRA_CPPFLAGS='-I${pkgincludedir}/'"$opal_hwloc_hwloc201_basedir/hwloc/include" + hwloc_hwloc2_WRAPPER_EXTRA_LDFLAGS="$HWLOC_EMBEDDED_LDFLAGS" + hwloc_hwloc2_WRAPPER_EXTRA_LIBS="$HWLOC_EMBEDDED_LIBS" + hwloc_hwloc2_WRAPPER_EXTRA_CPPFLAGS='-I${pkgincludedir}/'"$opal_hwloc_hwloc2_basedir/hwloc/include" # If we are not building the internal hwloc, then indicate that # this component should not be built. NOTE: we still did all the @@ -201,12 +201,12 @@ AC_DEFUN([MCA_opal_hwloc_hwloc201_CONFIG],[ # distclean" infrastructure to work properly). AS_IF([test "$opal_hwloc_external_support" = "yes"], [AC_MSG_NOTICE([using an external hwloc; disqualifying this component]) - opal_hwloc_hwloc201_support=no], + opal_hwloc_hwloc2_support=no], [AC_DEFINE([HAVE_DECL_HWLOC_OBJ_OSDEV_COPROC], [1]) AC_DEFINE([HAVE_HWLOC_TOPOLOGY_DUP], [1])]) # Done! - AS_IF([test "$opal_hwloc_hwloc201_support" = "yes"], + AS_IF([test "$opal_hwloc_hwloc2_support" = "yes"], [$1], [$2]) diff --git a/opal/mca/hwloc/hwloc2/hwloc b/opal/mca/hwloc/hwloc2/hwloc new file mode 160000 index 00000000000..f1a2e22aca8 --- /dev/null +++ b/opal/mca/hwloc/hwloc2/hwloc @@ -0,0 +1 @@ +Subproject commit f1a2e22aca839a41ea443d561bd2157fd3f301d0 diff --git a/opal/mca/hwloc/hwloc201/hwloc201.h b/opal/mca/hwloc/hwloc2/hwloc2.h similarity index 100% rename from opal/mca/hwloc/hwloc201/hwloc201.h rename to opal/mca/hwloc/hwloc2/hwloc2.h diff --git a/opal/mca/hwloc/hwloc201/hwloc201_component.c b/opal/mca/hwloc/hwloc2/hwloc2_component.c similarity index 83% rename from opal/mca/hwloc/hwloc201/hwloc201_component.c rename to opal/mca/hwloc/hwloc2/hwloc2_component.c index a8961af59a2..73456945073 100644 --- a/opal/mca/hwloc/hwloc201/hwloc201_component.c +++ b/opal/mca/hwloc/hwloc2/hwloc2_component.c @@ -1,6 +1,6 @@ /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ /* - * Copyright (c) 2011-2017 Cisco Systems, Inc. All rights reserved + * Copyright (c) 2011-2019 Cisco Systems, Inc. All rights reserved * Copyright (c) 2014-2017 Intel, Inc. All rights reserved. * Copyright (c) 2015-2016 Los Alamos National Security, LLC. All rights * reserved. @@ -24,20 +24,20 @@ #include "opal/constants.h" #include "opal/mca/hwloc/hwloc-internal.h" -#include "hwloc201.h" +#include "hwloc2.h" /* * Public string showing the sysinfo ompi_linux component version number */ -const char *opal_hwloc_hwloc201_component_version_string = - "OPAL hwloc201 hwloc MCA component version " OPAL_VERSION; +const char *opal_hwloc_hwloc2_component_version_string = + "OPAL hwloc2 hwloc MCA component version " OPAL_VERSION; /* * Instantiate the public struct with all of our public information * and pointers to our public functions in it */ -const opal_hwloc_component_t mca_hwloc_hwloc201_component = { +const opal_hwloc_component_t mca_hwloc_hwloc2_component = { /* First, the mca_component_t struct containing meta information about the component itself */ @@ -46,7 +46,7 @@ const opal_hwloc_component_t mca_hwloc_hwloc201_component = { OPAL_HWLOC_BASE_VERSION_2_0_0, /* Component name and version */ - .mca_component_name = "hwloc201", + .mca_component_name = "hwloc2", MCA_BASE_MAKE_VERSION(component, OPAL_MAJOR_VERSION, OPAL_MINOR_VERSION, OPAL_RELEASE_VERSION), }, diff --git a/opal/mca/hwloc/hwloc201/owner.txt b/opal/mca/hwloc/hwloc2/owner.txt similarity index 100% rename from opal/mca/hwloc/hwloc201/owner.txt rename to opal/mca/hwloc/hwloc2/owner.txt diff --git a/opal/mca/hwloc/hwloc201/README-ompi.txt b/opal/mca/hwloc/hwloc201/README-ompi.txt deleted file mode 100644 index 0b069d4f802..00000000000 --- a/opal/mca/hwloc/hwloc201/README-ompi.txt +++ /dev/null @@ -1 +0,0 @@ -Cherry-picked commits after 2.0.1: diff --git a/opal/mca/hwloc/hwloc201/hwloc/AUTHORS b/opal/mca/hwloc/hwloc201/hwloc/AUTHORS deleted file mode 100644 index 7187a723d8e..00000000000 --- a/opal/mca/hwloc/hwloc201/hwloc/AUTHORS +++ /dev/null @@ -1,44 +0,0 @@ -hwloc Authors -============= - -The following cumulative list contains the names of most individuals -who have committed code to the hwloc repository -(either directly or through a third party). - -Name Affiliation(s) ---------------------------- -------------------- -Grzegorz Andrejczuk Intel -Cédric Augonnet University of Bordeaux -Guillaume Beauchamp Inria -Ahmad Boissetri Binzagr Inria -Cyril Bordage Inria -Nicholas Buroker UWL -Christopher M. Cantalupo Intel -Jérôme Clet-Ortega University of Bordeaux -Ludovic Courtès Inria -Clément Foyer Inria -Nathalie Furmento CNRS -Bryon Gloden -Brice Goglin Inria -Gilles Gouaillardet RIST -Joshua Hursey UWL -Alexey Kardashevskiy IBM -Rob Latham ANL -Douglas MacFarland UWL -Marc Marí BSC -Jonathan L Peyton Intel -Piotr Luc Intel -Antoine Rougier intern from University of Bordeaux -Jeff Squyres Cisco -Samuel Thibault University of Bordeaux -Jean-Yves VET DDN -Benjamin Worpitz -Jeff Zhao Zhaoxin - -Affiliaion abbreviations: -------------------------- -ANL = Argonne National Lab -BSC = Barcelona Supercomputing Center -Cisco = Cisco Systems, Inc. -CNRS = Centre national de la recherche scientifique (France) -UWL = University of Wisconsin-La Crosse diff --git a/opal/mca/hwloc/hwloc201/hwloc/COPYING b/opal/mca/hwloc/hwloc201/hwloc/COPYING deleted file mode 100644 index e77516e1801..00000000000 --- a/opal/mca/hwloc/hwloc201/hwloc/COPYING +++ /dev/null @@ -1,39 +0,0 @@ -Copyright © 2004-2006 The Trustees of Indiana University and Indiana University Research and Technology Corporation. All rights reserved. -Copyright © 2004-2005 The University of Tennessee and The University of Tennessee Research Foundation. All rights reserved. -Copyright © 2004-2005 High Performance Computing Center Stuttgart, University of Stuttgart. All rights reserved. -Copyright © 2004-2005 The Regents of the University of California. All rights reserved. -Copyright © 2009 CNRS -Copyright © 2009-2016 Inria. All rights reserved. -Copyright © 2009-2015 Université Bordeaux -Copyright © 2009-2015 Cisco Systems, Inc. All rights reserved. -Copyright © 2009-2012 Oracle and/or its affiliates. All rights reserved. -Copyright © 2010 IBM -Copyright © 2010 Jirka Hladky -Copyright © 2012 Aleksej Saushev, The NetBSD Foundation -Copyright © 2012 Blue Brain Project, EPFL. All rights reserved. -Copyright © 2013-2014 University of Wisconsin-La Crosse. All rights reserved. -Copyright © 2015 Research Organization for Information Science and Technology (RIST). All rights reserved. -Copyright © 2015-2016 Intel, Inc. All rights reserved. -See COPYING in top-level directory. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/opal/mca/hwloc/hwloc201/hwloc/Makefile.am b/opal/mca/hwloc/hwloc201/hwloc/Makefile.am deleted file mode 100644 index 25fa1e59f35..00000000000 --- a/opal/mca/hwloc/hwloc201/hwloc/Makefile.am +++ /dev/null @@ -1,93 +0,0 @@ -# Copyright © 2009-2018 Inria. All rights reserved. -# Copyright © 2009 Université Bordeaux -# Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved. -# See COPYING in top-level directory. - -# Note that the -I directory must *exactly* match what was specified -# via AC_CONFIG_MACRO_DIR in configure.ac. -ACLOCAL_AMFLAGS = -I ./config - -# -# "make distcheck" requires that tarballs are able to be able to "make -# dist", so we have to include config/distscript.sh. -# -EXTRA_DIST = \ - README VERSION COPYING AUTHORS \ - config/hwloc_get_version.sh \ - config/distscript.sh - -SUBDIRS = include hwloc - -if HWLOC_BUILD_STANDALONE -if BUILD_NETLOC -SUBDIRS += netloc -endif -SUBDIRS += utils tests contrib/systemd contrib/misc -# We need doc/ if HWLOC_BUILD_DOXYGEN, or during make install if HWLOC_INSTALL_DOXYGEN. -# There's no INSTALL_SUBDIRS, so always enter doc/ and check HWLOC_BUILD/INSTALL_DOXYGEN there -SUBDIRS += doc -endif - -# Do not let automake automatically add the non-standalone dirs to the -# distribution tarball if we're building in embedded mode. -DIST_SUBDIRS = $(SUBDIRS) -if HWLOC_BUILD_STANDALONE -if !BUILD_NETLOC -DIST_SUBDIRS += netloc -endif -endif - -# Only install the pkg file if we're building in standalone mode (and not on Windows) -if HWLOC_BUILD_STANDALONE -hwlocpkgconfigdir = $(libdir)/pkgconfig -hwlocpkgconfig_DATA = hwloc.pc -if BUILD_NETLOC -# JMS Need to compare hwloc.pc and netloc.pc -- I think netloc.pc is -# missing some things. -# pkgconfig_DATA += netloc.pc Disabled until the netloc API is public -EXTRA_DIST += netloc.pc -if BUILD_NETLOCSCOTCH -hwlocpkgconfig_DATA += netlocscotch.pc -endif BUILD_NETLOCSCOTCH -endif BUILD_NETLOC -endif HWLOC_BUILD_STANDALONE - -# Only install the valgrind suppressions file if we're building in -# standalone mode -if HWLOC_BUILD_STANDALONE -dist_pkgdata_DATA = contrib/hwloc-valgrind.supp -endif - -# Only install entire visual studio subdirectory if we're building in -# standalone mode -if HWLOC_BUILD_STANDALONE -EXTRA_DIST += contrib/windows -endif - -if HWLOC_BUILD_STANDALONE -dist-hook: - sh "$(top_srcdir)/config/distscript.sh" "$(top_srcdir)" "$(distdir)" "$(HWLOC_VERSION)" -endif HWLOC_BUILD_STANDALONE - -if HWLOC_BUILD_STANDALONE -if HWLOC_HAVE_WINDOWS -# -# Winball specific rules -# -install-data-local: - sed -e 's/$$/'$$'\015'/ < $(srcdir)/README > $(DESTDIR)$(prefix)/README.txt - sed -e 's/$$/'$$'\015'/ < $(srcdir)/NEWS > $(DESTDIR)$(prefix)/NEWS.txt - sed -e 's/$$/'$$'\015'/ < $(srcdir)/COPYING > $(DESTDIR)$(prefix)/COPYING.txt -uninstall-local: - rm -f $(DESTDIR)$(prefix)/README.txt $(DESTDIR)$(prefix)/NEWS.txt $(DESTDIR)$(prefix)/COPYING.txt -endif HWLOC_HAVE_WINDOWS -endif HWLOC_BUILD_STANDALONE - -# -# Build the documenation and top-level README file -# -if HWLOC_BUILD_STANDALONE -.PHONY: doc readme -doc readme: - $(MAKE) -C doc -endif HWLOC_BUILD_STANDALONE diff --git a/opal/mca/hwloc/hwloc201/hwloc/NEWS b/opal/mca/hwloc/hwloc201/hwloc/NEWS deleted file mode 100644 index ff503d8aa9c..00000000000 --- a/opal/mca/hwloc/hwloc201/hwloc/NEWS +++ /dev/null @@ -1,1564 +0,0 @@ -Copyright © 2009 CNRS -Copyright © 2009-2018 Inria. All rights reserved. -Copyright © 2009-2013 Université Bordeaux -Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - -$COPYRIGHT$ - -Additional copyrights may follow - -$HEADER$ - -=========================================================================== - -This file contains the main features as well as overviews of specific -bug fixes (and other actions) for each version of hwloc since version -0.9 (as initially released as "libtopology", then re-branded to "hwloc" -in v0.9.1). - - -Version 2.0.1 (also included in 1.11.10 when relevant) -------------- -* Bump the library soname to 15:0:0 to avoid conflicts with hwloc 1.11.x - releases. The hwloc 2.0.0 soname was buggy (12:0:0), applications will - have to be recompiled. -* Serialize pciaccess discovery to fix concurrent topology loads in - multiple threads. -* Fix hwloc-dump-hwdata to only process SMBIOS information that correspond - to the KNL and KNM configuration. -* Add a heuristic for guessing KNL/KNM memory and cluster modes when - hwloc-dump-hwdata could not run as root earlier. -* Add --no-text lstopo option to remove text from some boxes in the - graphical output. Mostly useful for removing Group labels. -* Some minor fixes to memory binding. - - -Version 2.0.0 -------------- -*** The ABI of the library has changed. *** - For instance some hwloc_obj fields were reordered, added or removed, see below. - + HWLOC_API_VERSION and hwloc_get_api_version() now give 0x00020000. - + See "How do I handle ABI breaks and API upgrades ?" in the FAQ - and "Upgrading to hwloc 2.0 API" in the documentation. -* Major API changes - + Memory, I/O and Misc objects are now stored in dedicated children lists, - not in the usual children list that is now only used for CPU-side objects. - - hwloc_get_next_child() may still be used to iterate over these 4 lists - of children at once. - - hwloc_obj_type_is_normal(), _memory() and _io() may be used to check - the kind of a given object type. - + Topologies always have at least one NUMA object. On non-NUMA machines, - a single NUMA object is added to describe the entire machine memory. - The NUMA level cannot be ignored anymore. - + The NUMA level is special since NUMA nodes are not in the main hierarchy - of objects anymore. Its depth is a fake negative depth that should not be - compared with normal levels. - - If all memory objects are attached to parents at the same depth, - it may be retrieved with hwloc_get_memory_parents_depth(). - + The HWLOC_OBJ_CACHE type is replaced with 8 types HWLOC_OBJ_L[1-5]CACHE - and HWLOC_OBJ_L[1-3]ICACHE that remove the need to disambiguate levels - when looking for caches with _by_type() functions. - - New hwloc_obj_type_is_{,d,i}cache() functions may be used to check whether - a given type is a cache. - + Reworked ignoring/filtering API - - Replace hwloc_topology_ignore*() functions with hwloc_topology_set_type_filter() - and hwloc_topology_set_all_types_filter(). - . Contrary to hwloc_topology_ignore_{type,all}_keep_structure() which - removed individual objects, HWLOC_TYPE_FILTER_KEEP_STRUCTURE only removes - entire levels (so that topology do not become too asymmetric). - - Remove HWLOC_TOPOLOGY_FLAG_ICACHES in favor of hwloc_topology_set_icache_types_filter() - with HWLOC_TYPE_FILTER_KEEP_ALL. - - Remove HWLOC_TOPOLOGY_FLAG_IO_DEVICES, _IO_BRIDGES and _WHOLE_IO in favor of - hwloc_topology_set_io_types_filter() with HWLOC_TYPE_FILTER_KEEP_ALL or - HWLOC_TYPE_FILTER_KEEP_IMPORTANT. - + The distance API has been completely reworked. It is now described - in hwloc/distances.h. - + Return values - - Most functions in hwloc/bitmap.h now return an int that may be negative - in case of failure to realloc/extend the internal storage of a bitmap. - - hwloc_obj_add_info() also returns an int in case allocations fail. -* Minor API changes - + Object attributes - - obj->memory is removed. - . local_memory and page_types attributes are now in obj->attr->numanode - . total_memory moves obj->total_memory. - - Objects do not have allowed_cpuset and allowed_nodeset anymore. - They are only available for the entire topology using - hwloc_topology_get_allowed_cpuset() and hwloc_topology_get_allowed_nodeset(). - - Objects now have a "subtype" field that supersedes former "Type" and - "CoProcType" info attributes. - + Object and level depths are now signed ints. - + Object string printing and parsing - - hwloc_type_sscanf() deprecates the old hwloc_obj_type_sscanf(). - - hwloc_type_sscanf_as_depth() is added to convert a type name into - a level depth. - - hwloc_obj_cpuset_snprintf() is deprecated in favor of hwloc_bitmap_snprintf(). - + Misc objects - - Replace hwloc_topology_insert_misc_object_by_cpuset() with - hwloc_topology_insert_group_object() to precisely specify the location - of an additional hierarchy level in the topology. - - Misc objects have their own level and depth to iterate over all of them. - - Misc objects may now only be inserted as a leaf object with - hwloc_topology_insert_misc_object() which deprecates - hwloc_topology_insert_misc_object_by_parent(). - + hwloc_topology_restrict() doesn't remove objects that contain memory - by default anymore. - - The list of existing restrict flags was modified. - + The discovery support array now contains some NUMA specific bits. - + XML export functions take an additional flags argument, - for instance for exporting XMLs that are compatible with hwloc 1.x. - + Functions diff_load_xml*(), diff_export_xml*() and diff_destroy() in - hwloc/diff.h do not need a topology as first parameter anymore. - + hwloc_parse_cpumap_file () superseded by hwloc_linux_read_path_as_cpumask() - in hwloc/linux.h. - + HWLOC_MEMBIND_DEFAULT and HWLOC_MEMBIND_FIRSTTOUCH were clarified. -* New APIs and Features - + Add hwloc/shmem.h for sharing topologies between processes running on - the same machine (for reducing the memory footprint). - + Add the experimental netloc subproject. It is disabled by default - and can be enabled with --enable-netloc. - It currently brings command-line tools to gather and visualize the - topology of InfiniBand fabrics, and an API to convert such topologies - into Scotch architectures for process mapping. - See the documentation for details. -* Removed APIs and features - + Remove the online_cpuset from struct hwloc_obj. Offline PUs get unknown - topologies on Linux nowadays, and wrong topology on Solaris. Other OS - do not support them. And one cannot do much about them anyway. Just keep - them in complete_cpuset. - + Remove the now-unused "System" object type HWLOC_OBJ_SYSTEM, - defined to MACHINE for backward compatibility. - + The almost-unused "os_level" attribute has been removed from the - hwloc_obj structure. - + Remove the custom interface for assembling the topologies of different - nodes as well as the hwloc-assembler tools. - + hwloc_topology_set_fsroot() is removed, the environment variable - HWLOC_FSROOT may be used for the same remote testing/debugging purpose. - + Remove the deprecated hwloc_obj_snprintf(), hwloc_obj_type_of_string(), - hwloc_distribute[v](). - * Remove Myrinet Express interoperability (hwloc/myriexpress.h). - + Remove Kerrighed support from the Linux backend. - + Remove Tru64 (OSF/1) support. - - Remove HWLOC_MEMBIND_REPLICATE which wasn't available anywhere else. -* Backend improvements - + Linux - - OS devices do not have to be attached through PCI anymore, - for instance enabling the discovery of NVDIMM block devices. - - Remove the dependency on libnuma. - - Add a SectorSize attribute to block OS devices. - + Mac OS X - - Fix detection of cores and hyperthreads. - - Add CPUVendor, Model, ... attributes. - + Windows - - Add get_area_memlocation(). -* Tools - + lstopo and hwloc-info have a new --filter option matching the new filtering API. - + lstopo can be given --children-layout=plain to force a basic displaying - of memory and normal children together below their parent. - + hwloc-distances was removed and replaced with lstopo --distances. -* Misc - + Exports - - Exporting to synthetic now ignores I/O and Misc objects. - + PCI discovery - - Separate OS device discovery from PCI discovery. Only the latter is disabled - with --disable-pci at configure time. Both may be disabled with --disable-io. - - The `linuxpci' component is now renamed into `linuxio'. - - The old `libpci' component name from hwloc 1.6 is not supported anymore, - only the `pci' name from hwloc 1.7 is now recognized. - - The HWLOC_PCI___LOCALCPUS environment variables are superseded - with a single HWLOC_PCI_LOCALITY where bus ranges may be specified. - - Do not set PCI devices and bridges name automatically. Vendor and device - names are already in info attributes. - + Components and discovery - - Add HWLOC_SYNTHETIC environment variable to enforce a synthetic topology - as if hwloc_topology_set_synthetic() had been called. - - HWLOC_COMPONENTS doesn't support xml or synthetic component attributes - anymore, they should be passed in HWLOC_XMLFILE or HWLOC_SYNTHETIC instead. - - HWLOC_COMPONENTS takes precedence over other environment variables - for selecting components. - + hwloc now requires a C99 compliant compiler. - - -Version 1.11.9 --------------- -* Add support for Zhaoxin ZX-C and ZX-D processors in the x86 backend, - thanks to Jeff Zhao for the patch. -* Fix AMD Epyc 24-core L3 cache locality in the x86 backend. -* Don't crash in the x86 backend when the CPUID vendor string is unknown. -* Fix the missing pu discovery support bit on some OS. -* Fix the management of the lstopoStyle info attribute for custom colors. -* Add verbose warnings when failing to load hwloc v2.0+ XMLs. - - -Version 1.11.8 --------------- -* Multiple Solaris improvements, thanks to Maureen Chew for the help: - + Detect caches on Sparc. - + Properly detect allowed/disallowed PUs and NUMA nodes with processor sets. - + Add hwloc_get_last_cpu_location() support for the current thread. -* Add support for CUDA compute capability 7.0 and fix support for 6.[12]. -* Tools improvements - + Fix search for objects by physical index in command-line tools. - + Add missing "cpubind:get_thisthread_last_cpu_location" in the output - of hwloc-info --support. - + Add --pid and --name to specify target processes in hwloc-ps. - + Display thread names in lstopo and hwloc-ps on Linux. -* Doc improvements - + Add a FAQ entry about building on Windows. - + Install missing sub-manpage for hwloc_obj_add_info() and - hwloc_obj_get_info_by_name(). - - -Version 1.11.7 --------------- -* Fix hwloc-bind --membind for CPU-less NUMA nodes (again). - Thanks to Gilles Gouaillardet for reporting the issue. -* Fix a memory leak on IBM S/390 platforms running Linux. -* Fix a memory leak when forcing the x86 backend first on amd64/topoext - platforms running Linux. -* Command-line tools now support "hbm" instead "numanode" for filtering - only high-bandwidth memory nodes when selecting locations. - + hwloc-bind also support --hbm and --no-hbm for filtering only or - no HBM nodes. - Thanks to Nicolas Denoyelle for the suggestion. -* Add --children and --descendants to hwloc-info for listing object - children or object descendants of a specific type. -* Add --no-index, --index, --no-attrs, --attrs to disable/enable display - of index numbers or attributes in the graphical lstopo output. -* Try to gather hwloc-dump-hwdata output from all possible locations - in hwloc-gather-topology. -* Updates to the documentation of locations in hwloc(7) and - command-line tools manpages. - - -Version 1.11.6 --------------- -* Make the Linux discovery about twice faster, especially on the CPU side, - by trying to avoid sysfs file accesses as much as possible. -* Add support for AMD Family 17h processors (Zen) SMT cores in the Linux - and x86 backends. -* Add the HWLOC_TOPOLOGY_FLAG_THISSYSTEM_ALLOWED_RESOURCES flag (and the - HWLOC_THISSYSTEM_ALLOWED_RESOURCES environment variable) for reading the - set of allowed resources from the local operating system even if the - topology was loaded from XML or synthetic. -* Fix hwloc_bitmap_set/clr_range() for infinite ranges that do not - overlap currently defined ranges in the bitmap. -* Don't reset the lstopo zoom scale when moving the X11 window. -* lstopo now has --flags for manually setting topology flags. -* hwloc_get_depth_type() returns HWLOC_TYPE_DEPTH_UNKNOWN for Misc objects. - - -Version 1.11.5 --------------- -* Add support for Knights Mill Xeon Phi, thanks to Piotr Luc for the patch. -* Reenable distance gathering on Solaris, disabled by mistake since v1.0. - Thanks to TU Wien for the help. -* Fix hwloc_get_*obj*_inside_cpuset() functions to ignore objects with - empty CPU sets, for instance, CPU-less NUMA nodes such as KNL MCDRAM. - Thanks to Nicolas Denoyelle for the report. -* Fix XML import of multiple distance matrices. -* Add a FAQ entry about "hwloc is only a structural model, it ignores - performance models, memory bandwidth, etc.?" - - -Version 1.11.4 --------------- -* Add MemoryMode and ClusterMode attributes in the Machine object on KNL. - Add doc/examples/get-knl-modes.c for an example of retrieving them. - Thanks to Grzegorz Andrejczuk. -* Fix Linux build with -m32 with respect to libudev. - Thanks to Paul Hargrove for reporting the issue. -* Fix build with Visual Studio 2015, thanks to Eloi Gaudry for reporting - the issue and providing the patch. -* Don't forget to display OS device children in the graphical lstopo. -* Fix a memory leak on Solaris, thanks to Bryon Gloden for the patch. -* Properly handle realloc() failures, thanks to Bryon Gloden for reporting - the issue. -* Fix lstopo crash in ascii/fig/windows outputs when some objects have a - lstopoStyle info attribute. - - -Version 1.11.3 --------------- -* Bug fixes - + Fix a memory leak on Linux S/390 hosts with books. - + Fix /proc/mounts parsing on Linux by using mntent.h. - Thanks to Nathan Hjelm for reporting the issue. - + Fix a x86 infinite loop on VMware due to the x2APIC feature being - advertised without actually being fully supported. - Thanks to Jianjun Wen for reporting the problem and testing the patch. - + Fix the return value of hwloc_alloc() on mmap() failure. - Thanks to Hugo Brunie for reporting the issue. - + Fix the return value of command-line tools in some error cases. - + Do not break individual thread bindings during x86 backend discovery in a - multithreaded process. Thanks to Farouk Mansouri for the report. - + Fix hwloc-bind --membind for CPU-less NUMA nodes. - + Fix some corner cases in the XML export/import of application userdata. -* API Improvements - + Add HWLOC_MEMBIND_BYNODESET flag so that membind() functions accept - either cpusets or nodesets. - + Add hwloc_get_area_memlocation() to check where pages are actually - allocated. Only implemented on Linux for now. - - There's no _nodeset() variant, but the new flag HWLOC_MEMBIND_BYNODESET - is supported. - + Make hwloc_obj_type_sscanf() parse back everything that may be outputted - by hwloc_obj_type_snprintf(). -* Detection Improvements - + Allow the x86 backend to add missing cache levels, so that it completes - what the Solaris backend lacks. - Thanks to Ryan Zezeski for reporting the issue. - + Do not filter-out FibreChannel PCI adapters by default anymore. - Thanks to Matt Muggeridge for the report. - + Add support for CUDA compute capability 6.x. -* Tools - + Add --support to hwloc-info to list supported features, just like with - hwloc_topology_get_support(). - - Also add --objects and --topology to explicitly switch between the - default modes. - + Add --tid to let hwloc-bind operate on individual threads on Linux. - + Add --nodeset to let hwloc-bind report memory binding as NUMA node sets. - + hwloc-annotate and lstopo don't drop application userdata from XMLs anymore. - - Add --cu to hwloc-annotate to drop these application userdata. - + Make the hwloc-dump-hwdata dump directory configurable through configure - options such as --runstatedir or --localstatedir. -* Misc Improvements - + Add systemd service template contrib/systemd/hwloc-dump-hwdata.service - for launching hwloc-dump-hwdata at boot on Linux. - Thanks to Grzegorz Andrejczuk. - + Add HWLOC_PLUGINS_BLACKLIST environment variable to prevent some plugins - from being loaded. Thanks to Alexandre Denis for the suggestion. - + Small improvements for various Windows build systems, - thanks to Jonathan L Peyton and Marco Atzeri. - - -Version 1.11.2 --------------- -* Improve support for Intel Knights Landing Xeon Phi on Linux: - + Group local NUMA nodes of normal memory (DDR) and high-bandwidth memory - (MCDRAM) together through "Cluster" groups so that the local MCDRAM is - easy to find. - - See "How do I find the local MCDRAM NUMA node on Intel Knights - Landing Xeon Phi?" in the documentation. - - For uniformity across all KNL configurations, always have a NUMA node - object even if the host is UMA. - + Fix the detection of the memory-side cache: - - Add the hwloc-dump-hwdata superuser utility to dump SMBIOS information - into /var/run/hwloc/ as root during boot, and load this dumped - information from the hwloc library at runtime. - - See "Why do I need hwloc-dump-hwdata for caches on Intel Knights - Landing Xeon Phi?" in the documentation. - Thanks to Grzegorz Andrejczuk for the patches and for the help. -* The x86 and linux backends may now be combined for discovering CPUs - through x86 CPUID and memory from the Linux kernel. - This is useful for working around buggy CPU information reported by Linux - (for instance the AMD Bulldozer/Piledriver bug below). - Combination is enabled by passing HWLOC_COMPONENTS=x86 in the environment. -* Fix L3 cache sharing on AMD Opteron 63xx (Piledriver) and 62xx (Bulldozer) - in the x86 backend. Thanks to many users who helped. -* Fix the overzealous L3 cache sharing fix added to the x86 backend in 1.11.1 - for AMD Opteron 61xx (Magny-Cours) processors. -* The x86 backend may now add the info attribute Inclusive=0 or 1 to caches - it discovers, or to caches discovered by other backends earlier. - Thanks to Guillaume Beauchamp for the patch. -* Fix the management on alloc_membind() allocation failures on AIX, HP-UX - and OSF/Tru64. -* Fix spurious failures to load with ENOMEM on AIX in case of Misc objects - below PUs. -* lstopo improvements in X11 and Windows graphical mode: - + Add + - f 1 shortcuts to manually zoom-in, zoom-out, reset the scale, - or fit the entire window. - + Display all keyboard shortcuts in the console. -* Debug messages may be disabled at runtime by passing HWLOC_DEBUG_VERBOSE=0 - in the environment when --enable-debug was passed to configure. -* Add a FAQ entry "What are these Group objects in my topology?". - - -Version 1.11.1 --------------- -* Detection fixes - + Hardwire the topology of Fujitsu K-computer, FX10, FX100 servers to - workaround buggy Linux kernels. - Thanks to Takahiro Kawashima and Gilles Gouaillardet. - + Fix L3 cache information on AMD Opteron 61xx Magny-Cours processors - in the x86 backend. Thanks to Guillaume Beauchamp for the patch. - + Detect block devices directly attached to PCI without a controller, - for instance NVMe disks. Thanks to Barry M. Tannenbaum. - + Add the PCISlot attribute to all PCI functions instead of only the - first one. -* Miscellaneous internal fixes - + Ignore PCI bridges that could fail assertions by reporting buggy - secondary-subordinate bus numbers - Thanks to George Bosilca for reporting the issue. - + Fix an overzealous assertion when inserting an intermediate Group object - while Groups are totally ignored. - + Fix a memory leak on Linux on AMD processors with dual-core compute units. - Thanks to Bob Benner. - + Fix a memory leak on failure to load a xml diff file. - + Fix some segfaults when inputting an invalid synthetic description. - + Fix a segfault when plugins fail to find core symbols. - Thanks to Guy Streeter. -* Many fixes and improvements in the Windows backend: - + Fix the discovery of more than 32 processors and multiple processor - groups. Thanks to Barry M. Tannenbaum for the help. - + Add thread binding set support in case of multiple process groups. - + Add thread binding get support. - + Add get_last_cpu_location() support for the current thread. - + Disable the unsupported process binding in case of multiple processor - groups. - + Fix/update the Visual Studio support under contrib/windows. - Thanks to Eloi Gaudry for the help. -* Tools fixes - + Fix a segfault when displaying logical indexes in the graphical lstopo. - Thanks to Guillaume Mercier for reporting the issue. - + Fix lstopo linking with X11 libraries, for instance on Mac OS X. - Thanks to Scott Atchley and Pierre Ramet for reporting the issue. - + hwloc-annotate, hwloc-diff and hwloc-patch do not drop unavailable - resources from the output anymore and those may be annotated as well. - + Command-line tools may now import XML from the standard input with -i -.xml - + Add missing documentation for the hwloc-info --no-icaches option. - - -Version 1.11.0 --------------- -* API - + Socket objects are renamed into Package to align with the terminology - used by processor vendors. The old HWLOC_OBJ_SOCKET type and "Socket" - name are still supported for backward compatibility. - + HWLOC_OBJ_NODE is replaced with HWLOC_OBJ_NUMANODE for clarification. - HWLOC_OBJ_NODE is still supported for backward compatibility. - "Node" and "NUMANode" strings are supported as in earlier releases. -* Detection improvements - + Add support for Intel Knights Landing Xeon Phi. - Thanks to Grzegorz Andrejczuk and Lukasz Anaczkowski. - + Add Vendor, Model, Revision, SerialNumber, Type and LinuxDeviceID - info attributes to Block OS devices on Linux. Thanks to Vineet Pedaballe - for the help. - - Add --disable-libudev to avoid dependency on the libudev library. - + Add "MemoryModule" Misc objects with information about DIMMs, on Linux - when privileged and when I/O is enabled. - Thanks to Vineet Pedaballe for the help. - + Add a PCISlot attribute to PCI devices on Linux when supported to - identify the physical PCI slot where the board is plugged. - + Add CPUStepping info attribute on x86 processors, - thanks to Thomas Röhl for the suggestion. - + Ignore the device-tree on non-Power architectures to avoid buggy - detection on ARM. Thanks to Orion Poplawski for reporting the issue. - + Work-around buggy Xeon E5v3 BIOS reporting invalid PCI-NUMA affinity - for the PCI links on the second processor. - + Add support for CUDA compute capability 5.x, thanks Benjamin Worpitz. - + Many fixes to the x86 backend - - Add L1i and fix L2/L3 type on old AMD processors without topoext support. - - Fix Intel CPU family and model numbers when basic family isn't 6 or 15. - - Fix package IDs on recent AMD processors. - - Fix misc issues due to incomplete APIC IDs on x2APIC processors. - - Avoid buggy discovery on old SGI Altix UVs with non-unique APIC IDs. - + Gather total machine memory on NetBSD. -* Tools - + lstopo - - Collapse identical PCI devices unless --no-collapse is given. - This avoids gigantic outputs when a PCI device contains dozens of - identical virtual functions. - - The ASCII art output is now called "ascii", for instance in - "lstopo -.ascii". - The former "txt" extension is retained for backward compatibility. - - Automatically scales graphical box width to the inner text in Cairo, - ASCII and Windows outputs. - - Add --rect to lstopo to force rectangular layout even for NUMA nodes. - - Add --restrict-flags to configure the behavior of --restrict. - - Objects may have a "Type" info attribute to specify a better type name - and display it in lstopo. - - Really export all verbose information to the given output file. - + hwloc-annotate - - May now operate on all types of objects, including I/O. - - May now insert Misc objects in the topology. - - Do not drop instruction caches and I/O devices from the output anymore. - + Fix lstopo path in hwloc-gather-topology after install. -* Misc - + Fix hwloc/cudart.h for machines with multiple PCI domains, - thanks to Imre Kerr for reporting the problem. - + Fix PCI Bridge-specific depth attribute. - + Fix hwloc_bitmap_intersect() for two infinite bitmaps. - + Fix some corner cases in the building of levels on large NUMA machines - with non-uniform NUMA groups and I/Os. - + Improve the performance of object insertion by cpuset for large - topologies. - + Prefix verbose XML import errors with the source name. - + Improve pkg-config checks and error messages. - + Fix excluding after a component with an argument in the HWLOC_COMPONENTS - environment variable. -* Documentation - + Fix the recommended way in documentation and examples to allocate memory - on some node, it should use HWLOC_MEMBIND_BIND. - Thanks to Nicolas Bouzat for reporting the issue. - + Add a "Miscellaneous objects" section in the documentation. - + Add a FAQ entry "What happens to my topology if I disable symmetric - multithreading, hyper-threading, etc. ?" to the documentation. - - -Version 1.10.1 --------------- -* Actually remove disallowed NUMA nodes from nodesets when the whole-system - flag isn't enabled. -* Fix the gathering of PCI domains. Thanks to James Custer for reporting - the issue and providing a patch. -* Fix the merging of identical parent and child in presence of Misc objects. - Thanks to Dave Love for reporting the issue. -* Fix some misordering of children when merging with ignore_keep_structure() - in partially allowed topologies. -* Fix an overzealous assertion in the debug code when running on a single-PU - host with I/O. Thanks to Thomas Van Doren for reporting the issue. -* Don't forget to setup NUMA node object nodesets in x86 backend (for BSDs) - and OSF/Tru64 backend. -* Fix cpuid-x86 build error with gcc -O3 on x86-32. Thanks to Thomas Van Doren - for reporting the issue. -* Fix support for future very large caches in the x86 backend. -* Fix vendor/device names for SR-IOV PCI devices on Linux. -* Fix an unlikely crash in case of buggy hierarchical distance matrix. -* Fix PU os_index on some AIX releases. Thanks to Hendryk Bockelmann and - Erik Schnetter for helping debugging. -* Fix hwloc_bitmap_isincluded() in case of infinite sets. -* Change hwloc-ls.desktop into a lstopo.desktop and only install it if - lstopo is built with Cairo/X11 support. It cannot work with a non-graphical - lstopo or hwloc-ls. -* Add support for the renaming of Socket into Package in future releases. -* Add support for the replacement of HWLOC_OBJ_NODE with HWLOC_OBJ_NUMANODE - in future releases. -* Clarify the documentation of distance matrices in hwloc.h and in the manpage - of the hwloc-distances. Thanks to Dave Love for the suggestion. -* Improve some error messages by displaying more information about the - hwloc library in use. -* Document how to deal with the ABI break when upgrading to the upcoming 2.0 - See "How do I handle ABI breaks and API upgrades ?" in the FAQ. - - -Version 1.10.0 --------------- -* API - + Add hwloc_topology_export_synthetic() to export a topology to a - synthetic string without using lstopo. See the Synthetic topologies - section in the documentation. - + Add hwloc_topology_set/get_userdata() to let the application save - a private pointer in the topology whenever it needs a way to find - its own object corresponding to a topology. - + Add hwloc_get_numanode_obj_by_os_index() and document that this function - as well as hwloc_get_pu_obj_by_os_index() are good at converting - nodesets and cpusets into objects. - + hwloc_distrib() does not ignore any objects anymore when there are - too many of them. They get merged with others instead. - Thanks to Tim Creech for reporting the issue. -* Tools - + hwloc-bind --get now executes the command after displaying - the binding instead of ignoring the command entirely. - Thanks to John Donners for the suggestion. - + Clarify that memory sizes shown in lstopo are local by default - unless specified (total memory added in the root object). -* Synthetic topologies - + Synthetic topology descriptions may now specify attributes such as - memory sizes and OS indexes. See the Synthetic topologies section - in the documentation. - + lstopo now exports in this fully-detailed format by default. - The new option --export-synthetic-flags may be used to revert - back the old format. -* Documentation - + Add the doc/examples/ subdirectory with several real-life examples, - including the already existing hwloc-hello.C for basics. - Thanks to Rob Aulwes for the suggestion. - + Improve the documentation of CPU and memory binding in the API. - + Add a FAQ entry about operating system errors, especially on AMD - platforms with buggy cache information. - + Add a FAQ entry about loading many topologies in a single program. -* Misc - + Work around buggy Linux kernels reporting 2 sockets instead - 1 socket with 2 NUMA nodes for each Xeon E5 v3 (Haswell) processor. - + pciutils/libpci support is now removed since libpciaccess works - well and there's also a Linux-specific PCI backend. For the record, - pciutils was GPL and therefore disabled by default since v1.6.2. - + Add --disable-cpuid configure flag to work around buggy processor - simulators reporting invalid CPUID information. - Thanks for Andrew Friedley for reporting the issue. - + Fix a racy use of libltdl when manipulating multiple topologies in - different threads. - Thanks to Andra Hugo for reporting the issue and testing patches. - + Fix some build failures in private/misc.h. - Thanks to Pavan Balaji and Ralph Castain for the reports. - + Fix failures to detect X11/Xutil.h on some Solaris platforms. - Thanks to Siegmar Gross for reporting the failure. - + The plugin ABI has changed, this release will not load plugins - built against previous hwloc releases. - - -Version 1.9.1 -------------- -* Fix a crash when the PCI locality is invalid. Attach to the root object - instead. Thanks to Nicolas Denoyelle for reporting the issue. -* Fix -f in lstopo manpage. Thanks to Jirka Hladky for reporting the issue. -* Fix hwloc_obj_type_sscanf() and others when strncasecmp() is not properly - available. Thanks to Nick Papior Andersen for reporting the problem. -* Mark Linux file descriptors as close-on-exec to avoid leaks on exec. -* Fix some minor memory leaks. - - -Version 1.9.0 -------------- -* API - + Add hwloc_obj_type_sscanf() to extend hwloc_obj_type_of_string() with - type-specific attributes such as Cache/Group depth and Cache type. - hwloc_obj_type_of_string() is moved to hwloc/deprecated.h. - + Add hwloc_linux_get_tid_last_cpu_location() for retrieving the - last CPU where a Linux thread given by TID ran. - + Add hwloc_distrib() to extend the old hwloc_distribute[v]() functions. - hwloc_distribute[v]() is moved to hwloc/deprecated.h. - + Don't mix total and local memory when displaying verbose object attributes - with hwloc_obj_attr_snprintf() or in lstopo. -* Backends - + Add CPUVendor, CPUModelNumber and CPUFamilyNumber info attributes for - x86, ia64 and Xeon Phi sockets on Linux, to extend the x86-specific - support added in v1.8.1. Requested by Ralph Castain. - + Add many CPU- and Platform-related info attributes on ARM and POWER - platforms, in the Machine and Socket objects. - + Add CUDA info attributes describing the number of multiprocessors and - cores and the size of the global, shared and L2 cache memories in CUDA - OS devices. - + Add OpenCL info attributes describing the number of compute units and - the global memory size in OpenCL OS devices. - + The synthetic backend now accepts extended types such as L2Cache, L1i or - Group3. lstopo also exports synthetic strings using these extended types. -* Tools - + lstopo - - Do not overwrite output files by default anymore. - Pass -f or --force to enforce it. - - Display OpenCL, CUDA and Xeon Phi numbers of cores and memory sizes - in the graphical output. - - Fix export to stdout when specifying a Cairo-based output type - with --of. - + hwloc-ps - - Add -e or --get-last-cpu-location to report where processes/threads - run instead of where they are bound. - - Report locations as likely-more-useful objects such as Cores or Sockets - instead of Caches when possible. - + hwloc-bind - - Fix failure on Windows when not using --pid. - - Add -e as a synonym to --get-last-cpu-location. - + hwloc-distrib - - Add --reverse to distribute using last objects first and singlify - into last bits first. Thanks to Jirka Hladky for the suggestion. - + hwloc-info - - Report unified caches when looking for data or instruction cache - ancestor objects. -* Misc - + Add experimental Visual Studio support under contrib/windows. - Thanks to Eloi Gaudry for his help and for providing the first draft. - + Fix some overzealous assertions and warnings about the ordering of - objects on a level with respect to cpusets. The ordering is only - guaranteed for complete cpusets (based on the first bit in sets). - + Fix some memory leaks when importing xml diffs and when exporting a - "too complex" entry. - - -Version 1.8.1 -------------- -* Fix the cpuid code on Windows 64bits so that the x86 backend gets - enabled as expected and can populate CPU information. - Thanks to Robin Scher for reporting the problem. -* Add CPUVendor/CPUModelNumber/CPUFamilyNumber attributes when running - on x86 architecture. Thanks to Ralph Castain for the suggestion. -* Work around buggy BIOS reporting duplicate NUMA nodes on Linux. - Thanks to Jeff Becker for reporting the problem and testing the patch. -* Add a name to the lstopo graphical window. Thanks to Michael Prokop - for reporting the issue. - - -Version 1.8.0 -------------- -* New components - + Add the "linuxpci" component that always works on Linux even when - libpciaccess and libpci aren't available (and even with a modified - file-system root). By default the old "pci" component runs first - because "linuxpci" lacks device names (obj->name is always NULL). -* API - + Add the topology difference API in hwloc/diff.h for manipulating - many similar topologies. - + Add hwloc_topology_dup() for duplicating an entire topology. - + hwloc.h and hwloc/helper.h have been reorganized to clarify the - documentation sections. The actual inline code has moved out of hwloc.h - into the new hwloc/inlines.h. - + Deprecated functions are now in hwloc/deprecated.h, and not in the - official documentation anymore. -* Tools - + Add hwloc-diff and hwloc-patch tools together with the new diff API. - + Add hwloc-compress-dir to (de)compress an entire directory of XML files - using hwloc-diff and hwloc-patch. - + Object colors in the graphical output of lstopo may be changed by adding - a "lstopoStyle" info attribute. See CUSTOM COLORS in the lstopo(1) manpage - for details. Thanks to Jirka Hladky for discussing the idea. - + hwloc-gather-topology may now gather I/O-related files on Linux when - --io is given. Only the linuxpci component supports discovering I/O - objects from these extended tarballs. - + hwloc-annotate now supports --ri to remove/replace info attributes with - a given name. - + hwloc-info supports "root" and "all" special locations for dumping - information about the root object. - + lstopo now supports --append-legend to append custom lines of text - to the legend in the graphical output. Thanks to Jirka Hladky for - discussing the idea. - + hwloc-calc and friends have a more robust parsing of locations given - on the command-line and they report useful error messages about it. - + Add --whole-system to hwloc-bind, hwloc-calc, hwloc-distances and - hwloc-distrib, and add --restrict to hwloc-bind for uniformity among - tools. -* Misc - + Calling hwloc_topology_load() or hwloc_topology_set_*() on an already - loaded topology now returns an error (deprecated since release 1.6.1). - + Fix the initialisation of cpusets and nodesets in Group objects added - when inserting PCI hostbridges. - + Never merge Group objects that were added explicitly by the user with - hwloc_custom_insert_group_object_by_parent(). - + Add a sanity check during dynamic plugin loading to prevent some - crashes when hwloc is dynamically loaded by another plugin mechanisms. - + Add --with-hwloc-plugins-path to specify the install/load directories - of plugins. - + Add the MICSerialNumber info attribute to the root object when running - hwloc inside a Xeon Phi to match the same attribute in the MIC OS device - when running in the host. - - -Version 1.7.2 -------------- -* Do not create invalid block OS devices on very old Linux kernel such - as RHEL4 2.6.9. -* Fix PCI subvendor/device IDs. -* Fix the management of Misc objects inserted by parent. - Thanks to Jirka Hladky for reporting the problem. -* Add a PortState into attribute to OpenFabrics OS devices. -* Add a MICSerialNumber info attribute to Xeon PHI/MIC OS devices. -* Improve verbose error messages when failing to load from XML. - - -Version 1.7.1 -------------- -* Fix a failed assertion in the distance grouping code when loading a XML - file that already contains some groups. - Thanks to Laercio Lima Pilla for reporting the problem. -* Remove unexpected Group objects when loading XML topologies with I/O - objects and NUMA distances. - Thanks to Elena Elkina for reporting the problem and testing patches. -* Fix PCI link speed discovery when using libpciaccess. -* Fix invalid libpciaccess virtual function device/vendor IDs when using - SR-IOV PCI devices on Linux. -* Fix GL component build with old NVCtrl releases. - Thanks to Jirka Hladky for reporting the problem. -* Fix embedding breakage caused by libltdl. - Thanks to Pavan Balaji for reporting the problem. -* Always use the system-wide libltdl instead of shipping one inside hwloc. -* Document issues when enabling plugins while embedding hwloc in another - project, in the documentation section Embedding hwloc in Other Software. -* Add a FAQ entry "How to get useful topology information on NetBSD?" - in the documentation. -* Somes fixes in the renaming code for embedding. -* Miscellaneous minor build fixes. - - -Version 1.7.0 -------------- -* New operating system backends - + Add BlueGene/Q compute node kernel (CNK) support. See the FAQ in the - documentation for details. Thanks to Jeff Hammond, Christopher Samuel - and Erik Schnetter for their help. - + Add NetBSD support, thanks to Aleksej Saushev. -* New I/O device discovery - + Add co-processor OS devices such as "mic0" for Intel Xeon Phi (MIC) - on Linux. Thanks to Jerome Vienne for helping. - + Add co-processor OS devices such as "cuda0" for NVIDIA CUDA-capable GPUs. - + Add co-processor OS devices such as "opencl0d0" for OpenCL GPU devices - on the AMD OpenCL implementation. - + Add GPU OS devices such as ":0.0" for NVIDIA X11 displays. - + Add GPU OS devices such as "nvml0" for NVIDIA GPUs. - Thanks to Marwan Abdellah and Stefan Eilemann for helping. - These new OS devices have some string info attributes such as CoProcType, - GPUModel, etc. to better identify them. - See the I/O Devices and Attributes documentation sections for details. -* New components - + Add the "opencl", "cuda", "nvml" and "gl" components for I/O device - discovery. - + "nvml" also improves the discovery of NVIDIA GPU PCIe link speed. - All of these new components may be built as plugins. They may also be - disabled entirely by passing --disable-opencl/cuda/nvml/gl to configure. - See the I/O Devices, Components and Plugins, and FAQ documentation - sections for details. -* API - + Add hwloc_topology_get_flags(). - + Add hwloc/plugins.h for building external plugins. - See the Adding new discovery components and plugins section. -* Interoperability - + Add hwloc/opencl.h, hwloc/nvml.h, hwloc/gl.h and hwloc/intel-mic.h - to retrieve the locality of OS devices that correspond to AMD OpenCL - GPU devices or indexes, to NVML devices or indexes, to NVIDIA X11 - displays, or to Intel Xeon Phi (MIC) device indexes. - + Add new helpers in hwloc/cuda.h and hwloc/cudart.h to convert - between CUDA devices or indexes and hwloc OS devices. - + Add hwloc_ibv_get_device_osdev() and clarify the requirements - of the OpenFabrics Verbs helpers in hwloc/openfabrics-verbs.h. -* Tools - + hwloc-info is not only a synonym of lstopo -s anymore, it also - dumps information about objects given on the command-line. -* Documentation - + Add a section "Existing components and plugins". - + Add a list of common OS devices in section "Software devices". - + Add a new FAQ entry "Why is lstopo slow?" about lstopo slowness - issues because of GPUs. - + Clarify the documentation of inline helpers in hwloc/myriexpress.h - and hwloc/openfabrics-verbs.h. -* Misc - + Improve cache detection on AIX. - + The HWLOC_COMPONENTS variable now excludes the components whose - names are prefixed with '-'. - + lstopo --ignore PU now works when displaying the topology in - graphical and textual mode (not when exporting to XML). - + Make sure I/O options always appear in lstopo usage, not only when - using pciutils/libpci. - + Remove some unneeded Linux specific includes from some interoperability - headers. - + Fix some inconsistencies in hwloc-distrib and hwloc-assembler-remote - manpages. Thanks to Guy Streeter for the report. - + Fix a memory leak on AIX when getting memory binding. - + Fix many small memory leaks on Linux. - + The `libpci' component is now called `pci' but the old name is still - accepted in the HWLOC_COMPONENTS variable for backward compatibility. - - -Version 1.6.2 -------------- -* Use libpciaccess instead of pciutils/libpci by default for I/O discovery. - pciutils/libpci is only used if --enable-libpci is given to configure - because its GPL license may taint hwloc. See the Installation section - in the documentation for details. -* Fix get_cpubind on Solaris when bound to a single PU with - processor_bind(). Thanks to Eugene Loh for reporting the problem - and providing a patch. - - -Version 1.6.1 -------------- -* Fix some crash or buggy detection in the x86 backend when Linux - cgroups/cpusets restrict the available CPUs. -* Fix the pkg-config output with --libs --static. - Thanks to Erik Schnetter for reporting one of the problems. -* Fix the output of hwloc-calc -H --hierarchical when using logical - indexes in the output. -* Calling hwloc_topology_load() multiple times on the same topology - is officially deprecated. hwloc will warn in such cases. -* Add some documentation about existing plugins/components, package - dependencies, and I/O devices specification on the command-line. - - -Version 1.6.0 -------------- -* Major changes - + Reorganize the backend infrastructure to support dynamic selection - of components and dynamic loading of plugins. For details, see the - new documentation section Components and plugins. - - The HWLOC_COMPONENTS variable lets one replace the default discovery - components. - - Dynamic loading of plugins may be enabled with --enable-plugins - (except on AIX and Windows). It will build libxml2 and libpci - support as separated modules. This helps reducing the dependencies - of the core hwloc library when distributed as a binary package. -* Backends - + Add CPUModel detection on Darwin and x86/FreeBSD. - Thanks to Robin Scher for providing ways to implement this. - + The x86 backend now adds CPUModel info attributes to socket objects - created by other backends that do not natively support this attribute. - + Fix detection on FreeBSD in case of cpuset restriction. Thanks to - Sebastian Kuzminsky for reporting the problem. -* XML - + Add hwloc_topology_set_userdata_import/export_callback(), - hwloc_export_obj_userdata() and _userdata_base64() to let - applications specify how to save/restore the custom data they placed - in the userdata private pointer field of hwloc objects. -* Tools - + Add hwloc-annotate program to add string info attributes to XML - topologies. - + Add --pid-cmd to hwloc-ps to append the output of a command to each - PID line. May be used for showing Open MPI process ranks, see the - hwloc-ps(1) manpage for details. - + hwloc-bind now exits with an error if binding fails; the executable - is not launched unless binding suceeeded or --force was given. - + Add --quiet to hwloc-calc and hwloc-bind to hide non-fatal error - messages. - + Fix command-line pid support in windows tools. - + All programs accept --verbose as a synonym to -v. -* Misc - + Fix some DIR descriptor leaks on Linux. - + Fix I/O device lists when some were filtered out after a XML import. - + Fix the removal of I/O objects when importing a I/O-enabled XML topology - without any I/O topology flag. - + When merging objects with HWLOC_IGNORE_TYPE_KEEP_STRUCTURE or - lstopo --merge, compare object types before deciding which one of two - identical object to remove (e.g. keep sockets in favor of caches). - + Add some GUID- and LID-related info attributes to OpenFabrics - OS devices. - + Only add CPUType socket attributes on Solaris/Sparc. Other cases - don't report reliable information (Solaris/x86), and a replacement - is available as the Architecture string info in the Machine object. - + Add missing Backend string info on Solaris in most cases. - + Document object attributes and string infos in a new Attributes - section in the documentation. - + Add a section about Synthetic topologies in the documentation. - - -Version 1.5.2 (some of these changes are in v1.6.2 but not in v1.6) -------------- -* Use libpciaccess instead of pciutils/libpci by default for I/O discovery. - pciutils/libpci is only used if --enable-libpci is given to configure - because its GPL license may taint hwloc. See the Installation section - in the documentation for details. -* Fix get_cpubind on Solaris when bound to a single PU with - processor_bind(). Thanks to Eugene Loh for reporting the problem - and providing a patch. -* Fix some DIR descriptor leaks on Linux. -* Fix I/O device lists when some were filtered out after a XML import. -* Add missing Backend string info on Solaris in most cases. -* Fix the removal of I/O objects when importing a I/O-enabled XML topology - without any I/O topology flag. -* Fix the output of hwloc-calc -H --hierarchical when using logical - indexes in the output. -* Fix the pkg-config output with --libs --static. - Thanks to Erik Schnetter for reporting one of the problems. - - -Version 1.5.1 -------------- -* Fix block OS device detection on Linux kernel 3.3 and later. - Thanks to Guy Streeter for reporting the problem and testing the fix. -* Fix the cpuid code in the x86 backend (for FreeBSD). Thanks to - Sebastian Kuzminsky for reporting problems and testing patches. -* Fix 64bit detection on FreeBSD. -* Fix some corner cases in the management of the thissystem flag with - respect to topology flags and environment variables. -* Fix some corner cases in command-line parsing checks in hwloc-distrib - and hwloc-distances. -* Make sure we do not miss some block OS devices on old Linux kernels - when a single PCI device has multiple IDE hosts/devices behind it. -* Do not disable I/O devices or instruction caches in hwloc-assembler output. - - -Version 1.5.0 -------------- -* Backends - + Do not limit the number of processors to 1024 on Solaris anymore. - + Gather total machine memory on FreeBSD. Thanks to Cyril Roelandt. - + XML topology files do not depend on the locale anymore. Float numbers - such as NUMA distances or PCI link speeds now always use a dot as a - decimal separator. - + Add instruction caches detection on Linux, AIX, Windows and Darwin. - + Add get_last_cpu_location() support for the current thread on AIX. - + Support binding on AIX when threads or processes were bound with - bindprocessor(). Thanks to Hendryk Bockelmann for reporting the issue - and testing patches, and to Farid Parpia for explaining the binding - interfaces. - + Improve AMD topology detection in the x86 backend (for FreeBSD) using - the topoext feature. -* API - + Increase HWLOC_API_VERSION to 0x00010500 so that API changes may be - detected at build-time. - + Add a cache type attribute describind Data, Instruction and Unified - caches. Caches with different types but same depth (for instance L1d - and L1i) are placed on different levels. - + Add hwloc_get_cache_type_depth() to retrieve the hwloc level depth of - of the given cache depth and type, for instance L1i or L2. - It helps disambiguating the case where hwloc_get_type_depth() returns - HWLOC_TYPE_DEPTH_MULTIPLE. - + Instruction caches are ignored unless HWLOC_TOPOLOGY_FLAG_ICACHES is - passed to hwloc_topology_set_flags() before load. - + Add hwloc_ibv_get_device_osdev_by_name() OpenFabrics helper in - openfabrics-verbs.h to find the hwloc OS device object corresponding to - an OpenFabrics device. -* Tools - + Add lstopo-no-graphics, a lstopo built without graphical support to - avoid dependencies on external libraries such as Cairo and X11. When - supported, graphical outputs are only available in the original lstopo - program. - - Packagers splitting lstopo and lstopo-no-graphics into different - packages are advised to use the alternatives system so that lstopo - points to the best available binary. - + Instruction caches are enabled in lstopo by default. Use --no-icaches - to disable them. - + Add -t/--threads to show threads in hwloc-ps. -* Removal of obsolete components - + Remove the old cpuset interface (hwloc/cpuset.h) which is deprecated and - superseded by the bitmap API (hwloc/bitmap.h) since v1.1. - hwloc_cpuset and nodeset types are still defined, but all hwloc_cpuset_* - compatibility wrappers are now gone. - + Remove Linux libnuma conversion helpers for the deprecated and - broken nodemask_t interface. - + Remove support for "Proc" type name, it was superseded by "PU" in v1.0. - + Remove hwloc-mask symlinks, it was replaced by hwloc-calc in v1.0. -* Misc - + Fix PCIe 3.0 link speed computation. - + Non-printable characters are dropped from strings during XML export. - + Fix importing of escaped characters with the minimalistic XML backend. - + Assert hwloc_is_thissystem() in several I/O related helpers. - + Fix some memory leaks in the x86 backend for FreeBSD. - + Minor fixes to ease native builds on Windows. - + Limit the number of retries when operating on all threads within a - process on Linux if the list of threads is heavily getting modified. - - -Version 1.4.3 -------------- -* This release is only meant to fix the pciutils license issue when upgrading - to hwloc v1.5 or later is not possible. It contains several other minor - fixes but ignores many of them that are only in v1.5 or later. -* Use libpciaccess instead of pciutils/libpci by default for I/O discovery. - pciutils/libpci is only used if --enable-libpci is given to configure - because its GPL license may taint hwloc. See the Installation section - in the documentation for details. -* Fix PCIe 3.0 link speed computation. -* Fix importing of escaped characters with the minimalistic XML backend. -* Fix a memory leak in the x86 backend. - - -Version 1.4.2 -------------- -* Fix build on Solaris 9 and earlier when fabsf() is not a compiler - built-in. Thanks to Igor Galić for reporting the problem. -* Fix support for more than 32 processors on Windows. Thanks to Hartmut - Kaiser for reporting the problem. -* Fix process-wide binding and cpulocation routines on Linux when some - threads disappear in the meantime. Thanks to Vlad Roubtsov for reporting - the issue. -* Make installed scripts executable. Thanks to Jirka Hladky for reporting - the problem. -* Fix libtool revision management when building for Windows. This fix was - also released as hwloc v1.4.1.1 Windows builds. Thanks to Hartmut Kaiser - for reporting the problem. -* Fix the __hwloc_inline keyword in public headers when compiling with a - C++ compiler. -* Add Port info attribute to network OS devices inside OpenFabrics PCI - devices so as to identify which interface corresponds to which port. -* Document requirements for interoperability helpers: I/O devices discovery - is required for some of them; the topology must match the current host - for most of them. - - -Version 1.4.1 -------------- -* This release contains all changes from v1.3.2. -* Fix hwloc_alloc_membind, thanks Karl Napf for reporting the issue. -* Fix memory leaks in some get_membind() functions. -* Fix helpers converting from Linux libnuma to hwloc (hwloc/linux-libnuma.h) - in case of out-of-order NUMA node ids. -* Fix some overzealous assertions in the distance grouping code. -* Workaround BIOS reporting empty I/O locality in CUDA and OpenFabrics - helpers on Linux. Thanks to Albert Solernou for reporting the problem. -* Install a valgrind suppressions file hwloc-valgrind.supp (see the FAQ). -* Fix memory binding documentation. Thanks to Karl Napf for reporting the - issues. - - -Version 1.4.0 (does not contain all v1.3.2 changes) -------------- -* Major features - + Add "custom" interface and "assembler" tools to build multi-node - topology. See the Multi-node Topologies section in the documentation - for details. -* Interface improvements - + Add symmetric_subtree object attribute to ease assumptions when consulting - regular symmetric topologies. - + Add a CPUModel and CPUType info attribute to Socket objects on Linux - and Solaris. - + Add hwloc_get_obj_index_inside_cpuset() to retrieve the "logical" index - of an object within a subtree of the topology. - + Add more NVIDIA CUDA helpers in cuda.h and cudart.h to find hwloc objects - corresponding to CUDA devices. -* Discovery improvements - + Add a group object above partial distance matrices to make sure - the matrices are available in the final topology, except when this - new object would contradict the existing hierarchy. - + Grouping by distances now also works when loading from XML. - + Fix some corner cases in object insertion, for instance when dealing - with NUMA nodes without any CPU. -* Backends - + Implement hwloc_get_area_membind() on Linux. - + Honor I/O topology flags when importing from XML. - + Further improve XML-related error checking and reporting. - + Hide synthetic topology error messages unless HWLOC_SYNTHETIC_VERBOSE=1. -* Tools - + Add synthetic exporting of symmetric topologies to lstopo. - + lstopo --horiz and --vert can now be applied to some specific object types. - + lstopo -v -p now displays distance matrices with physical indexes. - + Add hwloc-distances utility to list distances. -* Documentation - + Fix and/or document the behavior of most inline functions in hwloc/helper.h - when the topology contains some I/O or Misc objects. - + Backend documentation enhancements. -* Bug fixes - + Fix missing last bit in hwloc_linux_get_thread_cpubind(). - Thanks to Carolina Gómez-Tostón Gutiérrez for reporting the issue. - + Fix FreeBSD build without cpuid support. - + Fix several Windows build issues. - + Fix inline keyword definition in public headers. - + Fix dependencies in the embedded library. - + Improve visibility support detection. Thanks to Dave Love for providing - the patch. - + Remove references to internal symbols in the tools. - - -Version 1.3.3 -------------- -* This release is only meant to fix the pciutils license issue when upgrading - to hwloc v1.4 or later is not possible. It contains several other minor - fixes but ignores many of them that are only in v1.4 or later. -* Use libpciaccess instead of pciutils/libpci by default for I/O discovery. - pciutils/libpci is only used if --enable-libpci is given to configure - because its GPL license may taint hwloc. See the Installation section - in the documentation for details. - - -Version 1.3.2 -------------- -* Fix missing last bit in hwloc_linux_get_thread_cpubind(). - Thanks to Carolina Gómez-Tostón Gutiérrez for reporting the issue. -* Fix build with -mcmodel=medium. Thanks to Devendar Bureddy for reporting - the issue. -* Fix build with Solaris Studio 12 compiler when XML is disabled. - Thanks to Paul H. Hargrove for reporting the problem. -* Fix installation with old GNU sed, for instance on Red Hat 8. - Thanks to Paul H. Hargrove for reporting the problem. -* Fix PCI locality when Linux cgroups restrict the available CPUs. -* Fix floating point issue when grouping by distance on mips64 architecture. - Thanks to Paul H. Hargrove for reporting the problem. -* Fix conversion from/to Linux libnuma when some NUMA nodes have no memory. -* Fix support for gccfss compilers with broken ffs() support. Thanks to - Paul H. Hargrove for reporting the problem and providing a patch. -* Fix FreeBSD build without cpuid support. -* Fix several Windows build issues. -* Fix inline keyword definition in public headers. -* Fix dependencies in the embedded library. -* Detect when a compiler such as xlc may not report compile errors - properly, causing some configure checks to be wrong. Thanks to - Paul H. Hargrove for reporting the problem and providing a patch. -* Improve visibility support detection. Thanks to Dave Love for providing - the patch. -* Remove references to internal symbols in the tools. -* Fix installation on systems with limited command-line size. - Thanks to Paul H. Hargrove for reporting the problem. -* Further improve XML-related error checking and reporting. - - -Version 1.3.1 -------------- -* Fix pciutils detection with pkg-config when not installed in standard - directories. -* Fix visibility options detection with the Solaris Studio compiler. - Thanks to Igor Galić and Terry Dontje for reporting the problems. -* Fix support for old Linux sched.h headers such as those found - on Red Hat 8. Thanks to Paul H. Hargrove for reporting the problems. -* Fix inline and attribute support for Solaris compilers. Thanks to - Dave Love for reporting the problems. -* Print a short summary at the end of the configure output. Thanks to - Stefan Eilemann for the suggestion. -* Add --disable-libnuma configure option to disable libnuma-based - memory binding support on Linux. Thanks to Rayson Ho for the - suggestion. -* Make hwloc's configure script properly obey $PKG_CONFIG. Thanks to - Nathan Phillip Brink for raising the issue. -* Silence some harmless pciutils warnings, thanks to Paul H. Hargrove - for reporting the problem. -* Fix the documentation with respect to hwloc_pid_t and hwloc_thread_t - being either pid_t and pthread_t on Unix, or HANDLE on Windows. - - -Version 1.3.0 -------------- -* Major features - + Add I/O devices and bridges to the topology using the pciutils - library. Only enabled after setting the relevant flag with - hwloc_topology_set_flags() before hwloc_topology_load(). See the - I/O Devices section in the documentation for details. -* Discovery improvements - + Add associativity to the cache attributes. - + Add support for s390/z11 "books" on Linux. - + Add the HWLOC_GROUPING_ACCURACY environment variable to relax - distance-based grouping constraints. See the Environment Variables - section in the documentation for details about grouping behavior - and configuration. - + Allow user-given distance matrices to remove or replace those - discovered by the OS backend. -* XML improvements - + XML is now always supported: a minimalistic custom import/export - code is used when libxml2 is not available. It is only guaranteed - to read XML files generated by hwloc. - + hwloc_topology_export_xml() and export_xmlbuffer() now return an - integer. - + Add hwloc_free_xmlbuffer() to free the buffer allocated by - hwloc_topology_export_xmlbuffer(). - + Hide XML topology error messages unless HWLOC_XML_VERBOSE=1. -* Minor API updates - + Add hwloc_obj_add_info to customize object info attributes. -* Tools - + lstopo now displays I/O devices by default. Several options are - added to configure the I/O discovery. - + hwloc-calc and hwloc-bind now accept I/O devices as input. - + Add --restrict option to hwloc-calc and hwloc-distribute. - + Add --sep option to change the output field separator in hwloc-calc. - + Add --whole-system option to hwloc-ps. - - -Version 1.2.2 -------------- -* Fix build on AIX 5.2, thanks Utpal Kumar Ray for the report. -* Fix XML import of very large page sizes or counts on 32bits platform, - thanks to Karsten Hopp for the RedHat ticket. -* Fix crash when administrator limitations such as Linux cgroup require - to restrict distance matrices. Thanks to Ake Sandgren for reporting the - problem. -* Fix the removal of objects such as AMD Magny-Cours dual-node sockets - in case of administrator restrictions. -* Improve error reporting and messages in case of wrong synthetic topology - description. -* Several other minor internal fixes and documentation improvements. - - -Version 1.2.1 -------------- -* Improve support of AMD Bulldozer "Compute-Unit" modules by detecting - logical processors with different core IDs on Linux. -* Fix hwloc-ps crash when listing processes from another Linux cpuset. - Thanks to Carl Smith for reporting the problem. -* Fix build on AIX and Solaris. Thanks to Carl Smith and Andreas Kupries - for reporting the problems. -* Fix cache size detection on Darwin. Thanks to Erkcan Özcan for reporting - the problem. -* Make configure fail if --enable-xml or --enable-cairo is given and - proper support cannot be found. Thanks to Andreas Kupries for reporting - the XML problem. -* Fix spurious L1 cache detection on AIX. Thanks to Hendryk Bockelmann - for reporting the problem. -* Fix hwloc_get_last_cpu_location(THREAD) on Linux. Thanks to Gabriele - Fatigati for reporting the problem. -* Fix object distance detection on Solaris. -* Add pthread_self weak symbol to ease static linking. -* Minor documentation fixes. - - -Version 1.2.0 -------------- -* Major features - + Expose latency matrices in the API as an array of distance structures - within objects. Add several helpers to find distances. - + Add hwloc_topology_set_distance_matrix() and environment variables - to provide a matrix of distances between a given set of objects. - + Add hwloc_get_last_cpu_location() and hwloc_get_proc_last_cpu_location() - to retrieve the processors where a process or thread recently ran. - - Add the corresponding --get-last-cpu-location option to hwloc-bind. - + Add hwloc_topology_restrict() to restrict an existing topology to a - given cpuset. - - Add the corresponding --restrict option to lstopo. -* Minor API updates - + Add hwloc_bitmap_list_sscanf/snprintf/asprintf to convert between bitmaps - and strings such as 4-5,7-9,12,15- - + hwloc_bitmap_set/clr_range() now support infinite ranges. - + Clarify the difference between inserting Misc objects by cpuset or by - parent. - + hwloc_insert_misc_object_by_cpuset() now returns NULL in case of error. -* Discovery improvements - + x86 backend (for freebsd): add x2APIC support - + Support standard device-tree phandle, to get better support on e.g. ARM - systems providing it. - + Detect cache size on AIX. Thanks Christopher and IBM. - + Improve grouping to support asymmetric topologies. -* Tools - + Command-line tools now support "all" and "root" special locations - consisting in the entire topology, as well as type names with depth - attributes such as L2 or Group4. - + hwloc-calc improvements: - - Add --number-of/-N option to report the number of objects of a given - type or depth. - - -I is now equivalent to --intersect for listing the indexes of - objects of a given type or depth that intersects the input. - - Add -H to report the output as a hierarchical combination of types - and depths. - + Add --thissystem to lstopo. - + Add lstopo-win, a console-less lstopo variant on Windows. -* Miscellaneous - + Remove C99 usage from code base. - + Rename hwloc-gather-topology.sh into hwloc-gather-topology - + Fix AMD cache discovery on freebsd when there is no L3 cache, thanks - Andriy Gapon for the fix. - - -Version 1.1.2 -------------- -* Fix a segfault in the distance-based grouping code when some objects - are not placed in any group. Thanks to Bernd Kallies for reporting - the problem and providing a patch. -* Fix the command-line parsing of hwloc-bind --mempolicy interleave. - Thanks to Guy Streeter for reporting the problem. -* Stop truncating the output in hwloc_obj_attr_snprintf() and in the - corresponding lstopo output. Thanks to Guy Streeter for reporting the - problem. -* Fix object levels ordering in synthetic topologies. -* Fix potential incoherency between device tree and kernel information, - when SMT is disabled on Power machines. -* Fix and document the behavior of hwloc_topology_set_synthetic() in case - of invalid argument. Thanks to Guy Streeter for reporting the problem. -* Add some verbose error message reporting when it looks like the OS - gives erroneous information. -* Do not include unistd.h and stdint.h in public headers on Windows. -* Move config.h files into their own subdirectories to avoid name - conflicts when AC_CONFIG_HEADERS adds -I's for them. -* Remove the use of declaring variables inside "for" loops. -* Some other minor fixes. -* Many minor documentation fixes. - - -Version 1.1.1 -------------- -* Add hwloc_get_api_version() which returns the version of hwloc used - at runtime. Thanks to Guy Streeter for the suggestion. -* Fix the number of hugepages reported for NUMA nodes on Linux. -* Fix hwloc_bitmap_to_ulong() right after allocating the bitmap. - Thanks to Bernd Kallies for reporting the problem. -* Fix hwloc_bitmap_from_ith_ulong() to properly zero the first ulong. - Thanks to Guy Streeter for reporting the problem. -* Fix hwloc_get_membind_nodeset() on Linux. - Thanks to Bernd Kallies for reporting the problem and providing a patch. -* Fix some file descriptor leaks in the Linux discovery. -* Fix the minimum width of NUMA nodes, caches and the legend in the graphical - lstopo output. Thanks to Jirka Hladky for reporting the problem. -* Various fixes to bitmap conversion from/to taskset-strings. -* Fix and document snprintf functions behavior when the buffer size is too - small or zero. Thanks to Guy Streeter for reporting the problem. -* Fix configure to avoid spurious enabling of the cpuid backend. - Thanks to Tim Anderson for reporting the problem. -* Cleanup error management in hwloc-gather-topology.sh. - Thanks to Jirka Hladky for reporting the problem and providing a patch. -* Add a manpage and usage for hwloc-gather-topology.sh on Linux. - Thanks to Jirka Hladky for providing a patch. -* Memory binding documentation enhancements. - - -Version 1.1.0 -------------- - -* API - + Increase HWLOC_API_VERSION to 0x00010100 so that API changes may be - detected at build-time. - + Add a memory binding interface. - + The cpuset API (hwloc/cpuset.h) is now deprecated. It is replaced by - the bitmap API (hwloc/bitmap.h) which offers the same features with more - generic names since it applies to CPU sets, node sets and more. - Backward compatibility with the cpuset API and ABI is still provided but - it will be removed in a future release. - Old types (hwloc_cpuset_t, ...) are still available as a way to clarify - what kind of hwloc_bitmap_t each API function manipulates. - Upgrading to the new API only requires to replace hwloc_cpuset_ function - calls with the corresponding hwloc_bitmap_ calls, with the following - renaming exceptions: - - hwloc_cpuset_cpu -> hwloc_bitmap_only - - hwloc_cpuset_all_but_cpu -> hwloc_bitmap_allbut - - hwloc_cpuset_from_string -> hwloc_bitmap_sscanf - + Add an `infos' array in each object to store couples of info names and - values. It enables generic storage of things like the old dmi board infos - that were previously stored in machine specific attributes. - + Add linesize cache attribute. -* Features - + Bitmaps (and thus CPU sets and node sets) are dynamically (re-)allocated, - the maximal number of CPUs (HWLOC_NBMAXCPUS) has been removed. - + Improve the distance-based grouping code to better support irregular - distance matrices. - + Add support for device-tree to get cache information (useful on Power - architectures). -* Helpers - + Add NVIDIA CUDA helpers in cuda.h and cudart.h to ease interoperability - with CUDA Runtime and Driver APIs. - + Add Myrinet Express helper in myriexpress.h to ease interoperability. -* Tools - + lstopo now displays physical/OS indexes by default in graphical mode - (use -l to switch back to logical indexes). The textual output still uses - logical by default (use -p to switch to physical indexes). - + lstopo prefixes logical indexes with `L#' and physical indexes with `P#'. - Physical indexes are also printed as `P#N' instead of `phys=N' within - object attributes (in parentheses). - + Add a legend at the bottom of the lstopo graphical output, use --no-legend - to remove it. - + Add hwloc-ps to list process' bindings. - + Add --membind and --mempolicy options to hwloc-bind. - + Improve tools command-line options by adding a generic --input option - (and more) which replaces the old --xml, --synthetic and --fsys-root. - + Cleanup lstopo output configuration by adding --output-format. - + Add --intersect in hwloc-calc, and replace --objects with --largest. - + Add the ability to work on standard input in hwloc-calc. - + Add --from, --to and --at in hwloc-distrib. - + Add taskset-specific functions and command-line tools options to - manipulate CPU set strings in the format of the taskset program. - + Install hwloc-gather-topology.sh on Linux. - - -Version 1.0.3 -------------- - -* Fix support for Linux cpuset when emulated by a cgroup mount point. -* Remove unneeded runtime dependency on libibverbs.so in the library and - all utils programs. -* Fix hwloc_cpuset_to_linux_libnuma_ulongs in case of non-linear OS-indexes - for NUMA nodes. -* lstopo now displays physical/OS indexes by default in graphical mode - (use -l to switch back to logical indexes). The textual output still uses - logical by default (use -p to switch to physical indexes). - - -Version 1.0.2 -------------- - -* Public headers can now be included directly from C++ programs. -* Solaris fix for non-contiguous cpu numbers. Thanks to Rolf vandeVaart for - reporting the issue. -* Darwin 10.4 fix. Thanks to Olivier Cessenat for reporting the issue. -* Revert 1.0.1 patch that ignored sockets with unknown ID values since it - only slightly helped POWER7 machines with old Linux kernels while it - prevents recent kernels from getting the complete POWER7 topology. -* Fix hwloc_get_common_ancestor_obj(). -* Remove arch-specific bits in public headers. -* Some fixes in the lstopo graphical output. -* Various man page clarifications and minor updates. - - -Version 1.0.1 -------------- - -* Various Solaris fixes. Thanks to Yannick Martin for reporting the issue. -* Fix "non-native" builds on x86 platforms (e.g., when building 32 - bit executables with compilers that natively build 64 bit). -* Ignore sockets with unknown ID values (which fixes issues on POWER7 - machines). Thanks to Greg Bauer for reporting the issue. -* Various man page clarifications and minor updates. -* Fixed memory leaks in hwloc_setup_group_from_min_distance_clique(). -* Fix cache type filtering on MS Windows 7. Thanks to Αλέξανδρος - Παπαδογιαννάκ for reporting the issue. -* Fixed warnings when compiling with -DNDEBUG. - - -Version 1.0.0 -------------- - -* The ABI of the library has changed. -* Backend updates - + Add FreeBSD support. - + Add x86 cpuid based backend. - + Add Linux cgroup support to the Linux cpuset code. - + Support binding of entire multithreaded process on Linux. - + Fix and enable Group support in Windows. - + Cleanup XML export/import. -* Objects - + HWLOC_OBJ_PROC is renamed into HWLOC_OBJ_PU for "Processing Unit", - its stringified type name is now "PU". - + Use new HWLOC_OBJ_GROUP objects instead of MISC when grouping - objects according to NUMA distances or arbitrary OS aggregation. - + Rework memory attributes. - + Add different cpusets in each object to specify processors that - are offline, unavailable, ... - + Cleanup the storage of object names and DMI infos. -* Features - + Add support for looking up specific PID topology information. - + Add hwloc_topology_export_xml() to export the topology in a XML file. - + Add hwloc_topology_get_support() to retrieve the supported features - for the current topology context. - + Support non-SYSTEM object as the root of the tree, use MACHINE in - most common cases. - + Add hwloc_get_*cpubind() routines to retrieve the current binding - of processes and threads. -* API - + Add HWLOC_API_VERSION to help detect the currently used API version. - + Add missing ending "e" to *compare* functions. - + Add several routines to emulate PLPA functions. - + Rename and rework the cpuset and/or/xor/not/clear operators to output - their result in a dedicated argument instead of modifying one input. - + Deprecate hwloc_obj_snprintf() in favor of hwloc_obj_type/attr_snprintf(). - + Clarify the use of parent and ancestor in the API, do not use father. - + Replace hwloc_get_system_obj() with hwloc_get_root_obj(). - + Return -1 instead of HWLOC_OBJ_TYPE_MAX in the API since the latter - isn't public. - + Relax constraints in hwloc_obj_type_of_string(). - + Improve displaying of memory sizes. - + Add 0x prefix to cpuset strings. -* Tools - + lstopo now displays logical indexes by default, use --physical to - revert back to OS/physical indexes. - + Add colors in the lstopo graphical outputs to distinguish between online, - offline, reserved, ... objects. - + Extend lstopo to show cpusets, filter objects by type, ... - + Renamed hwloc-mask into hwloc-calc which supports many new options. -* Documentation - + Add a hwloc(7) manpage containing general information. - + Add documentation about how to switch from PLPA to hwloc. - + Cleanup the distributed documentation files. -* Miscellaneous - + Many compilers warning fixes. - + Cleanup the ABI by using the visibility attribute. - + Add project embedding support. - - -Version 0.9.4 (unreleased) --------------------------- - -* Fix reseting colors to normal in lstopo -.txt output. -* Fix Linux pthread_t binding error report. - - -Version 0.9.3 -------------- - -* Fix autogen.sh to work with Autoconf 2.63. -* Fix various crashes in particular conditions: - - xml files with root attributes - - offline CPUs - - partial sysfs support - - unparseable /proc/cpuinfo - - ignoring NUMA level while Misc level have been generated -* Tweak documentation a bit -* Do not require the pthread library for binding the current thread on Linux -* Do not erroneously consider the sched_setaffinity prototype is the old version - when there is actually none. -* Fix _syscall3 compilation on archs for which we do not have the - sched_setaffinity system call number. -* Fix AIX binding. -* Fix libraries dependencies: now only lstopo depends on libtermcap, fix - binutils-gold link -* Have make check always build and run hwloc-hello.c -* Do not limit size of a cpuset. - - -Version 0.9.2 -------------- - -* Trivial documentation changes. - - -Version 0.9.1 -------------- - -* Re-branded to "hwloc" and moved to the Open MPI project, relicensed under the - BSD license. -* The prefix of all functions and tools is now hwloc, and some public - functions were also renamed for real. -* Group NUMA nodes into Misc objects according to their physical distance - that may be reported by the OS/BIOS. - May be ignored by setting HWLOC_IGNORE_DISTANCES=1 in the environment. -* Ignore offline CPUs on Solaris. -* Improved binding support on AIX. -* Add HP-UX support. -* CPU sets are now allocated/freed dynamically. -* Add command line options to tune the lstopo graphical output, add - semi-graphical textual output -* Extend topobind to support multiple cpusets or objects on the command - line as topomask does. -* Add an Infiniband-specific helper hwloc/openfabrics-verbs.h to retrieve - the physical location of IB devices. - - -Version 0.9 (libtopology) -------------------------- - -* First release. diff --git a/opal/mca/hwloc/hwloc201/hwloc/README b/opal/mca/hwloc/hwloc201/hwloc/README deleted file mode 100644 index 5567b4d14ed..00000000000 --- a/opal/mca/hwloc/hwloc201/hwloc/README +++ /dev/null @@ -1,85 +0,0 @@ -Introduction - -The Hardware Locality (hwloc) software project aims at easing the process of -discovering hardware resources in parallel architectures. It offers -command-line tools and a C API for consulting these resources, their locality, -attributes, and interconnection. hwloc primarily aims at helping -high-performance computing (HPC) applications, but is also applicable to any -project seeking to exploit code and/or data locality on modern computing -platforms. - -hwloc is actually made of two subprojects distributed together: - - * The original hwloc project for describing the internals of computing nodes. - It is described in details starting at section Hardware Locality (hwloc) - Introduction. - * The network-oriented companion called netloc (Network Locality), described - in details starting with section Network Locality (netloc). - -See also the Related pages tab above for links to other sections. - -Netloc may be disabled, but the original hwloc cannot. Both hwloc and netloc -APIs are documented after these sections. - -Installation - -hwloc (http://www.open-mpi.org/projects/hwloc/) is available under the BSD -license. It is hosted as a sub-project of the overall Open MPI project (http:// -www.open-mpi.org/). Note that hwloc does not require any functionality from -Open MPI -- it is a wholly separate (and much smaller!) project and code base. -It just happens to be hosted as part of the overall Open MPI project. - -Basic Installation - -Installation is the fairly common GNU-based process: - -shell$ ./configure --prefix=... -shell$ make -shell$ make install - -hwloc- and netloc-specific configure options and requirements are documented in -sections hwloc Installation and Netloc Installation respectively. - -Also note that if you install supplemental libraries in non-standard locations, -hwloc's configure script may not be able to find them without some help. You -may need to specify additional CPPFLAGS, LDFLAGS, or PKG_CONFIG_PATH values on -the configure command line. - -For example, if libpciaccess was installed into /opt/pciaccess, hwloc's -configure script may not find it be default. Try adding PKG_CONFIG_PATH to the -./configure command line, like this: - -./configure PKG_CONFIG_PATH=/opt/pciaccess/lib/pkgconfig ... - -Running the "lstopo" tool is a good way to check as a graphical output whether -hwloc properly detected the architecture of your node. Netloc command-line -tools can be used to display the network topology interconnecting your nodes. - -Installing from a Git clone - -Additionally, the code can be directly cloned from Git: - -shell$ git clone https://github.com/open-mpi/hwloc.git -shell$ cd hwloc -shell$ ./autogen.sh - -Note that GNU Autoconf >=2.63, Automake >=1.11 and Libtool >=2.2.6 are required -when building from a Git clone. - -Nightly development snapshots are available on the web site, they can be -configured and built without any need for Git or GNU Autotools. - -Questions and Bugs - -Bugs should be reported in the tracker (https://github.com/open-mpi/hwloc/ -issues). Opening a new issue automatically displays lots of hints about how to -debug and report issues. - -Questions may be sent to the users or developers mailing lists (http:// -www.open-mpi.org/community/lists/hwloc.php). - -There is also a #hwloc IRC channel on Freenode (irc.freenode.net). - - - -See https://www.open-mpi.org/projects/hwloc/doc/ for more hwloc documentation. diff --git a/opal/mca/hwloc/hwloc201/hwloc/VERSION b/opal/mca/hwloc/hwloc201/hwloc/VERSION deleted file mode 100644 index 8794398f521..00000000000 --- a/opal/mca/hwloc/hwloc201/hwloc/VERSION +++ /dev/null @@ -1,47 +0,0 @@ -# This is the VERSION file for hwloc, describing the precise version -# of hwloc in this distribution. The various components of the version -# number below are combined to form a single version number string. - -# major, minor, and release are generally combined in the form -# ... If release is zero, then it is omitted. - -# Please update HWLOC_VERSION in contrib/windows/private_config.h too. - -major=2 -minor=0 -release=2 - -# greek is used for alpha or beta release tags. If it is non-empty, -# it will be appended to the version number. It does not have to be -# numeric. Common examples include a1 (alpha release 1), b1 (beta -# release 1), sc2005 (Super Computing 2005 release). The only -# requirement is that it must be entirely printable ASCII characters -# and have no white space. - -greek=rc1 - -# The date when this release was created - -date="Unreleased developer copy" - -# If snapshot=1, then use the value from snapshot_version as the -# entire hwloc version (i.e., ignore major, minor, release, and -# greek). This is only set to 1 when making snapshot tarballs. -snapshot=1 -snapshot_version=${major}.${minor}.${release}${greek}-git - -# The shared library version of hwloc's public library. This version -# is maintained in accordance with the "Library Interface Versions" -# chapter from the GNU Libtool documentation. Notes: - -# 1. Since version numbers are associated with *releases*, the version -# number maintained on the hwloc git master (and developer branches) -# is always 0:0:0. - -# 2. Version numbers are described in the Libtool current:revision:age -# format. - -libhwloc_so_version=15:0:0 -libnetloc_so_version=0:0:0 - -# Please also update the lines in contrib/windows/libhwloc.vcxproj diff --git a/opal/mca/hwloc/hwloc201/hwloc/config/distscript.sh b/opal/mca/hwloc/hwloc201/hwloc/config/distscript.sh deleted file mode 100755 index d72a3fd3052..00000000000 --- a/opal/mca/hwloc/hwloc201/hwloc/config/distscript.sh +++ /dev/null @@ -1,130 +0,0 @@ -#!/bin/sh -f -# -# Copyright © 2004-2005 The Trustees of Indiana University and Indiana -# University Research and Technology -# Corporation. All rights reserved. -# Copyright © 2004-2005 The University of Tennessee and The University -# of Tennessee Research Foundation. All rights -# reserved. -# Copyright © 2004-2005 High Performance Computing Center Stuttgart, -# University of Stuttgart. All rights reserved. -# Copyright © 2004-2005 The Regents of the University of California. -# All rights reserved. -# Copyright © 2010-2014 Inria. All rights reserved. -# Copyright © 2009-2014 Cisco Systems, Inc. All rights reserved. -# $COPYRIGHT$ -# -# Additional copyrights may follow -# -# $HEADER$ -# - -builddir="`pwd`" - -srcdir=$1 -cd "$srcdir" -srcdir=`pwd` -cd "$builddir" - -distdir="$builddir/$2" -HWLOC_VERSION=$3 - -if test "$distdir" = ""; then - echo "Must supply relative distdir as argv[2] -- aborting" - exit 1 -elif test "$HWLOC_VERSION" = ""; then - echo "Must supply version as argv[1] -- aborting" - exit 1 -fi - -#======================================================================== - -start=`date` -cat < header file.]) - ]) - AC_CHECK_HEADERS([sys/mman.h]) - - old_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -D_WIN32_WINNT=0x0601" - AC_CHECK_TYPES([KAFFINITY, - PROCESSOR_CACHE_TYPE, - CACHE_DESCRIPTOR, - LOGICAL_PROCESSOR_RELATIONSHIP, - RelationProcessorPackage, - SYSTEM_LOGICAL_PROCESSOR_INFORMATION, - GROUP_AFFINITY, - PROCESSOR_RELATIONSHIP, - NUMA_NODE_RELATIONSHIP, - CACHE_RELATIONSHIP, - PROCESSOR_GROUP_INFO, - GROUP_RELATIONSHIP, - SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, - PSAPI_WORKING_SET_EX_BLOCK, - PSAPI_WORKING_SET_EX_INFORMATION, - PROCESSOR_NUMBER], - [],[],[[#include ]]) - CPPFLAGS="$old_CPPFLAGS" - AC_CHECK_LIB([gdi32], [main], - [HWLOC_LIBS="-lgdi32 $HWLOC_LIBS" - AC_DEFINE([HAVE_LIBGDI32], 1, [Define to 1 if we have -lgdi32])]) - AC_CHECK_LIB([user32], [PostQuitMessage], [hwloc_have_user32="yes"]) - - AC_CHECK_HEADER([windows.h], [ - AC_DEFINE([HWLOC_HAVE_WINDOWS_H], [1], [Define to 1 if you have the `windows.h' header.]) - ]) - - AC_CHECK_HEADERS([sys/lgrp_user.h], [ - AC_CHECK_LIB([lgrp], [lgrp_init], - [HWLOC_LIBS="-llgrp $HWLOC_LIBS" - AC_DEFINE([HAVE_LIBLGRP], 1, [Define to 1 if we have -llgrp]) - AC_CHECK_DECLS([lgrp_latency_cookie],,,[[#include ]]) - ]) - ]) - AC_CHECK_HEADERS([kstat.h], [ - AC_CHECK_LIB([kstat], [main], - [HWLOC_LIBS="-lkstat $HWLOC_LIBS" - AC_DEFINE([HAVE_LIBKSTAT], 1, [Define to 1 if we have -lkstat])]) - ]) - - AC_CHECK_DECLS([fabsf], [ - AC_CHECK_LIB([m], [fabsf], - [HWLOC_LIBS="-lm $HWLOC_LIBS"]) - ], [], [[#include ]]) - - AC_CHECK_HEADERS([picl.h], [ - AC_CHECK_LIB([picl], [picl_initialize], - [HWLOC_LIBS="-lpicl $HWLOC_LIBS"])]) - - AC_CHECK_DECLS([_SC_NPROCESSORS_ONLN, - _SC_NPROCESSORS_CONF, - _SC_NPROC_ONLN, - _SC_NPROC_CONF, - _SC_PAGESIZE, - _SC_PAGE_SIZE, - _SC_LARGE_PAGESIZE],,[:],[[#include ]]) - - AC_HAVE_HEADERS([mach/mach_host.h]) - AC_HAVE_HEADERS([mach/mach_init.h], [ - AC_CHECK_FUNCS([host_info]) - ]) - - AC_CHECK_HEADERS([sys/param.h]) - AC_CHECK_HEADERS([sys/sysctl.h], [ - AC_CHECK_DECLS([CTL_HW, HW_NCPU],,,[[ - #if HAVE_SYS_PARAM_H - #include - #endif - #include - ]]) - ],,[ - AC_INCLUDES_DEFAULT - #if HAVE_SYS_PARAM_H - #include - #endif - ]) - - AC_CHECK_DECLS([strtoull], [], [AC_CHECK_FUNCS([strtoull])], [AC_INCLUDES_DEFAULT]) - - # Needed for Windows in private/misc.h - AC_CHECK_TYPES([ssize_t]) - AC_CHECK_DECLS([snprintf], [], [], [AC_INCLUDES_DEFAULT]) - AC_CHECK_DECLS([strcasecmp], [], [], [AC_INCLUDES_DEFAULT]) - # strdup and putenv are declared in windows headers but marked deprecated - AC_CHECK_DECLS([_strdup], [], [], [AC_INCLUDES_DEFAULT]) - AC_CHECK_DECLS([_putenv], [], [], [AC_INCLUDES_DEFAULT]) - # Could add mkdir and access for hwloc-gather-cpuid.c on Windows - - if test "x$hwloc_linux" != "xyes" ; then - # Don't detect sysctl* on Linux because its sysctl() syscall is - # long deprecated and unneeded. Some libc still expose the symbol - # and raise a big warning at link time. - - # Do a full link test instead of just using AC_CHECK_FUNCS, which - # just checks to see if the symbol exists or not. For example, - # the prototype of sysctl uses u_int, which on some platforms - # (such as FreeBSD) is only defined under __BSD_VISIBLE, __USE_BSD - # or other similar definitions. So while the symbols "sysctl" and - # "sysctlbyname" might still be available in libc (which autoconf - # checks for), they might not be actually usable. - AC_MSG_CHECKING([for sysctl]) - AC_TRY_LINK([ - #include - #include - #include - ], - [return sysctl(NULL,0,NULL,NULL,NULL,0);], - [AC_DEFINE([HAVE_SYSCTL],[1],[Define to '1' if sysctl is present and usable]) - AC_MSG_RESULT(yes)], - [AC_MSG_RESULT(no)]) - AC_MSG_CHECKING([for sysctlbyname]) - AC_TRY_LINK([ - #include - #include - #include - ], - [return sysctlbyname(NULL,NULL,NULL,NULL,0);], - [AC_DEFINE([HAVE_SYSCTLBYNAME],[1],[Define to '1' if sysctlbyname is present and usable]) - AC_MSG_RESULT(yes)], - [AC_MSG_RESULT(no)]) - fi - - AC_CHECK_DECLS([getprogname], [], [], [AC_INCLUDES_DEFAULT]) - AC_CHECK_DECLS([getexecname], [], [], [AC_INCLUDES_DEFAULT]) - AC_CHECK_DECLS([GetModuleFileName], [], [], [#include ]) - # program_invocation_name and __progname may be available but not exported in headers - AC_MSG_CHECKING([for program_invocation_name]) - AC_TRY_LINK([ - #ifndef _GNU_SOURCE - # define _GNU_SOURCE - #endif - #include - #include - extern char *program_invocation_name; - ],[ - return printf("%s\n", program_invocation_name); - ], - [AC_DEFINE([HAVE_PROGRAM_INVOCATION_NAME], [1], [Define to '1' if program_invocation_name is present and usable]) - AC_MSG_RESULT([yes]) - ],[AC_MSG_RESULT([no])]) - AC_MSG_CHECKING([for __progname]) - AC_TRY_LINK([ - #include - extern char *__progname; - ],[ - return printf("%s\n", __progname); - ], - [AC_DEFINE([HAVE___PROGNAME], [1], [Define to '1' if __progname is present and usable]) - AC_MSG_RESULT([yes]) - ],[AC_MSG_RESULT([no])]) - - case ${target} in - *-*-mingw*|*-*-cygwin*) - hwloc_pid_t=HANDLE - hwloc_thread_t=HANDLE - ;; - *) - hwloc_pid_t=pid_t - AC_CHECK_TYPES([pthread_t], [hwloc_thread_t=pthread_t], [:], [[#include ]]) - ;; - esac - AC_DEFINE_UNQUOTED(hwloc_pid_t, $hwloc_pid_t, [Define this to the process ID type]) - if test "x$hwloc_thread_t" != "x" ; then - AC_DEFINE_UNQUOTED(hwloc_thread_t, $hwloc_thread_t, [Define this to the thread ID type]) - fi - - AC_CHECK_DECLS([sched_getcpu],,[:],[[ - #ifndef _GNU_SOURCE - # define _GNU_SOURCE - #endif - #include - ]]) - - _HWLOC_CHECK_DECL([sched_setaffinity], [ - AC_DEFINE([HWLOC_HAVE_SCHED_SETAFFINITY], [1], [Define to 1 if glibc provides a prototype of sched_setaffinity()]) - AS_IF([test "$HWLOC_STRICT_ARGS_CFLAGS" = "FAIL"],[ - AC_MSG_WARN([Support for sched_setaffinity() requires a C compiler which]) - AC_MSG_WARN([considers incorrect argument counts to be a fatal error.]) - AC_MSG_ERROR([Cannot continue.]) - ]) - AC_MSG_CHECKING([for old prototype of sched_setaffinity]) - hwloc_save_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS $HWLOC_STRICT_ARGS_CFLAGS" - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - #ifndef _GNU_SOURCE - # define _GNU_SOURCE - #endif - #include - static unsigned long mask; - ]], [[ sched_setaffinity(0, (void*) &mask); ]])], - [AC_DEFINE([HWLOC_HAVE_OLD_SCHED_SETAFFINITY], [1], [Define to 1 if glibc provides the old prototype (without length) of sched_setaffinity()]) - AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no])]) - CFLAGS=$hwloc_save_CFLAGS - ], , [[ -#ifndef _GNU_SOURCE -# define _GNU_SOURCE -#endif -#include -]]) - - AC_MSG_CHECKING([for working CPU_SET]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - #include - cpu_set_t set; - ]], [[ CPU_ZERO(&set); CPU_SET(0, &set);]])], - [AC_DEFINE([HWLOC_HAVE_CPU_SET], [1], [Define to 1 if the CPU_SET macro works]) - AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no])]) - - AC_MSG_CHECKING([for working CPU_SET_S]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - #include - cpu_set_t *set; - ]], [[ - set = CPU_ALLOC(1024); - CPU_ZERO_S(CPU_ALLOC_SIZE(1024), set); - CPU_SET_S(CPU_ALLOC_SIZE(1024), 0, set); - CPU_FREE(set); - ]])], - [AC_DEFINE([HWLOC_HAVE_CPU_SET_S], [1], [Define to 1 if the CPU_SET_S macro works]) - AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no])]) - - AC_MSG_CHECKING([for working syscall with 6 parameters]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - #include - #include - ]], [[syscall(0, 1, 2, 3, 4, 5, 6);]])], - [AC_DEFINE([HWLOC_HAVE_SYSCALL], [1], [Define to 1 if function `syscall' is available with 6 parameters]) - AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no])]) - - AC_PATH_PROGS([HWLOC_MS_LIB], [lib]) - AC_ARG_VAR([HWLOC_MS_LIB], [Path to Microsoft's Visual Studio `lib' tool]) - - AC_PATH_PROG([BASH], [bash]) - - AC_CHECK_FUNCS([ffs], [ - _HWLOC_CHECK_DECL([ffs],[ - AC_DEFINE([HWLOC_HAVE_DECL_FFS], [1], [Define to 1 if function `ffs' is declared by system headers]) - ]) - AC_DEFINE([HWLOC_HAVE_FFS], [1], [Define to 1 if you have the `ffs' function.]) - if ( $CC --version | grep gccfss ) >/dev/null 2>&1 ; then - dnl May be broken due to - dnl https://forums.oracle.com/forums/thread.jspa?threadID=1997328 - dnl TODO: a more selective test, since bug may be version dependent. - dnl We can't use AC_TRY_LINK because the failure does not appear until - dnl run/load time and there is currently no precedent for AC_TRY_RUN - dnl use in hwloc. --PHH - dnl For now, we're going with "all gccfss compilers are broken". - dnl Better to be safe and correct; it's not like this is - dnl performance-critical code, after all. - AC_DEFINE([HWLOC_HAVE_BROKEN_FFS], [1], - [Define to 1 if your `ffs' function is known to be broken.]) - fi - ]) - AC_CHECK_FUNCS([ffsl], [ - _HWLOC_CHECK_DECL([ffsl],[ - AC_DEFINE([HWLOC_HAVE_DECL_FFSL], [1], [Define to 1 if function `ffsl' is declared by system headers]) - ]) - AC_DEFINE([HWLOC_HAVE_FFSL], [1], [Define to 1 if you have the `ffsl' function.]) - ]) - - AC_CHECK_FUNCS([fls], [ - _HWLOC_CHECK_DECL([fls],[ - AC_DEFINE([HWLOC_HAVE_DECL_FLS], [1], [Define to 1 if function `fls' is declared by system headers]) - ]) - AC_DEFINE([HWLOC_HAVE_FLS], [1], [Define to 1 if you have the `fls' function.]) - ]) - AC_CHECK_FUNCS([flsl], [ - _HWLOC_CHECK_DECL([flsl],[ - AC_DEFINE([HWLOC_HAVE_DECL_FLSL], [1], [Define to 1 if function `flsl' is declared by system headers]) - ]) - AC_DEFINE([HWLOC_HAVE_FLSL], [1], [Define to 1 if you have the `flsl' function.]) - ]) - - AC_CHECK_FUNCS([clz], [ - _HWLOC_CHECK_DECL([clz],[ - AC_DEFINE([HWLOC_HAVE_DECL_CLZ], [1], [Define to 1 if function `clz' is declared by system headers]) - ]) - AC_DEFINE([HWLOC_HAVE_CLZ], [1], [Define to 1 if you have the `clz' function.]) - ]) - AC_CHECK_FUNCS([clzl], [ - _HWLOC_CHECK_DECL([clzl],[ - AC_DEFINE([HWLOC_HAVE_DECL_CLZL], [1], [Define to 1 if function `clzl' is declared by system headers]) - ]) - AC_DEFINE([HWLOC_HAVE_CLZL], [1], [Define to 1 if you have the `clzl' function.]) - ]) - - AS_IF([test "$hwloc_c_vendor" != "android"], [AC_CHECK_FUNCS([openat], [hwloc_have_openat=yes])]) - - - AC_CHECK_HEADERS([malloc.h]) - AC_CHECK_FUNCS([getpagesize memalign posix_memalign]) - - AC_CHECK_HEADERS([sys/utsname.h]) - AC_CHECK_FUNCS([uname]) - - dnl Don't check for valgrind in embedded mode because this may conflict - dnl with the embedder projects also checking for it. - dnl We only use Valgrind to nicely disable the x86 backend with a warning, - dnl but we can live without it in embedded mode (it auto-disables itself - dnl because of invalid CPUID outputs). - dnl Non-embedded checks usually go to hwloc_internal.m4 but this one is - dnl is really for the core library. - AS_IF([test "$hwloc_mode" != "embedded"], - [AC_CHECK_HEADERS([valgrind/valgrind.h]) - AC_CHECK_DECLS([RUNNING_ON_VALGRIND],,[:],[[#include ]]) - ],[ - AC_DEFINE([HAVE_DECL_RUNNING_ON_VALGRIND], [0], [Embedded mode; just assume we do not have Valgrind support]) - ]) - - AC_CHECK_HEADERS([pthread_np.h]) - AC_CHECK_DECLS([pthread_setaffinity_np],,[:],[[ - #include - #ifdef HAVE_PTHREAD_NP_H - # include - #endif - ]]) - AC_CHECK_DECLS([pthread_getaffinity_np],,[:],[[ - #include - #ifdef HAVE_PTHREAD_NP_H - # include - #endif - ]]) - AC_CHECK_FUNC([sched_setaffinity], [hwloc_have_sched_setaffinity=yes]) - AC_CHECK_HEADERS([sys/cpuset.h],,,[[#include ]]) - AC_CHECK_FUNCS([cpuset_setaffinity]) - AC_SEARCH_LIBS([pthread_getthrds_np], [pthread], - AC_DEFINE([HWLOC_HAVE_PTHREAD_GETTHRDS_NP], 1, `Define to 1 if you have pthread_getthrds_np') - ) - AC_CHECK_FUNCS([cpuset_setid]) - - # Linux libudev support - if test "x$enable_libudev" != xno; then - AC_CHECK_HEADERS([libudev.h], [ - AC_CHECK_LIB([udev], [udev_device_new_from_subsystem_sysname], [ - HWLOC_LIBS="$HWLOC_LIBS -ludev" - AC_DEFINE([HWLOC_HAVE_LIBUDEV], [1], [Define to 1 if you have libudev.]) - ]) - ]) - fi - - # PCI support via libpciaccess. NOTE: we do not support - # libpci/pciutils because that library is GPL and is incompatible - # with our BSD license. - hwloc_pciaccess_happy=no - if test "x$enable_io" != xno && test "x$enable_pci" != xno; then - hwloc_pciaccess_happy=yes - HWLOC_PKG_CHECK_MODULES([PCIACCESS], [pciaccess], [pci_slot_match_iterator_create], [pciaccess.h], [:], [hwloc_pciaccess_happy=no]) - - # Only add the REQUIRES if we got pciaccess through pkg-config. - # Otherwise we don't know if pciaccess.pc is installed - AS_IF([test "$hwloc_pciaccess_happy" = "yes"], [HWLOC_PCIACCESS_REQUIRES=pciaccess]) - - # Just for giggles, if we didn't find a pciaccess pkg-config, - # just try looking for its header file and library. - AS_IF([test "$hwloc_pciaccess_happy" != "yes"], - [AC_CHECK_HEADER([pciaccess.h], - [AC_CHECK_LIB([pciaccess], [pci_slot_match_iterator_create], - [hwloc_pciaccess_happy=yes - HWLOC_PCIACCESS_LIBS="-lpciaccess"]) - ]) - ]) - - AS_IF([test "$hwloc_pciaccess_happy" = "yes"], - [hwloc_components="$hwloc_components pci" - hwloc_pci_component_maybeplugin=1]) - fi - # If we asked for pci support but couldn't deliver, fail - AS_IF([test "$enable_pci" = "yes" -a "$hwloc_pciaccess_happy" = "no"], - [AC_MSG_WARN([Specified --enable-pci switch, but could not]) - AC_MSG_WARN([find appropriate support]) - AC_MSG_ERROR([Cannot continue])]) - # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins - - # OpenCL support - hwloc_opencl_happy=no - if test "x$enable_io" != xno && test "x$enable_opencl" != "xno"; then - hwloc_opencl_happy=yes - case ${target} in - *-*-darwin*) - # On Darwin, only use the OpenCL framework - AC_CHECK_HEADERS([OpenCL/cl_ext.h], [ - AC_MSG_CHECKING([for the OpenCL framework]) - tmp_save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -framework OpenCL" - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ -#include - ]], [[ -return clGetDeviceIDs(0, 0, 0, NULL, NULL); - ]])], - [AC_MSG_RESULT(yes) - HWLOC_OPENCL_LDFLAGS="-framework OpenCL"], - [AC_MSG_RESULT(no) - hwloc_opencl_happy=no]) - LDFLAGS="$tmp_save_LDFLAGS" - ], [hwloc_opencl_happy=no]) - ;; - *) - # On Others, look for OpenCL at normal locations - AC_CHECK_HEADERS([CL/cl_ext.h], [ - AC_CHECK_LIB([OpenCL], [clGetDeviceIDs], [HWLOC_OPENCL_LIBS="-lOpenCL"], [hwloc_opencl_happy=no]) - ], [hwloc_opencl_happy=no]) - ;; - esac - fi - AC_SUBST(HWLOC_OPENCL_CFLAGS) - AC_SUBST(HWLOC_OPENCL_LIBS) - AC_SUBST(HWLOC_OPENCL_LDFLAGS) - # If we asked for opencl support but couldn't deliver, fail - AS_IF([test "$enable_opencl" = "yes" -a "$hwloc_opencl_happy" = "no"], - [AC_MSG_WARN([Specified --enable-opencl switch, but could not]) - AC_MSG_WARN([find appropriate support]) - AC_MSG_ERROR([Cannot continue])]) - if test "x$hwloc_opencl_happy" = "xyes"; then - AC_DEFINE([HWLOC_HAVE_OPENCL], [1], [Define to 1 if you have the `OpenCL' library.]) - AC_SUBST([HWLOC_HAVE_OPENCL], [1]) - hwloc_components="$hwloc_components opencl" - hwloc_opencl_component_maybeplugin=1 - else - AC_SUBST([HWLOC_HAVE_OPENCL], [0]) - fi - # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins - - # CUDA support - hwloc_have_cuda=no - hwloc_have_cudart=no - if test "x$enable_io" != xno && test "x$enable_cuda" != "xno"; then - AC_CHECK_HEADERS([cuda.h], [ - AC_MSG_CHECKING(if CUDA_VERSION >= 3020) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ -#include -#ifndef CUDA_VERSION -#error CUDA_VERSION undefined -#elif CUDA_VERSION < 3020 -#error CUDA_VERSION too old -#endif]], [[int i = 3;]])], - [AC_MSG_RESULT(yes) - AC_CHECK_LIB([cuda], [cuInit], - [AC_DEFINE([HAVE_CUDA], 1, [Define to 1 if we have -lcuda]) - hwloc_have_cuda=yes])], - [AC_MSG_RESULT(no)])]) - - AC_CHECK_HEADERS([cuda_runtime_api.h], [ - AC_MSG_CHECKING(if CUDART_VERSION >= 3020) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ -#include -#ifndef CUDART_VERSION -#error CUDART_VERSION undefined -#elif CUDART_VERSION < 3020 -#error CUDART_VERSION too old -#endif]], [[int i = 3;]])], - [AC_MSG_RESULT(yes) - AC_CHECK_LIB([cudart], [cudaGetDeviceProperties], [ - HWLOC_CUDA_LIBS="-lcudart" - AC_SUBST(HWLOC_CUDA_LIBS) - hwloc_have_cudart=yes - AC_DEFINE([HWLOC_HAVE_CUDART], [1], [Define to 1 if you have the `cudart' SDK.]) - ]) - ]) - ]) - - AS_IF([test "$enable_cuda" = "yes" -a "$hwloc_have_cudart" = "no"], - [AC_MSG_WARN([Specified --enable-cuda switch, but could not]) - AC_MSG_WARN([find appropriate support]) - AC_MSG_ERROR([Cannot continue])]) - - if test "x$hwloc_have_cudart" = "xyes"; then - hwloc_components="$hwloc_components cuda" - hwloc_cuda_component_maybeplugin=1 - fi - fi - # don't add LIBS/CFLAGS yet, depends on plugins - - # NVML support - hwloc_nvml_happy=no - if test "x$enable_io" != xno && test "x$enable_nvml" != "xno"; then - hwloc_nvml_happy=yes - AC_CHECK_HEADERS([nvml.h], [ - AC_CHECK_LIB([nvidia-ml], [nvmlInit], [HWLOC_NVML_LIBS="-lnvidia-ml"], [hwloc_nvml_happy=no]) - ], [hwloc_nvml_happy=no]) - fi - if test "x$hwloc_nvml_happy" = "xyes"; then - tmp_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $HWLOC_NVML_CFLAGS" - tmp_save_LIBS="$LIBS" - LIBS="$LIBS $HWLOC_NVML_LIBS" - AC_CHECK_DECLS([nvmlDeviceGetMaxPcieLinkGeneration],,[:],[[#include ]]) - CFLAGS="$tmp_save_CFLAGS" - LIBS="$tmp_save_LIBS" - fi - AC_SUBST(HWLOC_NVML_LIBS) - # If we asked for nvml support but couldn't deliver, fail - AS_IF([test "$enable_nvml" = "yes" -a "$hwloc_nvml_happy" = "no"], - [AC_MSG_WARN([Specified --enable-nvml switch, but could not]) - AC_MSG_WARN([find appropriate support]) - AC_MSG_ERROR([Cannot continue])]) - if test "x$hwloc_nvml_happy" = "xyes"; then - AC_DEFINE([HWLOC_HAVE_NVML], [1], [Define to 1 if you have the `NVML' library.]) - AC_SUBST([HWLOC_HAVE_NVML], [1]) - hwloc_components="$hwloc_components nvml" - hwloc_nvml_component_maybeplugin=1 - else - AC_SUBST([HWLOC_HAVE_NVML], [0]) - fi - # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins - - # X11 support - AC_PATH_XTRA - - CPPFLAGS_save=$CPPFLAGS - LIBS_save=$LIBS - - CPPFLAGS="$CPPFLAGS $X_CFLAGS" - LIBS="$LIBS $X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS" - AC_CHECK_HEADERS([X11/Xlib.h], - [AC_CHECK_LIB([X11], [XOpenDisplay], - [ - # the GL backend just needs XOpenDisplay - hwloc_enable_X11=yes - # lstopo needs more - AC_CHECK_HEADERS([X11/Xutil.h], - [AC_CHECK_HEADERS([X11/keysym.h], - [AC_DEFINE([HWLOC_HAVE_X11_KEYSYM], [1], [Define to 1 if X11 headers including Xutil.h and keysym.h are available.]) - HWLOC_X11_CPPFLAGS="$X_CFLAGS" - AC_SUBST([HWLOC_X11_CPPFLAGS]) - HWLOC_X11_LIBS="$X_PRE_LIBS $X_LIBS -lX11 $X_EXTRA_LIBS" - AC_SUBST([HWLOC_X11_LIBS])]) - ], [], [#include ]) - ]) - ]) - CPPFLAGS=$CPPFLAGS_save - LIBS=$LIBS_save - - # GL Support - hwloc_gl_happy=no - if test "x$enable_io" != xno && test "x$enable_gl" != "xno"; then - hwloc_gl_happy=yes - - AS_IF([test "$hwloc_enable_X11" != "yes"], - [AC_MSG_WARN([X11 not found; GL disabled]) - hwloc_gl_happy=no]) - - AC_CHECK_HEADERS([NVCtrl/NVCtrl.h], [ - AC_CHECK_LIB([XNVCtrl], [XNVCTRLQueryTargetAttribute], [:], [hwloc_gl_happy=no], [-lXext]) - ], [hwloc_gl_happy=no]) - - if test "x$hwloc_gl_happy" = "xyes"; then - AC_DEFINE([HWLOC_HAVE_GL], [1], [Define to 1 if you have the GL module components.]) - HWLOC_GL_LIBS="-lXNVCtrl -lXext -lX11" - AC_SUBST(HWLOC_GL_LIBS) - # FIXME we actually don't know if xext.pc and x11.pc are installed - # since we didn't look for Xext and X11 using pkg-config - HWLOC_GL_REQUIRES="xext x11" - hwloc_have_gl=yes - hwloc_components="$hwloc_components gl" - hwloc_gl_component_maybeplugin=1 - else - AS_IF([test "$enable_gl" = "yes"], [ - AC_MSG_WARN([Specified --enable-gl switch, but could not]) - AC_MSG_WARN([find appropriate support]) - AC_MSG_ERROR([Cannot continue]) - ]) - fi - fi - # don't add LIBS/CFLAGS yet, depends on plugins - - # libxml2 support - hwloc_libxml2_happy= - if test "x$enable_libxml2" != "xno"; then - HWLOC_PKG_CHECK_MODULES([LIBXML2], [libxml-2.0], [xmlNewDoc], [libxml/parser.h], - [hwloc_libxml2_happy=yes], - [hwloc_libxml2_happy=no]) - fi - if test "x$hwloc_libxml2_happy" = "xyes"; then - HWLOC_LIBXML2_REQUIRES="libxml-2.0" - AC_DEFINE([HWLOC_HAVE_LIBXML2], [1], [Define to 1 if you have the `libxml2' library.]) - AC_SUBST([HWLOC_HAVE_LIBXML2], [1]) - - hwloc_components="$hwloc_components xml_libxml" - hwloc_xml_libxml_component_maybeplugin=1 - else - AC_SUBST([HWLOC_HAVE_LIBXML2], [0]) - AS_IF([test "$enable_libxml2" = "yes"], - [AC_MSG_WARN([--enable-libxml2 requested, but libxml2 was not found]) - AC_MSG_ERROR([Cannot continue])]) - fi - # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins - - # Try to compile the x86 cpuid inlines - if test "x$enable_cpuid" != "xno"; then - AC_MSG_CHECKING([for x86 cpuid]) - old_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I$HWLOC_top_srcdir/include" - # We need hwloc_uint64_t but we can't use autogen/config.h before configure ends. - # So pass #include/#define manually here for now. - CPUID_CHECK_HEADERS= - CPUID_CHECK_DEFINE= - if test "x$hwloc_windows" = xyes; then - X86_CPUID_CHECK_HEADERS="#include " - X86_CPUID_CHECK_DEFINE="#define hwloc_uint64_t DWORDLONG" - else - X86_CPUID_CHECK_DEFINE="#define hwloc_uint64_t uint64_t" - if test "x$ac_cv_header_stdint_h" = xyes; then - X86_CPUID_CHECK_HEADERS="#include " - fi - fi - AC_LINK_IFELSE([AC_LANG_PROGRAM([[ - #include - $X86_CPUID_CHECK_HEADERS - $X86_CPUID_CHECK_DEFINE - #define __hwloc_inline - #include - ]], [[ - if (hwloc_have_x86_cpuid()) { - unsigned eax = 0, ebx, ecx = 0, edx; - hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx); - printf("highest x86 cpuid %x\n", eax); - return 0; - } - ]])], - [AC_MSG_RESULT([yes]) - AC_DEFINE(HWLOC_HAVE_X86_CPUID, 1, [Define to 1 if you have x86 cpuid]) - hwloc_have_x86_cpuid=yes], - [AC_MSG_RESULT([no])]) - if test "x$hwloc_have_x86_cpuid" = xyes; then - hwloc_components="$hwloc_components x86" - fi - CPPFLAGS="$old_CPPFLAGS" - fi - - # Components require pthread_mutex, see if it needs -lpthread - hwloc_pthread_mutex_happy=no - # Try without explicit -lpthread first - AC_CHECK_FUNC([pthread_mutex_lock], - [hwloc_pthread_mutex_happy=yes - HWLOC_LIBS_PRIVATE="$HWLOC_LIBS_PRIVATE -lpthread" - ], - [AC_MSG_CHECKING([for pthread_mutex_lock with -lpthread]) - # Try again with explicit -lpthread, but don't use AC_CHECK_FUNC to avoid the cache - tmp_save_LIBS=$LIBS - LIBS="$LIBS -lpthread" - AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_mutex_lock])], - [hwloc_pthread_mutex_happy=yes - HWLOC_LIBS="$HWLOC_LIBS -lpthread" - ]) - AC_MSG_RESULT([$hwloc_pthread_mutex_happy]) - LIBS="$tmp_save_LIBS" - ]) - AS_IF([test "x$hwloc_pthread_mutex_happy" = "xyes"], - [AC_DEFINE([HWLOC_HAVE_PTHREAD_MUTEX], 1, [Define to 1 if pthread mutexes are available])]) - - AS_IF([test "x$hwloc_pthread_mutex_happy" != xyes -a "x$hwloc_windows" != xyes], - [AC_MSG_WARN([pthread_mutex_lock not available, required for thread-safe initialization on non-Windows platforms.]) - AC_MSG_WARN([Please report this to the hwloc-devel mailing list.]) - AC_MSG_ERROR([Cannot continue])]) - - # - # Now enable registration of listed components - # - - # Plugin support - AC_MSG_CHECKING([if plugin support is enabled]) - # Plugins (even core support) are totally disabled by default - AS_IF([test "x$enable_plugins" = "x"], [enable_plugins=no]) - AS_IF([test "x$enable_plugins" != "xno"], [hwloc_have_plugins=yes], [hwloc_have_plugins=no]) - AC_MSG_RESULT([$hwloc_have_plugins]) - AS_IF([test "x$hwloc_have_plugins" = "xyes"], - [AC_DEFINE([HWLOC_HAVE_PLUGINS], 1, [Define to 1 if the hwloc library should support dynamically-loaded plugins])]) - - # Some sanity checks about plugins - # libltdl doesn't work on AIX as of 2.4.2 - AS_IF([test "x$enable_plugins" = "xyes" -a "x$hwloc_aix" = "xyes"], - [AC_MSG_WARN([libltdl does not work on AIX, plugins support cannot be enabled.]) - AC_MSG_ERROR([Cannot continue])]) - # posix linkers don't work well with plugins and windows dll constraints - AS_IF([test "x$enable_plugins" = "xyes" -a "x$hwloc_windows" = "xyes"], - [AC_MSG_WARN([Plugins not supported on non-native Windows build, plugins support cannot be enabled.]) - AC_MSG_ERROR([Cannot continue])]) - - # If we want plugins, look for ltdl.h and libltdl - if test "x$hwloc_have_plugins" = xyes; then - AC_CHECK_HEADER([ltdl.h], [], - [AC_MSG_WARN([Plugin support requested, but could not find ltdl.h]) - AC_MSG_ERROR([Cannot continue])]) - AC_CHECK_LIB([ltdl], [lt_dlopenext], - [HWLOC_LIBS="$HWLOC_LIBS -lltdl"], - [AC_MSG_WARN([Plugin support requested, but could not find libltdl]) - AC_MSG_ERROR([Cannot continue])]) - # Add libltdl static-build dependencies to hwloc.pc - HWLOC_CHECK_LTDL_DEPS - fi - - AC_ARG_WITH([hwloc-plugins-path], - AC_HELP_STRING([--with-hwloc-plugins-path=dir:...], - [Colon-separated list of plugin directories. Default: "$prefix/lib/hwloc". Plugins will be installed in the first directory. They will be loaded from all of them, in order.]), - [HWLOC_PLUGINS_PATH="$with_hwloc_plugins_path"], - [HWLOC_PLUGINS_PATH="\$(libdir)/hwloc"]) - AC_SUBST(HWLOC_PLUGINS_PATH) - HWLOC_PLUGINS_DIR=`echo "$HWLOC_PLUGINS_PATH" | cut -d: -f1` - AC_SUBST(HWLOC_PLUGINS_DIR) - - # Static components output file - hwloc_static_components_dir=${HWLOC_top_builddir}/hwloc - mkdir -p ${hwloc_static_components_dir} - hwloc_static_components_file=${hwloc_static_components_dir}/static-components.h - rm -f ${hwloc_static_components_file} - - # Make $enable_plugins easier to use (it contains either "yes" (all) or a list of ) - HWLOC_PREPARE_FILTER_COMPONENTS([$enable_plugins]) - # Now we have some hwloc__component_wantplugin=1 - - # See which core components want plugin and support it - HWLOC_FILTER_COMPONENTS - # Now we have some hwloc__component=plugin/static - # and hwloc_static/plugin_components - AC_MSG_CHECKING([components to build statically]) - AC_MSG_RESULT($hwloc_static_components) - HWLOC_LIST_STATIC_COMPONENTS([$hwloc_static_components_file], [$hwloc_static_components]) - AC_MSG_CHECKING([components to build as plugins]) - AC_MSG_RESULT([$hwloc_plugin_components]) - - AS_IF([test "$hwloc_pci_component" = "static"], - [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_PCIACCESS_LIBS" - HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_PCIACCESS_CFLAGS" - HWLOC_REQUIRES="$HWLOC_PCIACCESS_REQUIRES $HWLOC_REQUIRES"]) - AS_IF([test "$hwloc_opencl_component" = "static"], - [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_OPENCL_LIBS" - HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_OPENCL_LDFLAGS" - HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_OPENCL_CFLAGS" - HWLOC_REQUIRES="$HWLOC_OPENCL_REQUIRES $HWLOC_REQUIRES"]) - AS_IF([test "$hwloc_cuda_component" = "static"], - [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_CUDA_LIBS" - HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_CUDA_CFLAGS" - HWLOC_REQUIRES="$HWLOC_CUDA_REQUIRES $HWLOC_REQUIRES"]) - AS_IF([test "$hwloc_nvml_component" = "static"], - [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_NVML_LIBS" - HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_NVML_CFLAGS" - HWLOC_REQUIRES="$HWLOC_NVML_REQUIRES $HWLOC_REQUIRES"]) - AS_IF([test "$hwloc_gl_component" = "static"], - [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_GL_LIBS" - HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_GL_CFLAGS" - HWLOC_REQUIRES="$HWLOC_GL_REQUIRES $HWLOC_REQUIRES"]) - AS_IF([test "$hwloc_xml_libxml_component" = "static"], - [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_LIBXML2_LIBS" - HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_LIBXML2_CFLAGS" - HWLOC_REQUIRES="$HWLOC_LIBXML2_REQUIRES $HWLOC_REQUIRES"]) - - # - # Setup HWLOC's C, CPP, and LD flags, and LIBS - # - AC_SUBST(HWLOC_REQUIRES) - AC_SUBST(HWLOC_CFLAGS) - HWLOC_CPPFLAGS='-I$(HWLOC_top_builddir)/include -I$(HWLOC_top_srcdir)/include' - AC_SUBST(HWLOC_CPPFLAGS) - AC_SUBST(HWLOC_LDFLAGS) - AC_SUBST(HWLOC_LIBS) - AC_SUBST(HWLOC_LIBS_PRIVATE) - - # Set these values explicitly for embedded builds. Exporting - # these values through *_EMBEDDED_* values gives us the freedom to - # do something different someday if we ever need to. There's no - # need to fill these values in unless we're in embedded mode. - # Indeed, if we're building in embedded mode, we want HWLOC_LIBS - # to be empty so that nothing is linked into libhwloc_embedded.la - # itself -- only the upper-layer will link in anything required. - - AS_IF([test "$hwloc_mode" = "embedded"], - [HWLOC_EMBEDDED_CFLAGS=$HWLOC_CFLAGS - HWLOC_EMBEDDED_CPPFLAGS=$HWLOC_CPPFLAGS - HWLOC_EMBEDDED_LDADD='$(HWLOC_top_builddir)/hwloc/libhwloc_embedded.la' - HWLOC_EMBEDDED_LIBS=$HWLOC_LIBS - HWLOC_LIBS=]) - AC_SUBST(HWLOC_EMBEDDED_CFLAGS) - AC_SUBST(HWLOC_EMBEDDED_CPPFLAGS) - AC_SUBST(HWLOC_EMBEDDED_LDADD) - AC_SUBST(HWLOC_EMBEDDED_LIBS) - - # Always generate these files - AC_CONFIG_FILES( - hwloc_config_prefix[Makefile] - hwloc_config_prefix[include/Makefile] - hwloc_config_prefix[hwloc/Makefile] - ) - - # Cleanup - AC_LANG_POP - - # Success - $2 -])dnl - -#----------------------------------------------------------------------- - -# Specify the symbol prefix -AC_DEFUN([HWLOC_SET_SYMBOL_PREFIX],[ - hwloc_symbol_prefix_value=$1 -])dnl - -#----------------------------------------------------------------------- - -# This must be a standalone routine so that it can be called both by -# HWLOC_INIT and an external caller (if HWLOC_INIT is not invoked). -AC_DEFUN([HWLOC_DO_AM_CONDITIONALS],[ - AS_IF([test "$hwloc_did_am_conditionals" != "yes"],[ - AM_CONDITIONAL([HWLOC_BUILD_STANDALONE], [test "$hwloc_mode" = "standalone"]) - - AM_CONDITIONAL([HWLOC_HAVE_GCC], [test "x$GCC" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_MS_LIB], [test "x$HWLOC_MS_LIB" != "x"]) - AM_CONDITIONAL([HWLOC_HAVE_OPENAT], [test "x$hwloc_have_openat" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_SCHED_SETAFFINITY], - [test "x$hwloc_have_sched_setaffinity" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_PTHREAD], - [test "x$hwloc_have_pthread" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_LINUX_LIBNUMA], - [test "x$hwloc_have_linux_libnuma" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_LIBIBVERBS], - [test "x$hwloc_have_libibverbs" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_CUDA], - [test "x$hwloc_have_cuda" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_GL], - [test "x$hwloc_have_gl" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_CUDART], - [test "x$hwloc_have_cudart" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_LIBXML2], [test "$hwloc_libxml2_happy" = "yes"]) - AM_CONDITIONAL([HWLOC_HAVE_CAIRO], [test "$hwloc_cairo_happy" = "yes"]) - AM_CONDITIONAL([HWLOC_HAVE_PCIACCESS], [test "$hwloc_pciaccess_happy" = "yes"]) - AM_CONDITIONAL([HWLOC_HAVE_OPENCL], [test "$hwloc_opencl_happy" = "yes"]) - AM_CONDITIONAL([HWLOC_HAVE_NVML], [test "$hwloc_nvml_happy" = "yes"]) - AM_CONDITIONAL([HWLOC_HAVE_BUNZIPP], [test "x$BUNZIPP" != "xfalse"]) - AM_CONDITIONAL([HWLOC_HAVE_USER32], [test "x$hwloc_have_user32" = "xyes"]) - - AM_CONDITIONAL([HWLOC_BUILD_DOXYGEN], - [test "x$hwloc_generate_doxs" = "xyes"]) - AM_CONDITIONAL([HWLOC_BUILD_README], - [test "x$hwloc_generate_readme" = "xyes" -a \( "x$hwloc_install_doxs" = "xyes" -o "x$hwloc_generate_doxs" = "xyes" \) ]) - AM_CONDITIONAL([HWLOC_INSTALL_DOXYGEN], - [test "x$hwloc_install_doxs" = "xyes"]) - - AM_CONDITIONAL([HWLOC_HAVE_LINUX], [test "x$hwloc_linux" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_BGQ], [test "x$hwloc_bgq" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_IRIX], [test "x$hwloc_irix" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_DARWIN], [test "x$hwloc_darwin" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_FREEBSD], [test "x$hwloc_freebsd" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_NETBSD], [test "x$hwloc_netbsd" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_SOLARIS], [test "x$hwloc_solaris" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_AIX], [test "x$hwloc_aix" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_HPUX], [test "x$hwloc_hpux" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_WINDOWS], [test "x$hwloc_windows" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_MINGW32], [test "x$target_os" = "xmingw32"]) - - AM_CONDITIONAL([HWLOC_HAVE_X86], [test "x$hwloc_x86_32" = "xyes" -o "x$hwloc_x86_64" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_X86_32], [test "x$hwloc_x86_32" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_X86_64], [test "x$hwloc_x86_64" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_X86_CPUID], [test "x$hwloc_have_x86_cpuid" = "xyes"]) - - AM_CONDITIONAL([HWLOC_HAVE_PLUGINS], [test "x$hwloc_have_plugins" = "xyes"]) - AM_CONDITIONAL([HWLOC_PCI_BUILD_STATIC], [test "x$hwloc_pci_component" = "xstatic"]) - AM_CONDITIONAL([HWLOC_OPENCL_BUILD_STATIC], [test "x$hwloc_opencl_component" = "xstatic"]) - AM_CONDITIONAL([HWLOC_CUDA_BUILD_STATIC], [test "x$hwloc_cuda_component" = "xstatic"]) - AM_CONDITIONAL([HWLOC_NVML_BUILD_STATIC], [test "x$hwloc_nvml_component" = "xstatic"]) - AM_CONDITIONAL([HWLOC_GL_BUILD_STATIC], [test "x$hwloc_gl_component" = "xstatic"]) - AM_CONDITIONAL([HWLOC_XML_LIBXML_BUILD_STATIC], [test "x$hwloc_xml_libxml_component" = "xstatic"]) - - AM_CONDITIONAL([HWLOC_HAVE_CXX], [test "x$hwloc_have_cxx" = "xyes"]) - ]) - hwloc_did_am_conditionals=yes - - # For backwards compatibility (i.e., packages that only call - # HWLOC_DO_AM_CONDITIONS, not NETLOC DO_AM_CONDITIONALS), we also have to - # do the netloc AM conditionals here - NETLOC_DO_AM_CONDITIONALS -])dnl - -#----------------------------------------------------------------------- - -AC_DEFUN([_HWLOC_CHECK_DIFF_U], [ - AC_MSG_CHECKING([whether diff accepts -u]) - if diff -u /dev/null /dev/null 2> /dev/null - then - HWLOC_DIFF_U="-u" - else - HWLOC_DIFF_U="" - fi - AC_SUBST([HWLOC_DIFF_U]) - AC_MSG_RESULT([$HWLOC_DIFF_U]) -]) - -AC_DEFUN([_HWLOC_CHECK_DIFF_W], [ - AC_MSG_CHECKING([whether diff accepts -w]) - if diff -w /dev/null /dev/null 2> /dev/null - then - HWLOC_DIFF_W="-w" - else - HWLOC_DIFF_W="" - fi - AC_SUBST([HWLOC_DIFF_W]) - AC_MSG_RESULT([$HWLOC_DIFF_W]) -]) - -#----------------------------------------------------------------------- - -dnl HWLOC_CHECK_DECL -dnl -dnl Check that the declaration of the given function has a complete prototype -dnl with argument list by trying to call it with an insane dnl number of -dnl arguments (10). Success means the compiler couldn't really check. -AC_DEFUN([_HWLOC_CHECK_DECL], [ - AC_CHECK_DECL([$1], [ - AC_MSG_CHECKING([whether function $1 has a complete prototype]) - AC_REQUIRE([AC_PROG_CC]) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM( - [AC_INCLUDES_DEFAULT([$4])], - [$1(1,2,3,4,5,6,7,8,9,10);] - )], - [AC_MSG_RESULT([no]) - $3], - [AC_MSG_RESULT([yes]) - $2] - )], [$3], $4 - ) -]) - -#----------------------------------------------------------------------- - -dnl HWLOC_CHECK_DECLS -dnl -dnl Same as HWLOCK_CHECK_DECL, but defines HAVE_DECL_foo to 1 or 0 depending on -dnl the result. -AC_DEFUN([_HWLOC_CHECK_DECLS], [ - HWLOC_CHECK_DECL([$1], [ac_have_decl=1], [ac_have_decl=0], [$4]) - AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_DECL_$1]), [$ac_have_decl], - [Define to 1 if you have the declaration of `$1', and to 0 if you don't]) -]) - -#----------------------------------------------------------------------- - -dnl HWLOC_CHECK_LTDL_DEPS -dnl -dnl Add ltdl dependencies to HWLOC_LIBS_PRIVATE -AC_DEFUN([HWLOC_CHECK_LTDL_DEPS], [ - # save variables that we'll modify below - save_lt_cv_dlopen="$lt_cv_dlopen" - save_lt_cv_dlopen_libs="$lt_cv_dlopen_libs" - save_lt_cv_dlopen_self="$lt_cv_dlopen_self" - ########################################################### - # code stolen from LT_SYS_DLOPEN_SELF in libtool.m4 - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - # end of code stolen from LT_SYS_DLOPEN_SELF in libtool.m4 - ########################################################### - - HWLOC_LIBS_PRIVATE="$HWLOC_LIBS_PRIVATE $lt_cv_dlopen_libs" - - # restore modified variable in case the actual libtool code uses them - lt_cv_dlopen="$save_lt_cv_dlopen" - lt_cv_dlopen_libs="$save_lt_cv_dlopen_libs" - lt_cv_dlopen_self="$save_lt_cv_dlopen_self" -]) diff --git a/opal/mca/hwloc/hwloc201/hwloc/config/hwloc_check_attributes.m4 b/opal/mca/hwloc/hwloc201/hwloc/config/hwloc_check_attributes.m4 deleted file mode 100644 index 96348e819ee..00000000000 --- a/opal/mca/hwloc/hwloc201/hwloc/config/hwloc_check_attributes.m4 +++ /dev/null @@ -1,534 +0,0 @@ -# This macro set originally copied from Open MPI: -# Copyright © 2004-2007 The Trustees of Indiana University and Indiana -# University Research and Technology -# Corporation. All rights reserved. -# Copyright © 2004-2005 The University of Tennessee and The University -# of Tennessee Research Foundation. All rights -# reserved. -# Copyright © 2004-2007 High Performance Computing Center Stuttgart, -# University of Stuttgart. All rights reserved. -# Copyright © 2004-2005 The Regents of the University of California. -# All rights reserved. -# and renamed for hwloc: -# Copyright © 2009 Inria. All rights reserved. -# Copyright © 2009 Université Bordeaux -# Copyright © 2010 Cisco Systems, Inc. All rights reserved. -# See COPYING in top-level directory. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# - Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# - Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer listed -# in this license in the documentation and/or other materials -# provided with the distribution. -# -# - Neither the name of the copyright holders nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# The copyright holders provide no reassurances that the source code -# provided does not infringe any patent, copyright, or any other -# intellectual property rights of third parties. The copyright holders -# disclaim any liability to any recipient for claims brought against -# recipient by any third party for infringement of that parties -# intellectual property rights. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -# -# Search the generated warnings for -# keywords regarding skipping or ignoring certain attributes -# Intel: ignore -# Sun C++: skip -# -AC_DEFUN([_HWLOC_ATTRIBUTE_FAIL_SEARCH],[ - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - m4_ifdef([AC_PROG_GREP], - [AC_REQUIRE([AC_PROG_GREP])], - [GREP=grep]) - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__[$1]=0 - break; - fi - done - fi -]) - -# -# HWLOC: Remove C++ compiler check. It can result in a circular -# dependency in embedded situations. -# -# Check for one specific attribute by compiling with C -# and possibly using a cross-check. -# -# If the cross-check is defined, a static function "usage" should be -# defined, which is to be called from main (to circumvent warnings -# regarding unused function in main file) -# static int usage (int * argument); -# -# The last argument is for specific CFLAGS, that need to be set -# for the compiler to generate a warning on the cross-check. -# This may need adaption for future compilers / CFLAG-settings. -# -AC_DEFUN([_HWLOC_CHECK_SPECIFIC_ATTRIBUTE], [ - AC_MSG_CHECKING([for __attribute__([$1])]) - AC_CACHE_VAL(hwloc_cv___attribute__[$1], [ - # - # Try to compile using the C compiler - # - AC_TRY_COMPILE([$2],[], - [ - # - # In case we did succeed: Fine, but was this due to the - # attribute being ignored/skipped? Grep for IgNoRe/skip in conftest.err - # and if found, reset the hwloc_cv__attribute__var=0 - # - hwloc_cv___attribute__[$1]=1 - _HWLOC_ATTRIBUTE_FAIL_SEARCH([$1]) - ], - [hwloc_cv___attribute__[$1]=0]) - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__[$1]" = "1" -a "[$3]" != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS [$4]" - - AC_TRY_COMPILE([$3], - [ - int i=4711; - i=usage(&i); - ], - [hwloc_cv___attribute__[$1]=0], - [ - # - # In case we did NOT succeed: Fine, but was this due to the - # attribute being ignored? Grep for IgNoRe in conftest.err - # and if found, reset the hwloc_cv__attribute__var=0 - # - hwloc_cv___attribute__[$1]=1 - _HWLOC_ATTRIBUTE_FAIL_SEARCH([$1]) - ]) - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - ]) - - if test "$hwloc_cv___attribute__[$1]" = "1" ; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi -]) - - -# -# Test the availability of __attribute__ and with the help -# of _HWLOC_CHECK_SPECIFIC_ATTRIBUTE for the support of -# particular attributes. Compilers, that do not support an -# attribute most often fail with a warning (when the warning -# level is set). -# The compilers output is parsed in _HWLOC_ATTRIBUTE_FAIL_SEARCH -# -# To add a new attributes __NAME__ add the -# hwloc_cv___attribute__NAME -# add a new check with _HWLOC_CHECK_SPECIFIC_ATTRIBUTE (possibly with a cross-check) -# _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([name], [int foo (int arg) __attribute__ ((__name__));], [], []) -# and define the corresponding -# AC_DEFINE_UNQUOTED(_HWLOC_HAVE_ATTRIBUTE_NAME, [$hwloc_cv___attribute__NAME], -# [Whether your compiler has __attribute__ NAME or not]) -# and decide on a correct macro (in opal/include/opal_config_bottom.h): -# # define __opal_attribute_NAME(x) __attribute__(__NAME__) -# -# Please use the "__"-notation of the attribute in order not to -# clash with predefined names or macros (e.g. const, which some compilers -# do not like..) -# - - -AC_DEFUN([_HWLOC_CHECK_ATTRIBUTES], [ - AC_MSG_CHECKING(for __attribute__) - - AC_CACHE_VAL(hwloc_cv___attribute__, [ - AC_TRY_COMPILE( - [#include - /* Check for the longest available __attribute__ (since gcc-2.3) */ - struct foo { - char a; - int x[2] __attribute__ ((__packed__)); - }; - ], - [], - [hwloc_cv___attribute__=1], - [hwloc_cv___attribute__=0], - ) - - if test "$hwloc_cv___attribute__" = "1" ; then - AC_TRY_COMPILE( - [#include - /* Check for the longest available __attribute__ (since gcc-2.3) */ - struct foo { - char a; - int x[2] __attribute__ ((__packed__)); - }; - ], - [], - [hwloc_cv___attribute__=1], - [hwloc_cv___attribute__=0], - ) - fi - ]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE, [$hwloc_cv___attribute__], - [Whether your compiler has __attribute__ or not]) - -# -# Now that we know the compiler support __attribute__ let's check which kind of -# attributed are supported. -# - if test "$hwloc_cv___attribute__" = "0" ; then - AC_MSG_RESULT([no]) - hwloc_cv___attribute__aligned=0 - hwloc_cv___attribute__always_inline=0 - hwloc_cv___attribute__cold=0 - hwloc_cv___attribute__const=0 - hwloc_cv___attribute__deprecated=0 - hwloc_cv___attribute__format=0 - hwloc_cv___attribute__hot=0 - hwloc_cv___attribute__malloc=0 - hwloc_cv___attribute__may_alias=0 - hwloc_cv___attribute__no_instrument_function=0 - hwloc_cv___attribute__nonnull=0 - hwloc_cv___attribute__noreturn=0 - hwloc_cv___attribute__packed=0 - hwloc_cv___attribute__pure=0 - hwloc_cv___attribute__sentinel=0 - hwloc_cv___attribute__unused=0 - hwloc_cv___attribute__warn_unused_result=0 - hwloc_cv___attribute__weak_alias=0 - else - AC_MSG_RESULT([yes]) - - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([aligned], - [struct foo { char text[4]; } __attribute__ ((__aligned__(8)));], - [], - []) - - # - # Ignored by PGI-6.2.5; -- recognized by output-parser - # - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([always_inline], - [int foo (int arg) __attribute__ ((__always_inline__));], - [], - []) - - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([cold], - [ - int foo(int arg1, int arg2) __attribute__ ((__cold__)); - int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } - ], - [], - []) - - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([const], - [ - int foo(int arg1, int arg2) __attribute__ ((__const__)); - int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } - ], - [], - []) - - - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([deprecated], - [ - int foo(int arg1, int arg2) __attribute__ ((__deprecated__)); - int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } - ], - [], - []) - - - HWLOC_ATTRIBUTE_CFLAGS= - case "$hwloc_c_vendor" in - gnu) - HWLOC_ATTRIBUTE_CFLAGS="-Wall" - ;; - intel) - # we want specifically the warning on format string conversion - HWLOC_ATTRIBUTE_CFLAGS="-we181" - ;; - esac - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([format], - [ - int this_printf (void *my_object, const char *my_format, ...) __attribute__ ((__format__ (__printf__, 2, 3))); - ], - [ - static int usage (int * argument); - extern int this_printf (int arg1, const char *my_format, ...) __attribute__ ((__format__ (__printf__, 2, 3))); - - static int usage (int * argument) { - return this_printf (*argument, "%d", argument); /* This should produce a format warning */ - } - /* The autoconf-generated main-function is int main(), which produces a warning by itself */ - int main(void); - ], - [$HWLOC_ATTRIBUTE_CFLAGS]) - - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([hot], - [ - int foo(int arg1, int arg2) __attribute__ ((__hot__)); - int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } - ], - [], - []) - - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([malloc], - [ -#ifdef HAVE_STDLIB_H -# include -#endif - int * foo(int arg1) __attribute__ ((__malloc__)); - int * foo(int arg1) { return (int*) malloc(arg1); } - ], - [], - []) - - - # - # Attribute may_alias: No suitable cross-check available, that works for non-supporting compilers - # Ignored by intel-9.1.045 -- turn off with -wd1292 - # Ignored by PGI-6.2.5; ignore not detected due to missing cross-check - # The test case is chosen to match our only use in topology-xml-*.c, and reproduces an xlc-13.1.0 bug. - # - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([may_alias], - [struct { int i; } __attribute__ ((__may_alias__)) * p_value;], - [], - []) - - - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([no_instrument_function], - [int * foo(int arg1) __attribute__ ((__no_instrument_function__));], - [], - []) - - - # - # Attribute nonnull: - # Ignored by intel-compiler 9.1.045 -- recognized by cross-check - # Ignored by PGI-6.2.5 (pgCC) -- recognized by cross-check - # - HWLOC_ATTRIBUTE_CFLAGS= - case "$hwloc_c_vendor" in - gnu) - HWLOC_ATTRIBUTE_CFLAGS="-Wall" - ;; - intel) - # we do not want to get ignored attributes warnings, but rather real warnings - HWLOC_ATTRIBUTE_CFLAGS="-wd1292" - ;; - esac - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([nonnull], - [ - int square(int *arg) __attribute__ ((__nonnull__)); - int square(int *arg) { return *arg; } - ], - [ - static int usage(int * argument); - int square(int * argument) __attribute__ ((__nonnull__)); - int square(int * argument) { return (*argument) * (*argument); } - - static int usage(int * argument) { - return square( ((void*)0) ); /* This should produce an argument must be nonnull warning */ - } - /* The autoconf-generated main-function is int main(), which produces a warning by itself */ - int main(void); - ], - [$HWLOC_ATTRIBUTE_CFLAGS]) - - - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([noreturn], - [ -#ifdef HAVE_UNISTD_H -# include -#endif -#ifdef HAVE_STDLIB_H -# include -#endif - void fatal(int arg1) __attribute__ ((__noreturn__)); - void fatal(int arg1) { exit(arg1); } - ], - [], - []) - - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([packed], - [ - struct foo { - char a; - int x[2] __attribute__ ((__packed__)); - }; - ], - [], - []) - - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([pure], - [ - int square(int arg) __attribute__ ((__pure__)); - int square(int arg) { return arg * arg; } - ], - [], - []) - - # - # Attribute sentinel: - # Ignored by the intel-9.1.045 -- recognized by cross-check - # intel-10.0beta works fine - # Ignored by PGI-6.2.5 (pgCC) -- recognized by output-parser and cross-check - # Ignored by pathcc-2.2.1 -- recognized by cross-check (through grep ignore) - # - HWLOC_ATTRIBUTE_CFLAGS= - case "$hwloc_c_vendor" in - gnu) - HWLOC_ATTRIBUTE_CFLAGS="-Wall" - ;; - intel) - # we do not want to get ignored attributes warnings - HWLOC_ATTRIBUTE_CFLAGS="-wd1292" - ;; - esac - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([sentinel], - [ - int my_execlp(const char * file, const char *arg, ...) __attribute__ ((__sentinel__)); - ], - [ - static int usage(int * argument); - int my_execlp(const char * file, const char *arg, ...) __attribute__ ((__sentinel__)); - - static int usage(int * argument) { - void * last_arg_should_be_null = argument; - return my_execlp ("lala", "/home/there", last_arg_should_be_null); /* This should produce a warning */ - } - /* The autoconf-generated main-function is int main(), which produces a warning by itself */ - int main(void); - ], - [$HWLOC_ATTRIBUTE_CFLAGS]) - - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([unused], - [ - int square(int arg1 __attribute__ ((__unused__)), int arg2); - int square(int arg1, int arg2) { return arg2; } - ], - [], - []) - - - # - # Attribute warn_unused_result: - # Ignored by the intel-compiler 9.1.045 -- recognized by cross-check - # Ignored by pathcc-2.2.1 -- recognized by cross-check (through grep ignore) - # - HWLOC_ATTRIBUTE_CFLAGS= - case "$hwloc_c_vendor" in - gnu) - HWLOC_ATTRIBUTE_CFLAGS="-Wall" - ;; - intel) - # we do not want to get ignored attributes warnings - HWLOC_ATTRIBUTE_CFLAGS="-wd1292" - ;; - esac - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([warn_unused_result], - [ - int foo(int arg) __attribute__ ((__warn_unused_result__)); - int foo(int arg) { return arg + 3; } - ], - [ - static int usage(int * argument); - int foo(int arg) __attribute__ ((__warn_unused_result__)); - - int foo(int arg) { return arg + 3; } - static int usage(int * argument) { - foo (*argument); /* Should produce an unused result warning */ - return 0; - } - - /* The autoconf-generated main-function is int main(), which produces a warning by itself */ - int main(void); - ], - [$HWLOC_ATTRIBUTE_CFLAGS]) - - - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([weak_alias], - [ - int foo(int arg); - int foo(int arg) { return arg + 3; } - int foo2(int arg) __attribute__ ((__weak__, __alias__("foo"))); - ], - [], - []) - - fi - - # Now that all the values are set, define them - - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_ALIGNED, [$hwloc_cv___attribute__aligned], - [Whether your compiler has __attribute__ aligned or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_ALWAYS_INLINE, [$hwloc_cv___attribute__always_inline], - [Whether your compiler has __attribute__ always_inline or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_COLD, [$hwloc_cv___attribute__cold], - [Whether your compiler has __attribute__ cold or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_CONST, [$hwloc_cv___attribute__const], - [Whether your compiler has __attribute__ const or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_DEPRECATED, [$hwloc_cv___attribute__deprecated], - [Whether your compiler has __attribute__ deprecated or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_FORMAT, [$hwloc_cv___attribute__format], - [Whether your compiler has __attribute__ format or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_HOT, [$hwloc_cv___attribute__hot], - [Whether your compiler has __attribute__ hot or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_MALLOC, [$hwloc_cv___attribute__malloc], - [Whether your compiler has __attribute__ malloc or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_MAY_ALIAS, [$hwloc_cv___attribute__may_alias], - [Whether your compiler has __attribute__ may_alias or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_NO_INSTRUMENT_FUNCTION, [$hwloc_cv___attribute__no_instrument_function], - [Whether your compiler has __attribute__ no_instrument_function or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_NONNULL, [$hwloc_cv___attribute__nonnull], - [Whether your compiler has __attribute__ nonnull or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_NORETURN, [$hwloc_cv___attribute__noreturn], - [Whether your compiler has __attribute__ noreturn or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_PACKED, [$hwloc_cv___attribute__packed], - [Whether your compiler has __attribute__ packed or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_PURE, [$hwloc_cv___attribute__pure], - [Whether your compiler has __attribute__ pure or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_SENTINEL, [$hwloc_cv___attribute__sentinel], - [Whether your compiler has __attribute__ sentinel or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_UNUSED, [$hwloc_cv___attribute__unused], - [Whether your compiler has __attribute__ unused or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_WARN_UNUSED_RESULT, [$hwloc_cv___attribute__warn_unused_result], - [Whether your compiler has __attribute__ warn unused result or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_WEAK_ALIAS, [$hwloc_cv___attribute__weak_alias], - [Whether your compiler has __attribute__ weak alias or not]) -]) - diff --git a/opal/mca/hwloc/hwloc201/hwloc/config/hwloc_check_vendor.m4 b/opal/mca/hwloc/hwloc201/hwloc/config/hwloc_check_vendor.m4 deleted file mode 100644 index 2281113bc64..00000000000 --- a/opal/mca/hwloc/hwloc201/hwloc/config/hwloc_check_vendor.m4 +++ /dev/null @@ -1,246 +0,0 @@ -dnl -*- shell-script -*- -dnl -dnl Copyright © 2004-2005 The Trustees of Indiana University and Indiana -dnl University Research and Technology -dnl Corporation. All rights reserved. -dnl Copyright © 2004-2005 The University of Tennessee and The University -dnl of Tennessee Research Foundation. All rights -dnl reserved. -dnl Copyright © 2004-2005 High Performance Computing Center Stuttgart, -dnl University of Stuttgart. All rights reserved. -dnl Copyright © 2004-2005 The Regents of the University of California. -dnl All rights reserved. -dnl Copyright © 2011 Cisco Systems, Inc. All rights reserved. -dnl Copyright © 2015 Inria. All rights reserved. -dnl $COPYRIGHT$ -dnl -dnl Additional copyrights may follow -dnl -dnl $HEADER$ -dnl - -dnl ------------------------------------------------------------------ -dnl This m4 file originally copied from Open MPI -dnl config/ompi_check_vendor.m4. -dnl ------------------------------------------------------------------ - - -# HWLOC_C_COMPILER_VENDOR(VENDOR_VARIABLE) -# --------------------------------------- -# Set shell variable VENDOR_VARIABLE to the name of the compiler -# vendor for the current C compiler. -# -# See comment for _HWLOC_CHECK_COMPILER_VENDOR for a complete -# list of currently detected compilers. -AC_DEFUN([_HWLOC_C_COMPILER_VENDOR], [ - AC_REQUIRE([AC_PROG_CC]) - - AC_CACHE_CHECK([for the C compiler vendor], - [hwloc_cv_c_compiler_vendor], - [AC_LANG_PUSH(C) - _HWLOC_CHECK_COMPILER_VENDOR([hwloc_cv_c_compiler_vendor]) - AC_LANG_POP(C)]) - - $1="$hwloc_cv_c_compiler_vendor" -]) - - -# workaround to avoid syntax error with Autoconf < 2.68: -m4_ifndef([AC_LANG_DEFINES_PROVIDED], - [m4_define([AC_LANG_DEFINES_PROVIDED])]) - -# HWLOC_IFDEF_IFELSE(symbol, [action-if-defined], -# [action-if-not-defined]) -# ---------------------------------------------- -# Run compiler to determine if preprocessor symbol "symbol" is -# defined by the compiler. -AC_DEFUN([HWLOC_IFDEF_IFELSE], [ - AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED -#ifndef $1 -#error "symbol $1 not defined" -choke me -#endif], [$2], [$3])]) - - -# HWLOC_IF_IFELSE(symbol, [action-if-defined], -# [action-if-not-defined]) -# ---------------------------------------------- -# Run compiler to determine if preprocessor symbol "symbol" is -# defined by the compiler. -AC_DEFUN([HWLOC_IF_IFELSE], [ - AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED -#if !( $1 ) -#error "condition $1 not met" -choke me -#endif], [$2], [$3])]) - - -# _HWLOC_CHECK_COMPILER_VENDOR(VENDOR_VARIABLE) -# -------------------------------------------- -# Set shell variable VENDOR_VARIABLE to the name of the compiler -# vendor for the compiler for the current language. Language must be -# one of C, OBJC, or C++. -# -# thanks to http://predef.sourceforge.net/precomp.html for the list -# of defines to check. -AC_DEFUN([_HWLOC_CHECK_COMPILER_VENDOR], [ - hwloc_check_compiler_vendor_result="unknown" - - # GNU is probably the most common, so check that one as soon as - # possible. Intel and Android pretend to be GNU, so need to - # check Intel and Android before checking for GNU. - - # Android - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([__ANDROID__], - [hwloc_check_compiler_vendor_result="android"])]) - - # Intel - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IF_IFELSE([defined(__INTEL_COMPILER) || defined(__ICC)], - [hwloc_check_compiler_vendor_result="intel"])]) - - # GNU - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([__GNUC__], - [hwloc_check_compiler_vendor_result="gnu"])]) - - # Borland Turbo C - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([__TURBOC__], - [hwloc_check_compiler_vendor_result="borland"])]) - - # Borland C++ - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([__BORLANDC__], - [hwloc_check_compiler_vendor_result="borland"])]) - - # Comeau C++ - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([__COMO__], - [hwloc_check_compiler_vendor_result="comeau"])]) - - # Compaq C/C++ - # OSF part actually not needed anymore but doesn't hurt - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IF_IFELSE([defined(__DECC) || defined(VAXC) || defined(__VAXC)], - [hwloc_check_compiler_vendor_result="compaq"], - [HWLOC_IF_IFELSE([defined(__osf__) && defined(__LANGUAGE_C__)], - [hwloc_check_compiler_vendor_result="compaq"], - [HWLOC_IFDEF_IFELSE([__DECCXX], - [hwloc_check_compiler_vendor_result="compaq"])])])]) - - # Cray C/C++ - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([_CRAYC], - [hwloc_check_compiler_vendor_result="cray"])]) - - # Diab C/C++ - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([__DCC__], - [hwloc_check_compiler_vendor_result="diab"])]) - - # Digital Mars - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IF_IFELSE([defined(__DMC__) || defined(__SC__) || defined(__ZTC__)], - [hwloc_check_compiler_vendor_result="digital mars"])]) - - # HP ANSI C / aC++ - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IF_IFELSE([defined(__HP_cc) || defined(__HP_aCC)], - [hwloc_check_compiler_vendor_result="hp"])]) - - # IBM XL C/C++ - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IF_IFELSE([defined(__xlC__) || defined(__IBMC__) || defined(__IBMCPP__)], - [hwloc_check_compiler_vendor_result="ibm"], - [HWLOC_IF_IFELSE([defined(_AIX) && !defined(__GNUC__)], - [hwloc_check_compiler_vendor_result="ibm"])])]) - - # KAI C++ (rest in peace) - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([__KCC], - [hwloc_check_compiler_vendor_result="kai"])]) - - # LCC - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([__LCC__], - [hwloc_check_compiler_vendor_result="lcc"])]) - - # MetaWare High C/C++ - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([__HIGHC__], - [hwloc_check_compiler_vendor_result="metaware high"])]) - - # Metrowerks Codewarrior - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([__MWERKS__], - [hwloc_check_compiler_vendor_result="metrowerks"])]) - - # MIPSpro (SGI) - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IF_IFELSE([defined(sgi) || defined(__sgi)], - [hwloc_check_compiler_vendor_result="sgi"])]) - - # MPW C++ - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IF_IFELSE([defined(__MRC__) || defined(MPW_C) || defined(MPW_CPLUS)], - [hwloc_check_compiler_vendor_result="mpw"])]) - - # Microsoft - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [# Always use C compiler when checking for Microsoft, as - # Visual C++ doesn't recognize .cc as a C++ file. - AC_LANG_PUSH(C) - HWLOC_IF_IFELSE([defined(_MSC_VER) || defined(__MSC_VER)], - [hwloc_check_compiler_vendor_result="microsoft"]) - AC_LANG_POP(C)]) - - # Norcroft C - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([__CC_NORCROFT], - [hwloc_check_compiler_vendor_result="norcroft"])]) - - # Pelles C - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([__POCC__], - [hwloc_check_compiler_vendor_result="pelles"])]) - - # Portland Group - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([__PGI], - [hwloc_check_compiler_vendor_result="portland group"])]) - - # SAS/C - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IF_IFELSE([defined(SASC) || defined(__SASC) || defined(__SASC__)], - [hwloc_check_compiler_vendor_result="sas"])]) - - # Sun Workshop C/C++ - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IF_IFELSE([defined(__SUNPRO_C) || defined(__SUNPRO_CC)], - [hwloc_check_compiler_vendor_result="sun"])]) - - # TenDRA C/C++ - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([__TenDRA__], - [hwloc_check_compiler_vendor_result="tendra"])]) - - # Tiny C - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([__TINYC__], - [hwloc_check_compiler_vendor_result="tiny"])]) - - # USL C - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([__USLC__], - [hwloc_check_compiler_vendor_result="usl"])]) - - # Watcom C++ - AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"], - [HWLOC_IFDEF_IFELSE([__WATCOMC__], - [hwloc_check_compiler_vendor_result="watcom"])]) - - $1="$hwloc_check_compiler_vendor_result" - unset hwloc_check_compiler_vendor_result -]) diff --git a/opal/mca/hwloc/hwloc201/hwloc/config/hwloc_check_visibility.m4 b/opal/mca/hwloc/hwloc201/hwloc/config/hwloc_check_visibility.m4 deleted file mode 100644 index 885fe3d8df6..00000000000 --- a/opal/mca/hwloc/hwloc201/hwloc/config/hwloc_check_visibility.m4 +++ /dev/null @@ -1,131 +0,0 @@ -# This macro set originally copied from Open MPI: -# Copyright © 2004-2005 The Trustees of Indiana University and Indiana -# University Research and Technology -# Corporation. All rights reserved. -# Copyright © 2004-2005 The University of Tennessee and The University -# of Tennessee Research Foundation. All rights -# reserved. -# Copyright © 2004-2007 High Performance Computing Center Stuttgart, -# University of Stuttgart. All rights reserved. -# Copyright © 2004-2005 The Regents of the University of California. -# All rights reserved. -# Copyright © 2006-2007 Cisco Systems, Inc. All rights reserved. -# and renamed/modified for hwloc: -# Copyright © 2009 Inria. All rights reserved. -# Copyright © 2009-2010 Université Bordeaux -# Copyright © 2010-2012 Cisco Systems, Inc. All rights reserved. -# See COPYING in top-level directory. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# - Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# - Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer listed -# in this license in the documentation and/or other materials -# provided with the distribution. -# -# - Neither the name of the copyright holders nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# The copyright holders provide no reassurances that the source code -# provided does not infringe any patent, copyright, or any other -# intellectual property rights of third parties. The copyright holders -# disclaim any liability to any recipient for claims brought against -# recipient by any third party for infringement of that parties -# intellectual property rights. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -# _HWLOC_CHECK_VISIBILITY -# -------------------------------------------------------- -AC_DEFUN([_HWLOC_CHECK_VISIBILITY],[ - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - m4_ifdef([AC_PROG_GREP], - [AC_REQUIRE([AC_PROG_GREP])], - [GREP=grep]) - - # Check if the compiler has support for visibility, like some - # versions of gcc, icc, Sun Studio cc. - AC_ARG_ENABLE(visibility, - AC_HELP_STRING([--enable-visibility], - [enable visibility feature of certain compilers/linkers (default: enabled on platforms that support it)])) - - case ${target} in - *-*-aix*|*-*-mingw*|*-*-cygwin*|*-*-hpux*) - enable_visibility=no - ;; - esac - - hwloc_visibility_define=0 - hwloc_msg="whether to enable symbol visibility" - if test "$enable_visibility" = "no"; then - AC_MSG_CHECKING([$hwloc_msg]) - AC_MSG_RESULT([no (disabled)]) - else - CFLAGS_orig=$CFLAGS - - hwloc_add= - case "$hwloc_c_vendor" in - sun) - # Check using Sun Studio -xldscope=hidden flag - hwloc_add=-xldscope=hidden - CFLAGS="$CFLAGS_orig $hwloc_add -errwarn=%all" - ;; - - *) - # Check using -fvisibility=hidden - hwloc_add=-fvisibility=hidden - CFLAGS="$CFLAGS_orig $hwloc_add -Werror" - ;; - esac - - AC_MSG_CHECKING([if $CC supports $hwloc_add]) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[ - #include - __attribute__((visibility("default"))) int foo; - ]],[[fprintf(stderr, "Hello, world\n");]])], - [AS_IF([test -s conftest.err], - [$GREP -iq visibility conftest.err - # If we find "visibility" in the stderr, then - # assume it doesn't work - AS_IF([test "$?" = "0"], [hwloc_add=])]) - ], [hwloc_add=]) - AS_IF([test "$hwloc_add" = ""], - [AC_MSG_RESULT([no])], - [AC_MSG_RESULT([yes])]) - - CFLAGS=$CFLAGS_orig - HWLOC_VISIBILITY_CFLAGS=$hwloc_add - - if test "$hwloc_add" != "" ; then - hwloc_visibility_define=1 - AC_MSG_CHECKING([$hwloc_msg]) - AC_MSG_RESULT([yes (via $hwloc_add)]) - elif test "$enable_visibility" = "yes"; then - AC_MSG_ERROR([Symbol visibility support requested but compiler does not seem to support it. Aborting]) - else - AC_MSG_CHECKING([$hwloc_msg]) - AC_MSG_RESULT([no (unsupported)]) - fi - unset hwloc_add - fi - - AC_DEFINE_UNQUOTED([HWLOC_C_HAVE_VISIBILITY], [$hwloc_visibility_define], - [Whether C compiler supports symbol visibility or not]) -]) diff --git a/opal/mca/hwloc/hwloc201/hwloc/config/hwloc_components.m4 b/opal/mca/hwloc/hwloc201/hwloc/config/hwloc_components.m4 deleted file mode 100644 index 7d5c1fa194d..00000000000 --- a/opal/mca/hwloc/hwloc201/hwloc/config/hwloc_components.m4 +++ /dev/null @@ -1,66 +0,0 @@ -# Copyright © 2012 Inria. All rights reserved. -# See COPYING in top-level directory. - - -# HWLOC_PREPARE_FILTER_COMPONENTS -# -# Given a comma-separated list of names, define hwloc__component_maybeplugin=1. -# -# $1 = command-line given list of components to build as plugins -# -AC_DEFUN([HWLOC_PREPARE_FILTER_COMPONENTS], [ - for name in `echo [$1] | sed -e 's/,/ /g'` ; do - str="hwloc_${name}_component_wantplugin=1" - eval $str - done -]) - - -# HWLOC_FILTER_COMPONENTS -# -# For each component in hwloc_components, -# check if hwloc__component_wantplugin=1 or enable_plugin=yes, -# and check if hwloc__component_maybeplugin=1. -# Add to hwloc_[static|plugin]_components accordingly. -# And set hwloc__component=[static|plugin] accordingly. -# -AC_DEFUN([HWLOC_FILTER_COMPONENTS], [ -for name in $hwloc_components ; do - str="maybeplugin=\$hwloc_${name}_component_maybeplugin" - eval $str - str="wantplugin=\$hwloc_${name}_component_wantplugin" - eval $str - if test x$hwloc_have_plugins = xyes && test x$maybeplugin = x1 && test x$wantplugin = x1 -o x$enable_plugins = xyes; then - hwloc_plugin_components="$hwloc_plugin_components $name" - str="hwloc_${name}_component=plugin" - else - hwloc_static_components="$hwloc_static_components $name" - str="hwloc_${name}_component=static" - fi - eval $str -done -]) - - -# HWLOC_LIST_STATIC_COMPONENTS -# -# Append to file $1 an array of components by listing component names in $2. -# -# $1 = filename -# $2 = list of component names -# -AC_DEFUN([HWLOC_LIST_STATIC_COMPONENTS], [ -for comp in [$2]; do - echo "HWLOC_DECLSPEC extern const struct hwloc_component hwloc_${comp}_component;" >>[$1] -done -cat <>[$1] -static const struct hwloc_component * hwloc_static_components[[]] = { -EOF -for comp in [$2]; do - echo " &hwloc_${comp}_component," >>[$1] -done -cat <>[$1] - NULL -}; -EOF -]) diff --git a/opal/mca/hwloc/hwloc201/hwloc/config/hwloc_get_version.sh b/opal/mca/hwloc/hwloc201/hwloc/config/hwloc_get_version.sh deleted file mode 100755 index 74bca537cef..00000000000 --- a/opal/mca/hwloc/hwloc201/hwloc/config/hwloc_get_version.sh +++ /dev/null @@ -1,98 +0,0 @@ -#!/bin/sh -# -# Copyright © 2004-2006 The Trustees of Indiana University and Indiana -# University Research and Technology -# Corporation. All rights reserved. -# Copyright © 2004-2005 The University of Tennessee and The University -# of Tennessee Research Foundation. All rights -# reserved. -# Copyright © 2004-2005 High Performance Computing Center Stuttgart, -# University of Stuttgart. All rights reserved. -# Copyright © 2004-2005 The Regents of the University of California. -# All rights reserved. -# Copyright © 2008-2014 Cisco Systems, Inc. All rights reserved. -# Copyright © 2014 Inria. All rights reserved. -# $COPYRIGHT$ -# -# Additional copyrights may follow -# -# $HEADER$ -# - -srcfile="$1" -option="$2" - -if test -z "$srcfile"; then - option="--help" -else - : ${srcdir=.} - - if test -f "$srcfile"; then - ompi_vers=`sed -n " - t clear - : clear - s/^major/HWLOC_MAJOR_VERSION/ - s/^minor/HWLOC_MINOR_VERSION/ - s/^release/HWLOC_RELEASE_VERSION/ - s/^greek/HWLOC_GREEK_VERSION/ - s/\\\${major}/\\\${HWLOC_MAJOR_VERSION}/ - s/\\\${minor}/\\\${HWLOC_MINOR_VERSION}/ - s/\\\${release}/\\\${HWLOC_RELEASE_VERSION}/ - s/\\\${greek}/\\\${HWLOC_GREEK_VERSION}/ - s/^date/HWLOC_RELEASE_DATE/ - s/^snapshot_version/HWLOC_SNAPSHOT_VERSION/ - s/^snapshot/HWLOC_SNAPSHOT/ - t print - b - : print - p" < "$srcfile"` - eval "$ompi_vers" - - HWLOC_VERSION="$HWLOC_MAJOR_VERSION.$HWLOC_MINOR_VERSION.$HWLOC_RELEASE_VERSION${HWLOC_GREEK_VERSION}" - - # If HWLOC_SNAPSHOT=1, then use HWLOC_SNAPSHOT_VERSION - if test "$HWLOC_SNAPSHOT" = "1"; then - # First, verify that HWLOC_SNAPSHOT_VERSION isn't empty. - if test -z "$HWLOC_SNAPSHOT_VERSION"; then - echo "*** ERROR: $1 contains snapshot=1, but an empty value for snapshot_version" 1>&2 - exit 1 - fi - HWLOC_VERSION=$HWLOC_SNAPSHOT_VERSION - fi - fi - - if test "$option" = ""; then - option="--version" - fi -fi - -case "$option" in - --version) - echo $HWLOC_VERSION - ;; - --release-date) - echo $HWLOC_RELEASE_DATE - ;; - --snapshot) - echo $HWLOC_SNAPSHOT - ;; - -h|--help) - cat <