diff --git a/.gitignore b/.gitignore
index 24b4333af5a4c5e73c10ec7a0b4c201a5cc98e42..dbf40a5ae6a598f12373d0112dfa52990b0a6377 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,593 +1,591 @@
-.libs
-.deps
-.libs
-.dirstamp
-.DS_Store
-.cdt*
-.project
-.gdb*
-.idea
-
-*.la
-*.lo
-*.o
-*.so
-*.a
-*.dwarf
-*.dSYM
-*.S
-*.loT
-*.orig
-*.rej
-*.bak
-*.class
-*.xcscheme
-*.out
-*.plist
-*.orig
-*.obj
-*.mod
-*.i90
-*.ii
-*.ti
-*.exe
-*.log
-*.trs
-*.sapp
-*~
-*\\#
-
-Makefile
-Makefile.in
-
-# hwloc and pmix have been de-modularized, but still uses parts of the
-# MCA system due to the amount of glue code that ended up in the
-# framework base. Until that is cleaned up, do not ignore the
-# hard-coded static-components.h file.
-static-components.h
-!opal/mca/hwloc/base/static-components.h
-!opal/mca/pmix/base/static-components.h
-
-*\\#
-config.cache
-aclocal.m4
-autom4te.cache
-config.log
-config.status
-configure
-libtool
-doxygen
-bin
-lib
-cscope.*
-etags
-GRTAGS
-GSYMS
-GTAGS
-GPATH
-vc70.pdb
-.hgrc
-.hgignore
-.hg
-.hgignore_local
-stamp-h?
-AUTHORS
-
-ar-lib
-ylwrap
-config.lt
-config.guess
-config.sub
-depcomp
-compile
-install-sh
-ltmain.sh
-missing
-mkinstalldirs
-libtool.m4
-lt~obsolete.m4
-ltdl.m4
-argz.m4
-ltargz.m4
-ltsugar.m4
-ltversion.m4
-ltoptions.m4
-
-# Libevent and hwloc are included as a tarball. Ignore any expanded
-# tarballs, since they are not included in git. Do not ignore the
-# tarballs themselves, and those are artifacts we will store in git.
-3rd-party/libevent-*
-!3rd-party/libevent-*.tar.*
-3rd-party/hwloc-*
-!3rd-party/hwloc-*.tar.*
-3rd-party/treematch/config.h
-
-3rd-party/romio341/adio/include/romioconf.h
-3rd-party/romio341/adio/include/romioconf.h.in
-3rd-party/romio341/include/mpio.h
-3rd-party/romio341/localdefs
-3rd-party/romio341/mpl/confdb/test-driver
-3rd-party/romio341/mpl/include/config.h
-3rd-party/romio341/mpl/include/config.h.in
-3rd-party/romio341/mpl/include/mplconfig.h
-3rd-party/romio341/mpl/include/mpl_timer.h
-3rd-party/romio341/mpl/localdefs
-3rd-party/romio341/test/runtests
-3rd-party/romio341/test/fcoll_test.f
-3rd-party/romio341/test/fmisc.f
-3rd-party/romio341/test/fperf.f
-3rd-party/romio341/test/large_file.c
-3rd-party/romio341/test/misc.c
-3rd-party/romio341/test/pfcoll_test.f
-3rd-party/romio341/util/romioinstall
-
-config/project_list.m4
-config/autogen_found_items.m4
-config/opal_get_version.sh
-config/test-driver
-config/mca_no_configure_components.m4
-config/mca_m4_config_include.m4
-config/ext_no_configure_components.m4
-config/ext_m4_config_include.m4
-config/auto-extracted-pmix-configure-args.m4
-config/auto-extracted-prrte-configure-args.m4
-config/auto-generated-ompi-exclude.ini
-
-contrib/build-mca-comps-outside-of-tree/btl_tcp2_config.h
-contrib/build-mca-comps-outside-of-tree/btl_tcp2_config.h.in
-contrib/build-mca-comps-outside-of-tree/config
-contrib/build-mca-comps-outside-of-tree/aclocal.m4
-contrib/dist/linux/compile_debian_mlnx_example
-contrib/dist/mofed/compile_debian_mlnx_example
-contrib/dist/mofed/debian/changelog
-contrib/dist/mofed/debian/control
-contrib/dist/mofed/debian/copyright
-contrib/dist/mofed/debian/rules
-contrib/platform/intel/bend/*orcm*
-contrib/scaling/orte_no_op
-contrib/scaling/mpi_no_op
-contrib/scaling/mpi_barrier
-contrib/scaling/mpi_memprobe
-
-examples/hello_c
-examples/hello_cxx
-examples/hello_mpifh
-examples/hello_usempi
-examples/hello_usempif08
-examples/ring_c
-examples/ring_cxx
-examples/ring_mpifh
-examples/ring_usempi
-examples/ring_usempif08
-examples/connectivity_c
-examples/ring_oshmem
-examples/hello_oshmem
-examples/ring_oshmemfh
-examples/hello_oshmemfh
-examples/hello_oshmemcxx
-examples/oshmem_circular_shift
-examples/oshmem_max_reduction
-examples/oshmem_shmalloc
-examples/oshmem_strided_puts
-examples/oshmem_symmetric_data
-examples/spc_example
-
-ompi/debuggers/*.in
-ompi/debuggers/dlopen_test
-ompi/debuggers/predefined_gap_test
-ompi/debuggers/predefined_pad_test
-
-ompi/include/mpi.h
-ompi/include/mpif-config.h
-ompi/include/mpif.h
-ompi/include/mpif-c-constants-decl.h
-ompi/include/mpif-c-constants.h
-ompi/include/mpif-common.h
-ompi/include/mpi-ext.h
-ompi/include/mpif-ext.h
-ompi/include/mpif-f08-types.h
-ompi/include/mpif-handles.h
-ompi/include/mpif-io-constants.h
-ompi/include/mpif-constants.h
-ompi/include/mpif-io-handles.h
-ompi/include/mpif-sizeof.h
-ompi/include/mpi_portable_platform.h
-ompi/include/ompi/version.h
-ompi/include/ompi/frameworks.h
-
-ompi/mca/coll/basic/coll-basic-version.h*
-ompi/mca/coll/demo/config
-ompi/mca/coll/demo/coll_demo_config.h*
-ompi/mca/coll/demo/coll-demo-version.h*
-ompi/mca/coll/ml/coll_ml_lex.c
-ompi/mca/coll/self/coll-self-version.h*
-ompi/mca/coll/sm/coll-sm-version.h*
-
-ompi/mca/osc/monitoring/osc_monitoring_template_gen.h
-
-ompi/mca/pml/v/autogen.vprotocols
-ompi/mca/pml/v/mca_vprotocol_config_output
-
-ompi/mca/sharedfp/addproc/mca_sharedfp_addproc_control
-
-ompi/mca/topo/treematch/config.h
-
-ompi/mpi/c/profile/p*.c
-
-ompi/mpi/fortran/configure-fortran-output.h
-ompi/mpi/fortran/mpiext/mpi-ext-module.F90
-ompi/mpi/fortran/mpiext/mpi-f08-ext-module.F90
-ompi/mpi/fortran/mpiext-use-mpi/mpi-ext-module.F90
-ompi/mpi/fortran/mpiext-use-mpi-f08/mpi-f08-ext-module.F90
-
-ompi/mpi/fortran/mpif-h/sizeof_f.f90
-ompi/mpi/fortran/mpif-h/profile/p*.c
-ompi/mpi/fortran/mpif-h/profile/psizeof_f.f90
-
-ompi/mpi/fortran/use-mpi/mpi-types.F90
-
-ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-constants.h
-ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-interfaces.h
-ompi/mpi/fortran/use-mpi-f08/sizeof_f08.f90
-ompi/mpi/fortran/use-mpi-f08/sizeof_f08.h
-ompi/mpi/fortran/use-mpi-f08/profile/psizeof_f08.f90
-ompi/mpi/fortran/use-mpi-f08/profile/*.F90
-
-ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-interfaces.h
-ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h
-ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-sizeof.f90
-ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-sizeof.h
-ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-removed-interfaces.h
-
-ompi/mpi/fortran/use-mpi-tkr/fortran_kinds.sh
-ompi/mpi/fortran/use-mpi-tkr/fortran_sizes.h
-ompi/mpi/fortran/use-mpi-tkr/mpi_kinds.ompi_module
-ompi/mpi/fortran/use-mpi-tkr/mpi-tkr-sizeof.f90
-ompi/mpi/fortran/use-mpi-tkr/mpi-tkr-sizeof.h
-
-ompi/mpi/java/java/mpi
-ompi/mpi/java/java/*.jar
-ompi/mpi/java/java/*.h
-ompi/mpi/java/java/doc
-
-ompi/mpi/tool/profile/*.c
-
-ompi/mpiext/affinity/c/example
-
-ompi/mpiext/ftmpi/c/profile/pcomm_agree.c
-ompi/mpiext/ftmpi/c/profile/pcomm_failure_ack.c
-ompi/mpiext/ftmpi/c/profile/pcomm_failure_get_acked.c
-ompi/mpiext/ftmpi/c/profile/pcomm_iagree.c
-ompi/mpiext/ftmpi/c/profile/pcomm_is_revoked.c
-ompi/mpiext/ftmpi/c/profile/pcomm_revoke.c
-ompi/mpiext/ftmpi/c/profile/pcomm_shrink.c
-ompi/mpiext/ftmpi/c/profile/pcomm_ack_failed.c
-ompi/mpiext/ftmpi/c/profile/pcomm_get_failed.c
-ompi/mpiext/ftmpi/c/profile/pcomm_ishrink.c
-
-ompi/mpiext/example/tests/progress_c
-ompi/mpiext/example/tests/progress_mpifh
-ompi/mpiext/example/tests/progress_usempi
-ompi/mpiext/example/tests/progress_usempif08
-
-ompi/mpiext/cuda/c/mpiext_cuda_c.h
-ompi/mpiext/cuda/c/cuda_c.h
-ompi/mpiext/rocm/c/mpiext_rocm_c.h
-
-ompi/mpiext/pcollreq/c/MPIX_*.3
-ompi/mpiext/pcollreq/c/profile/pallgather_init.c
-ompi/mpiext/pcollreq/c/profile/pallgatherv_init.c
-ompi/mpiext/pcollreq/c/profile/pallreduce_init.c
-ompi/mpiext/pcollreq/c/profile/palltoall_init.c
-ompi/mpiext/pcollreq/c/profile/palltoallv_init.c
-ompi/mpiext/pcollreq/c/profile/palltoallw_init.c
-ompi/mpiext/pcollreq/c/profile/pbarrier_init.c
-ompi/mpiext/pcollreq/c/profile/pbcast_init.c
-ompi/mpiext/pcollreq/c/profile/pexscan_init.c
-ompi/mpiext/pcollreq/c/profile/pgather_init.c
-ompi/mpiext/pcollreq/c/profile/pgatherv_init.c
-ompi/mpiext/pcollreq/c/profile/pmpiext_pcollreq_c.h
-ompi/mpiext/pcollreq/c/profile/pneighbor_allgather_init.c
-ompi/mpiext/pcollreq/c/profile/pneighbor_allgatherv_init.c
-ompi/mpiext/pcollreq/c/profile/pneighbor_alltoall_init.c
-ompi/mpiext/pcollreq/c/profile/pneighbor_alltoallv_init.c
-ompi/mpiext/pcollreq/c/profile/pneighbor_alltoallw_init.c
-ompi/mpiext/pcollreq/c/profile/preduce_init.c
-ompi/mpiext/pcollreq/c/profile/preduce_scatter_block_init.c
-ompi/mpiext/pcollreq/c/profile/preduce_scatter_init.c
-ompi/mpiext/pcollreq/c/profile/pscan_init.c
-ompi/mpiext/pcollreq/c/profile/pscatter_init.c
-ompi/mpiext/pcollreq/c/profile/pscatterv_init.c
-ompi/mpiext/pcollreq/c/profile/ppcollreq_c.h
-
-ompi/mpiext/pcollreq/mpif-h/profile/pallgather_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/pallgatherv_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/pallreduce_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/palltoall_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/palltoallv_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/palltoallw_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/pbarrier_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/pbcast_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/pexscan_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/pgather_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/pgatherv_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_allgather_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_allgatherv_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoall_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoallv_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoallw_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/preduce_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/preduce_scatter_block_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/preduce_scatter_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/pscan_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/pscatter_init_f.c
-ompi/mpiext/pcollreq/mpif-h/profile/pscatterv_init_f.c
-
-ompi/mpiext/shortfloat/c/mpiext_shortfloat_c.h
-ompi/mpiext/shortfloat/mpif-h/mpiext_shortfloat_mpifh.h
-ompi/mpiext/shortfloat/use-mpi-f08/mpiext_shortfloat_usempif08.h
-
-ompi/tools/mpisync/mpisync
-ompi/tools/mpisync/mpirun_prof
-ompi/tools/mpisync/ompi_timing_post
-ompi/tools/mpirun/mpirun
-
-ompi/tools/ompi_info/ompi_info
-
-ompi/tools/wrappers/mpic++-wrapper-data.txt
-ompi/tools/wrappers/mpicc-wrapper-data.txt
-ompi/tools/wrappers/mpifort-wrapper-data.txt
-ompi/tools/wrappers/ompi_wrapper_script
-ompi/tools/wrappers/ompi.pc
-ompi/tools/wrappers/ompi-c.pc
-ompi/tools/wrappers/ompi-cxx.pc
-ompi/tools/wrappers/ompi-fort.pc
-ompi/tools/wrappers/mpijavac.pl
-ompi/tools/wrappers/mpicxx-wrapper-data.txt
-ompi/tools/wrappers/mpif77-wrapper-data.txt
-ompi/tools/wrappers/mpif90-wrapper-data.txt
-
-opal/asm/atomic-asm.S
-opal/asm/atomic-test
-opal/asm/generated/atomic-*.s
-
-opal/include/opal_config.h
-opal/include/opal_config.h.in
-opal/include/opal/install_dirs.h
-opal/include/opal/version.h
-opal/include/opal/frameworks.h
-opal/include/opal/sys/powerpc/atomic-32.s
-opal/include/opal/sys/powerpc/atomic-64.s
-opal/include/opal/sys/powerpc/atomic-32-64.s
-
-opal/mca/base/mca_base_parse_paramfile_lex.c
-
-opal/mca/btl/usnic/usnic_btl_run_tests
-
-opal/mca/event/libevent*/libevent/config.h.in
-opal/mca/event/libevent*/libevent/config.h
-opal/mca/event/libevent*/libevent/libevent.pc
-opal/mca/event/libevent*/libevent/libevent_openssl.pc
-opal/mca/event/libevent*/libevent/libevent_pthreads.pc
-opal/mca/event/libevent*/libevent/include/event2/event-config.h
-
-opal/mca/installdirs/config/install_dirs.h
-
-opal/tools/wrappers/opalcc-wrapper-data.txt
-opal/tools/wrappers/opalc++-wrapper-data.txt
-opal/tools/wrappers/opalCC-wrapper-data.txt
-opal/tools/wrappers/opal_wrapper
-opal/tools/wrappers/opal.pc
-
-opal/util/show_help_lex.c
-opal/util/keyval/keyval_lex.c
-
-test/simple/abort
-test/simple/accept
-test/simple/attach
-test/simple/bad_exit
-test/simple/bcast_loop
-test/simple/binding
-test/simple/concurrent_spawn
-test/simple/connect
-test/simple/crisscross
-test/simple/delayed_abort
-test/simple/hello_barrier
-test/simple/hello_nodename
-test/simple/hello_output
-test/simple/hello_show_help
-test/simple/hello
-test/simple/hello++
-test/simple/intercomm1
-test/simple/interlib
-test/simple/loop_child
-test/simple/loop_spawn
-test/simple/mpi_barrier
-test/simple/mpi_no_op
-test/simple/mpi_spin
-test/simple/multi_abort
-test/simple/parallel_r8
-test/simple/parallel_r64
-test/simple/parallel_w8
-test/simple/parallel_w64
-test/simple/pinterlib
-test/simple/pmix
-test/simple/pubsub
-test/simple/read_write
-test/simple/reduce-hang
-test/simple/ring
-test/simple/segv
-test/simple/simple_spawn
-test/simple/slave
-test/simple/spawn_multiple
-test/simple/xlib
-test/simple/ziaprobe
-test/simple/ziatest
-test/simple/*.dwarf
-test/simple/junk*
-test/simple/sio
-test/simple/sendrecv_blaster
-test/simple/early_abort
-test/simple/spawn_problem/ch_rec
-test/simple/spawn_problem/output
-test/simple/spawn_problem/start
-test/simple/debugger
-test/simple/server_port_name.txt
-test/simple/singleton_client_server
-test/simple/intercomm_create
-test/simple/spawn_tree
-test/simple/init-exit77
-test/simple/mpi_info
-test/simple/info_spawn
-test/simple/client
-test/simple/server
-test/simple/paccept
-test/simple/pconnect
-test/simple/thread_init
-test/simple/memcached-dummy
-test/simple/coll_test
-test/simple/badcoll
-test/simple/iof
-test/simple/no-disconnect
-test/simple/nonzero
-test/simple/add_host
-
-oshmem/include/shmem.h
-oshmem/include/shmem_portable_platform.h
-oshmem/include/oshmem/frameworks.h
-oshmem/include/oshmem/version.h
-
-oshmem/mca/sshmem/base/static-components.h
-
-oshmem/shmem/c/profile/p*.c
-oshmem/shmem/c/profile/*.c
-
-oshmem/shmem/fortran/libshmem_fortran.la
-oshmem/shmem/fortran/profile/pshmem_*_f.c
-oshmem/shmem/fortran/profile/pshpdeallc_f.c
-oshmem/shmem/fortran/profile/pshpclmove_f.c
-oshmem/shmem/fortran/profile/pmy_pe_f.c
-oshmem/shmem/fortran/profile/pshpalloc_f.c
-oshmem/shmem/fortran/profile/pnum_pes_f.c
-oshmem/shmem/fortran/profile/pstart_pes_f.c
-
-oshmem/tools/oshmem_info/oshmem_info
-
-oshmem/tools/wrappers/oshmem-c.pc
-oshmem/tools/wrappers/oshmem-cxx.pc
-oshmem/tools/wrappers/oshmem-fort.pc
-oshmem/tools/wrappers/oshmem.pc
-oshmem/tools/wrappers/shmemcc-wrapper-data.txt
-oshmem/tools/wrappers/shmemfort-wrapper-data.txt
-oshmem/tools/wrappers/shmemc++-wrapper-data.txt
-
-test/asm/atomic_math_noinline
-test/asm/atomic_barrier
-test/asm/atomic_cmpset_noinline
-test/asm/atomic_math
-test/asm/atomic_cmpset
-test/asm/atomic_spinlock_noinline.c
-test/asm/atomic_barrier_noinline.c
-test/asm/atomic_math_noinline.c
-test/asm/atomic_cmpset_noinline.c
-test/asm/atomic_spinlock_noinline
-test/asm/atomic_barrier_noinline
-test/asm/atomic_spinlock
-
-test/class/*.txt
-test/class/ompi_bitmap_test_out.txt
-test/class/ompi_circular_buffer_fifo
-test/class/ompi_fifo
-test/class/ompi_rb_tree
-test/class/ompi_bitmap
-test/class/opal_bitmap
-test/class/opal_fifo
-test/class/opal_cstring
-test/class/opal_hash_table
-test/class/opal_lifo
-test/class/opal_list
-test/class/opal_pointer_array
-test/class/opal_proc_table
-test/class/opal_tree
-test/class/opal_value_array
-
-test/datatype/ddt_test
-test/datatype/ddt_pack
-test/datatype/external32
-test/datatype/to_self
-test/datatype/checksum
-test/datatype/position
-test/datatype/ddt_raw
-test/datatype/opal_datatype_test
-test/datatype/position_noncontig
-test/datatype/unpack_ooo
-test/datatype/unpack_hetero
-
-test/event/signal-test
-test/event/event-test
-test/event/time-test
-
-test/monitoring/monitoring_test
-test/monitoring/check_monitoring
-test/monitoring/example_reduce_count
-test/monitoring/test_overhead
-test/monitoring/test_pvar_access
-
-test/mpi/environment/chello
-
-test/runtime/parse_context
-test/runtime/sigchld
-test/runtime/start_shut
-test/runtime/opal_init_finalize
-test/runtime/orte_init_finalize
-
-test/spc/spc_test
-
-test/threads/opal_condition
-test/threads/opal_thread
-
-test/util/aaa
-test/util/test_session_dir_out
-test/util/opal_os_path
-test/util/opal_argv
-test/util/opal_os_create_dirpath
-test/util/opal_if
-test/util/opal_error
-test/util/opal_timer
-test/util/orte_sys_info
-test/util/orte_session_dir
-test/util/orte_sys_info
-test/util/orte_universe_setup_file_io
-test/util/opal_basename
-test/util/ompi_numtostr
-test/util/ompi_pack
-test/util/test-file
-test/util/opal_sos
-test/util/opal_path_nfs
-test/util/opal_path_nfs.out
-test/util/opal_bit_ops
-test/util/bipartite_graph
-test/util/opal_sha256
-
-opal/test/reachable/reachable_netlink
-opal/test/reachable/reachable_weighted
-opal/mca/threads/argobots/threads_argobots.h
-opal/mca/threads/qthreads/threads_qthreads.h
-
-docs/_build
-docs/_static
-docs/_static/css/custom.css
-docs/_templates
-
-# Common Python virtual environment directory names
-venv
-py??
-
-# Copies of PRRTE RST files (i.e., not source controlled in this tree)
-docs/prrte-rst-content
-docs/schizo-ompi-rst-content
-
-# Copies of the built HTML docs and man pages (for distribution
-# tarballs)
-docs/html
-docs/man
+.libs
+.deps
+.libs
+.dirstamp
+.DS_Store
+.cdt*
+.project
+.gdb*
+.idea
+
+*.la
+*.lo
+*.o
+*.so
+*.a
+*.dwarf
+*.dSYM
+*.S
+*.loT
+*.orig
+*.rej
+*.bak
+*.class
+*.xcscheme
+*.out
+*.plist
+*.orig
+*.obj
+*.mod
+*.i90
+*.ii
+*.ti
+*.exe
+*.log
+*.trs
+*.sapp
+*~
+*\\#
+
+Makefile
+Makefile.in
+
+# hwloc and pmix have been de-modularized, but still uses parts of the
+# MCA system due to the amount of glue code that ended up in the
+# framework base. Until that is cleaned up, do not ignore the
+# hard-coded static-components.h file.
+static-components.h
+!opal/mca/hwloc/base/static-components.h
+!opal/mca/pmix/base/static-components.h
+
+*\\#
+config.cache
+aclocal.m4
+autom4te.cache
+config.log
+config.status
+configure
+libtool
+doxygen
+bin
+lib
+cscope.*
+etags
+GRTAGS
+GSYMS
+GTAGS
+GPATH
+vc70.pdb
+.hgrc
+.hgignore
+.hg
+.hgignore_local
+stamp-h?
+AUTHORS
+
+ar-lib
+ylwrap
+config.lt
+config.guess
+config.sub
+depcomp
+compile
+install-sh
+ltmain.sh
+missing
+mkinstalldirs
+libtool.m4
+lt~obsolete.m4
+ltdl.m4
+argz.m4
+ltargz.m4
+ltsugar.m4
+ltversion.m4
+ltoptions.m4
+
+# Libevent and hwloc are included as a tarball. Ignore any expanded
+# tarballs, since they are not included in git. Do not ignore the
+# tarballs themselves, and those are artifacts we will store in git.
+3rd-party/libevent-*
+!3rd-party/libevent-*.tar.*
+3rd-party/treematch/config.h
+
+3rd-party/romio341/adio/include/romioconf.h
+3rd-party/romio341/adio/include/romioconf.h.in
+3rd-party/romio341/include/mpio.h
+3rd-party/romio341/localdefs
+3rd-party/romio341/mpl/confdb/test-driver
+3rd-party/romio341/mpl/include/config.h
+3rd-party/romio341/mpl/include/config.h.in
+3rd-party/romio341/mpl/include/mplconfig.h
+3rd-party/romio341/mpl/include/mpl_timer.h
+3rd-party/romio341/mpl/localdefs
+3rd-party/romio341/test/runtests
+3rd-party/romio341/test/fcoll_test.f
+3rd-party/romio341/test/fmisc.f
+3rd-party/romio341/test/fperf.f
+3rd-party/romio341/test/large_file.c
+3rd-party/romio341/test/misc.c
+3rd-party/romio341/test/pfcoll_test.f
+3rd-party/romio341/util/romioinstall
+
+config/project_list.m4
+config/autogen_found_items.m4
+config/opal_get_version.sh
+config/test-driver
+config/mca_no_configure_components.m4
+config/mca_m4_config_include.m4
+config/ext_no_configure_components.m4
+config/ext_m4_config_include.m4
+config/auto-extracted-pmix-configure-args.m4
+config/auto-extracted-prrte-configure-args.m4
+config/auto-generated-ompi-exclude.ini
+
+contrib/build-mca-comps-outside-of-tree/btl_tcp2_config.h
+contrib/build-mca-comps-outside-of-tree/btl_tcp2_config.h.in
+contrib/build-mca-comps-outside-of-tree/config
+contrib/build-mca-comps-outside-of-tree/aclocal.m4
+contrib/dist/linux/compile_debian_mlnx_example
+contrib/dist/mofed/compile_debian_mlnx_example
+contrib/dist/mofed/debian/changelog
+contrib/dist/mofed/debian/control
+contrib/dist/mofed/debian/copyright
+contrib/dist/mofed/debian/rules
+contrib/platform/intel/bend/*orcm*
+contrib/scaling/orte_no_op
+contrib/scaling/mpi_no_op
+contrib/scaling/mpi_barrier
+contrib/scaling/mpi_memprobe
+
+examples/hello_c
+examples/hello_cxx
+examples/hello_mpifh
+examples/hello_usempi
+examples/hello_usempif08
+examples/ring_c
+examples/ring_cxx
+examples/ring_mpifh
+examples/ring_usempi
+examples/ring_usempif08
+examples/connectivity_c
+examples/ring_oshmem
+examples/hello_oshmem
+examples/ring_oshmemfh
+examples/hello_oshmemfh
+examples/hello_oshmemcxx
+examples/oshmem_circular_shift
+examples/oshmem_max_reduction
+examples/oshmem_shmalloc
+examples/oshmem_strided_puts
+examples/oshmem_symmetric_data
+examples/spc_example
+
+ompi/debuggers/*.in
+ompi/debuggers/dlopen_test
+ompi/debuggers/predefined_gap_test
+ompi/debuggers/predefined_pad_test
+
+ompi/include/mpi.h
+ompi/include/mpif-config.h
+ompi/include/mpif.h
+ompi/include/mpif-c-constants-decl.h
+ompi/include/mpif-c-constants.h
+ompi/include/mpif-common.h
+ompi/include/mpi-ext.h
+ompi/include/mpif-ext.h
+ompi/include/mpif-f08-types.h
+ompi/include/mpif-handles.h
+ompi/include/mpif-io-constants.h
+ompi/include/mpif-constants.h
+ompi/include/mpif-io-handles.h
+ompi/include/mpif-sizeof.h
+ompi/include/mpi_portable_platform.h
+ompi/include/ompi/version.h
+ompi/include/ompi/frameworks.h
+
+ompi/mca/coll/basic/coll-basic-version.h*
+ompi/mca/coll/demo/config
+ompi/mca/coll/demo/coll_demo_config.h*
+ompi/mca/coll/demo/coll-demo-version.h*
+ompi/mca/coll/ml/coll_ml_lex.c
+ompi/mca/coll/self/coll-self-version.h*
+ompi/mca/coll/sm/coll-sm-version.h*
+
+ompi/mca/osc/monitoring/osc_monitoring_template_gen.h
+
+ompi/mca/pml/v/autogen.vprotocols
+ompi/mca/pml/v/mca_vprotocol_config_output
+
+ompi/mca/sharedfp/addproc/mca_sharedfp_addproc_control
+
+ompi/mca/topo/treematch/config.h
+
+ompi/mpi/c/profile/p*.c
+
+ompi/mpi/fortran/configure-fortran-output.h
+ompi/mpi/fortran/mpiext/mpi-ext-module.F90
+ompi/mpi/fortran/mpiext/mpi-f08-ext-module.F90
+ompi/mpi/fortran/mpiext-use-mpi/mpi-ext-module.F90
+ompi/mpi/fortran/mpiext-use-mpi-f08/mpi-f08-ext-module.F90
+
+ompi/mpi/fortran/mpif-h/sizeof_f.f90
+ompi/mpi/fortran/mpif-h/profile/p*.c
+ompi/mpi/fortran/mpif-h/profile/psizeof_f.f90
+
+ompi/mpi/fortran/use-mpi/mpi-types.F90
+
+ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-constants.h
+ompi/mpi/fortran/use-mpi-f08/mod/mpi-f08-interfaces.h
+ompi/mpi/fortran/use-mpi-f08/sizeof_f08.f90
+ompi/mpi/fortran/use-mpi-f08/sizeof_f08.h
+ompi/mpi/fortran/use-mpi-f08/profile/psizeof_f08.f90
+ompi/mpi/fortran/use-mpi-f08/profile/*.F90
+
+ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-interfaces.h
+ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h
+ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-sizeof.f90
+ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-sizeof.h
+ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-removed-interfaces.h
+
+ompi/mpi/fortran/use-mpi-tkr/fortran_kinds.sh
+ompi/mpi/fortran/use-mpi-tkr/fortran_sizes.h
+ompi/mpi/fortran/use-mpi-tkr/mpi_kinds.ompi_module
+ompi/mpi/fortran/use-mpi-tkr/mpi-tkr-sizeof.f90
+ompi/mpi/fortran/use-mpi-tkr/mpi-tkr-sizeof.h
+
+ompi/mpi/java/java/mpi
+ompi/mpi/java/java/*.jar
+ompi/mpi/java/java/*.h
+ompi/mpi/java/java/doc
+
+ompi/mpi/tool/profile/*.c
+
+ompi/mpiext/affinity/c/example
+
+ompi/mpiext/ftmpi/c/profile/pcomm_agree.c
+ompi/mpiext/ftmpi/c/profile/pcomm_failure_ack.c
+ompi/mpiext/ftmpi/c/profile/pcomm_failure_get_acked.c
+ompi/mpiext/ftmpi/c/profile/pcomm_iagree.c
+ompi/mpiext/ftmpi/c/profile/pcomm_is_revoked.c
+ompi/mpiext/ftmpi/c/profile/pcomm_revoke.c
+ompi/mpiext/ftmpi/c/profile/pcomm_shrink.c
+ompi/mpiext/ftmpi/c/profile/pcomm_ack_failed.c
+ompi/mpiext/ftmpi/c/profile/pcomm_get_failed.c
+ompi/mpiext/ftmpi/c/profile/pcomm_ishrink.c
+
+ompi/mpiext/example/tests/progress_c
+ompi/mpiext/example/tests/progress_mpifh
+ompi/mpiext/example/tests/progress_usempi
+ompi/mpiext/example/tests/progress_usempif08
+
+ompi/mpiext/cuda/c/mpiext_cuda_c.h
+ompi/mpiext/cuda/c/cuda_c.h
+ompi/mpiext/rocm/c/mpiext_rocm_c.h
+
+ompi/mpiext/pcollreq/c/MPIX_*.3
+ompi/mpiext/pcollreq/c/profile/pallgather_init.c
+ompi/mpiext/pcollreq/c/profile/pallgatherv_init.c
+ompi/mpiext/pcollreq/c/profile/pallreduce_init.c
+ompi/mpiext/pcollreq/c/profile/palltoall_init.c
+ompi/mpiext/pcollreq/c/profile/palltoallv_init.c
+ompi/mpiext/pcollreq/c/profile/palltoallw_init.c
+ompi/mpiext/pcollreq/c/profile/pbarrier_init.c
+ompi/mpiext/pcollreq/c/profile/pbcast_init.c
+ompi/mpiext/pcollreq/c/profile/pexscan_init.c
+ompi/mpiext/pcollreq/c/profile/pgather_init.c
+ompi/mpiext/pcollreq/c/profile/pgatherv_init.c
+ompi/mpiext/pcollreq/c/profile/pmpiext_pcollreq_c.h
+ompi/mpiext/pcollreq/c/profile/pneighbor_allgather_init.c
+ompi/mpiext/pcollreq/c/profile/pneighbor_allgatherv_init.c
+ompi/mpiext/pcollreq/c/profile/pneighbor_alltoall_init.c
+ompi/mpiext/pcollreq/c/profile/pneighbor_alltoallv_init.c
+ompi/mpiext/pcollreq/c/profile/pneighbor_alltoallw_init.c
+ompi/mpiext/pcollreq/c/profile/preduce_init.c
+ompi/mpiext/pcollreq/c/profile/preduce_scatter_block_init.c
+ompi/mpiext/pcollreq/c/profile/preduce_scatter_init.c
+ompi/mpiext/pcollreq/c/profile/pscan_init.c
+ompi/mpiext/pcollreq/c/profile/pscatter_init.c
+ompi/mpiext/pcollreq/c/profile/pscatterv_init.c
+ompi/mpiext/pcollreq/c/profile/ppcollreq_c.h
+
+ompi/mpiext/pcollreq/mpif-h/profile/pallgather_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/pallgatherv_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/pallreduce_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/palltoall_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/palltoallv_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/palltoallw_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/pbarrier_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/pbcast_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/pexscan_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/pgather_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/pgatherv_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_allgather_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_allgatherv_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoall_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoallv_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/pneighbor_alltoallw_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/preduce_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/preduce_scatter_block_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/preduce_scatter_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/pscan_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/pscatter_init_f.c
+ompi/mpiext/pcollreq/mpif-h/profile/pscatterv_init_f.c
+
+ompi/mpiext/shortfloat/c/mpiext_shortfloat_c.h
+ompi/mpiext/shortfloat/mpif-h/mpiext_shortfloat_mpifh.h
+ompi/mpiext/shortfloat/use-mpi-f08/mpiext_shortfloat_usempif08.h
+
+ompi/tools/mpisync/mpisync
+ompi/tools/mpisync/mpirun_prof
+ompi/tools/mpisync/ompi_timing_post
+ompi/tools/mpirun/mpirun
+
+ompi/tools/ompi_info/ompi_info
+
+ompi/tools/wrappers/mpic++-wrapper-data.txt
+ompi/tools/wrappers/mpicc-wrapper-data.txt
+ompi/tools/wrappers/mpifort-wrapper-data.txt
+ompi/tools/wrappers/ompi_wrapper_script
+ompi/tools/wrappers/ompi.pc
+ompi/tools/wrappers/ompi-c.pc
+ompi/tools/wrappers/ompi-cxx.pc
+ompi/tools/wrappers/ompi-fort.pc
+ompi/tools/wrappers/mpijavac.pl
+ompi/tools/wrappers/mpicxx-wrapper-data.txt
+ompi/tools/wrappers/mpif77-wrapper-data.txt
+ompi/tools/wrappers/mpif90-wrapper-data.txt
+
+opal/asm/atomic-asm.S
+opal/asm/atomic-test
+opal/asm/generated/atomic-*.s
+
+opal/include/opal_config.h
+opal/include/opal_config.h.in
+opal/include/opal/install_dirs.h
+opal/include/opal/version.h
+opal/include/opal/frameworks.h
+opal/include/opal/sys/powerpc/atomic-32.s
+opal/include/opal/sys/powerpc/atomic-64.s
+opal/include/opal/sys/powerpc/atomic-32-64.s
+
+opal/mca/base/mca_base_parse_paramfile_lex.c
+
+opal/mca/btl/usnic/usnic_btl_run_tests
+
+opal/mca/event/libevent*/libevent/config.h.in
+opal/mca/event/libevent*/libevent/config.h
+opal/mca/event/libevent*/libevent/libevent.pc
+opal/mca/event/libevent*/libevent/libevent_openssl.pc
+opal/mca/event/libevent*/libevent/libevent_pthreads.pc
+opal/mca/event/libevent*/libevent/include/event2/event-config.h
+
+opal/mca/installdirs/config/install_dirs.h
+
+opal/tools/wrappers/opalcc-wrapper-data.txt
+opal/tools/wrappers/opalc++-wrapper-data.txt
+opal/tools/wrappers/opalCC-wrapper-data.txt
+opal/tools/wrappers/opal_wrapper
+opal/tools/wrappers/opal.pc
+
+opal/util/show_help_lex.c
+opal/util/keyval/keyval_lex.c
+
+test/simple/abort
+test/simple/accept
+test/simple/attach
+test/simple/bad_exit
+test/simple/bcast_loop
+test/simple/binding
+test/simple/concurrent_spawn
+test/simple/connect
+test/simple/crisscross
+test/simple/delayed_abort
+test/simple/hello_barrier
+test/simple/hello_nodename
+test/simple/hello_output
+test/simple/hello_show_help
+test/simple/hello
+test/simple/hello++
+test/simple/intercomm1
+test/simple/interlib
+test/simple/loop_child
+test/simple/loop_spawn
+test/simple/mpi_barrier
+test/simple/mpi_no_op
+test/simple/mpi_spin
+test/simple/multi_abort
+test/simple/parallel_r8
+test/simple/parallel_r64
+test/simple/parallel_w8
+test/simple/parallel_w64
+test/simple/pinterlib
+test/simple/pmix
+test/simple/pubsub
+test/simple/read_write
+test/simple/reduce-hang
+test/simple/ring
+test/simple/segv
+test/simple/simple_spawn
+test/simple/slave
+test/simple/spawn_multiple
+test/simple/xlib
+test/simple/ziaprobe
+test/simple/ziatest
+test/simple/*.dwarf
+test/simple/junk*
+test/simple/sio
+test/simple/sendrecv_blaster
+test/simple/early_abort
+test/simple/spawn_problem/ch_rec
+test/simple/spawn_problem/output
+test/simple/spawn_problem/start
+test/simple/debugger
+test/simple/server_port_name.txt
+test/simple/singleton_client_server
+test/simple/intercomm_create
+test/simple/spawn_tree
+test/simple/init-exit77
+test/simple/mpi_info
+test/simple/info_spawn
+test/simple/client
+test/simple/server
+test/simple/paccept
+test/simple/pconnect
+test/simple/thread_init
+test/simple/memcached-dummy
+test/simple/coll_test
+test/simple/badcoll
+test/simple/iof
+test/simple/no-disconnect
+test/simple/nonzero
+test/simple/add_host
+
+oshmem/include/shmem.h
+oshmem/include/shmem_portable_platform.h
+oshmem/include/oshmem/frameworks.h
+oshmem/include/oshmem/version.h
+
+oshmem/mca/sshmem/base/static-components.h
+
+oshmem/shmem/c/profile/p*.c
+oshmem/shmem/c/profile/*.c
+
+oshmem/shmem/fortran/libshmem_fortran.la
+oshmem/shmem/fortran/profile/pshmem_*_f.c
+oshmem/shmem/fortran/profile/pshpdeallc_f.c
+oshmem/shmem/fortran/profile/pshpclmove_f.c
+oshmem/shmem/fortran/profile/pmy_pe_f.c
+oshmem/shmem/fortran/profile/pshpalloc_f.c
+oshmem/shmem/fortran/profile/pnum_pes_f.c
+oshmem/shmem/fortran/profile/pstart_pes_f.c
+
+oshmem/tools/oshmem_info/oshmem_info
+
+oshmem/tools/wrappers/oshmem-c.pc
+oshmem/tools/wrappers/oshmem-cxx.pc
+oshmem/tools/wrappers/oshmem-fort.pc
+oshmem/tools/wrappers/oshmem.pc
+oshmem/tools/wrappers/shmemcc-wrapper-data.txt
+oshmem/tools/wrappers/shmemfort-wrapper-data.txt
+oshmem/tools/wrappers/shmemc++-wrapper-data.txt
+
+test/asm/atomic_math_noinline
+test/asm/atomic_barrier
+test/asm/atomic_cmpset_noinline
+test/asm/atomic_math
+test/asm/atomic_cmpset
+test/asm/atomic_spinlock_noinline.c
+test/asm/atomic_barrier_noinline.c
+test/asm/atomic_math_noinline.c
+test/asm/atomic_cmpset_noinline.c
+test/asm/atomic_spinlock_noinline
+test/asm/atomic_barrier_noinline
+test/asm/atomic_spinlock
+
+test/class/*.txt
+test/class/ompi_bitmap_test_out.txt
+test/class/ompi_circular_buffer_fifo
+test/class/ompi_fifo
+test/class/ompi_rb_tree
+test/class/ompi_bitmap
+test/class/opal_bitmap
+test/class/opal_fifo
+test/class/opal_cstring
+test/class/opal_hash_table
+test/class/opal_lifo
+test/class/opal_list
+test/class/opal_pointer_array
+test/class/opal_proc_table
+test/class/opal_tree
+test/class/opal_value_array
+
+test/datatype/ddt_test
+test/datatype/ddt_pack
+test/datatype/external32
+test/datatype/to_self
+test/datatype/checksum
+test/datatype/position
+test/datatype/ddt_raw
+test/datatype/opal_datatype_test
+test/datatype/position_noncontig
+test/datatype/unpack_ooo
+test/datatype/unpack_hetero
+
+test/event/signal-test
+test/event/event-test
+test/event/time-test
+
+test/monitoring/monitoring_test
+test/monitoring/check_monitoring
+test/monitoring/example_reduce_count
+test/monitoring/test_overhead
+test/monitoring/test_pvar_access
+
+test/mpi/environment/chello
+
+test/runtime/parse_context
+test/runtime/sigchld
+test/runtime/start_shut
+test/runtime/opal_init_finalize
+test/runtime/orte_init_finalize
+
+test/spc/spc_test
+
+test/threads/opal_condition
+test/threads/opal_thread
+
+test/util/aaa
+test/util/test_session_dir_out
+test/util/opal_os_path
+test/util/opal_argv
+test/util/opal_os_create_dirpath
+test/util/opal_if
+test/util/opal_error
+test/util/opal_timer
+test/util/orte_sys_info
+test/util/orte_session_dir
+test/util/orte_sys_info
+test/util/orte_universe_setup_file_io
+test/util/opal_basename
+test/util/ompi_numtostr
+test/util/ompi_pack
+test/util/test-file
+test/util/opal_sos
+test/util/opal_path_nfs
+test/util/opal_path_nfs.out
+test/util/opal_bit_ops
+test/util/bipartite_graph
+test/util/opal_sha256
+
+opal/test/reachable/reachable_netlink
+opal/test/reachable/reachable_weighted
+opal/mca/threads/argobots/threads_argobots.h
+opal/mca/threads/qthreads/threads_qthreads.h
+
+docs/_build
+docs/_static
+docs/_static/css/custom.css
+docs/_templates
+
+# Common Python virtual environment directory names
+venv
+py??
+
+# Copies of PRRTE RST files (i.e., not source controlled in this tree)
+docs/prrte-rst-content
+docs/schizo-ompi-rst-content
+
+# Copies of the built HTML docs and man pages (for distribution
+# tarballs)
+docs/html
+docs/man
diff --git a/3rd-party/hwloc-2.7.1.tar.gz b/3rd-party/hwloc-2.7.1.tar.gz
deleted file mode 100644
index 95dce21a46497ecadde172420b21ece029f43072..0000000000000000000000000000000000000000
Binary files a/3rd-party/hwloc-2.7.1.tar.gz and /dev/null differ
diff --git a/3rd-party/hwloc-2.7.1/COPYING b/3rd-party/hwloc-2.7.1/COPYING
new file mode 100644
index 0000000000000000000000000000000000000000..e77516e18017178a5b427bd770a396392700e290
--- /dev/null
+++ b/3rd-party/hwloc-2.7.1/COPYING
@@ -0,0 +1,39 @@
+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/3rd-party/hwloc-2.7.1/Makefile.am b/3rd-party/hwloc-2.7.1/Makefile.am
new file mode 100644
index 0000000000000000000000000000000000000000..1996b4becd0fe6b863295ebcc25c21ba0afc6114
--- /dev/null
+++ b/3rd-party/hwloc-2.7.1/Makefile.am
@@ -0,0 +1,103 @@
+# Copyright © 2009-2021 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 \
+ config/libtool-big-sur-fixup.patch
+
+SUBDIRS = include hwloc
+
+if HWLOC_BUILD_STANDALONE
+if BUILD_NETLOC
+SUBDIRS += netloc
+endif
+SUBDIRS += utils tests contrib/systemd contrib/completion contrib/misc contrib/hwloc-ps.www
+# 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
+DIST_SUBDIRS += contrib/windows
+EXTRA_DIST += contrib/windows-cmake
+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
+
+if HWLOC_BUILD_STANDALONE
+dist-hook:
+ sh "$(top_srcdir)/config/distscript.sh" "$(top_srcdir)" "$(distdir)" "$(HWLOC_VERSION)"
+else !HWLOC_BUILD_STANDALONE
+# Create directories needed by embedders' autogen (directories ignored by embedded dist)
+dist-hook:
+ @MKDIR_P@ \
+ $(distdir)/doc \
+ $(distdir)/netloc \
+ $(distdir)/utils \
+ $(distdir)/tests \
+ $(distdir)/contrib/completion \
+ $(distdir)/contrib/hwloc-ps.www \
+ $(distdir)/contrib/misc \
+ $(distdir)/contrib/systemd \
+ $(distdir)/contrib/windows
+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/3rd-party/hwloc-2.7.1/NEWS b/3rd-party/hwloc-2.7.1/NEWS
new file mode 100644
index 0000000000000000000000000000000000000000..75557e5f43b2d4d05bd31392966df410dca0ebfd
--- /dev/null
+++ b/3rd-party/hwloc-2.7.1/NEWS
@@ -0,0 +1,1978 @@
+Copyright © 2009 CNRS
+Copyright © 2009-2022 Inria. All rights reserved.
+Copyright © 2009-2013 Université Bordeaux
+Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved.
+Copyright © 2020 Hewlett Packard Enterprise. 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.
+
+
+Version 2.7.1
+-------------
+* Workaround crashes when virtual machines report incoherent x86 CPUID
+ information about numbers of cores and threads.
+ Thanks to Peter Bense for the report.
+* Use setenv() instead of putenv() when trying to force enable oneAPI L0
+ support, to avoid issues with applications that touch the environment,
+ thanks to Josh Hursey for the patch.
+* Add some warnings at the end of configure when GPU libraries are
+ missing on the system or their path is missing in the environment.
+
+
+Version 2.7.0
+-------------
+* Backends
+ + Add support for NUMA nodes and caches with more than 64 PUs across
+ multiple processor groups on Windows 11 and Windows Server 2022.
+ + Group objects are not created for Windows processor groups anymore,
+ except if HWLOC_WINDOWS_PROCESSOR_GROUP_OBJS=1 in the environment.
+ + Expose "Cluster" group objects on Linux kernel 5.16+ for CPUs
+ that share some internal cache or bus. This can be equivalent
+ to the L2 Cache level on some platforms (e.g. x86) or a specific
+ level between L2 and L3 on others (e.g. ARM Kungpeng 920).
+ Thanks to Jonathan Cameron for the help.
+ - HWLOC_DONT_MERGE_CLUSTER_GROUPS=1 may be set in the environment
+ to prevent these groups from being merged with identical caches, etc.
+ + Improve the oneAPI LevelZero backend:
+ - Expose subdevices such as "ze0.1" inside root OS devices ("ze0")
+ when the hardware contains multiple subdevices.
+ - Add many new attributes to describe device type, and the
+ numbers of slices, subslices, execution units and threads.
+ - Expose the memory information as LevelZeroHBM/DDR/MemorySize infos.
+ + Ignore the max frequencies of cores in Linux cpukinds when the
+ base frequencies are available (to avoid exposing hybrid CPUs
+ when Intel Turbo Boost Max 3.0 gives slightly different max
+ frequencies to CPU cores).
+ - May be reverted by setting HWLOC_CPUKINDS_MAXFREQ=1 in the environment.
+* Tools
+ + Add --grey and --palette options to switch lstopo to greyscale or
+ white-background-only graphics, or to tune individual colors.
+* Build
+ + Windows CMake builds now support non-MSVC compilers, detect several
+ features at build time, can build/run tests, etc.
+ Thanks to Michael Hirsch and Alexander Neumann .
+
+
+Version 2.6.0
+-------------
+* Backends
+ + Expose two cpukinds for energy-efficient cores (icestorm) and
+ high-performance cores (firestorm) on Apple M1 on Mac OS X.
+ + Use sysfs CPU "capacity" to rank hybrid cores by efficiency
+ on Linux when available (mostly on recent ARM platforms for now).
+ + Improve HWLOC_MEMBIND_BIND (without the STRICT flag) on Linux kernel
+ >= 5.15: If more than one node is given, the kernel may now use all
+ of them instead of only the first one before falling back to others.
+ + Expose cache os_index when available on Linux, it may be needed
+ when using resctrl to configure cache partitioning, memory bandwidth
+ monitoring, etc.
+ + Add a "XGMIHops" distances matrix in the RSMI backend for AMD GPU
+ interconnected through XGMI links.
+ + Expose AMD GPU memory information (VRAM and GTT) in the RSMI backend.
+ + Add OS devices such as "bxi0" for Atos/Bull BXI HCAs on Linux.
+* Tools
+ + lstopo has a better placement algorithm with respect to I/O
+ objects, see --children-order in the manpage for details.
+ + hwloc-annotate may now change object subtypes and cache or memory
+ sizes.
+* Build
+ + Allow to specify the ROCm installation for building the RSMI backend:
+ - Use a custom installation path if specified with --with-rocm=
.
+ - Use /opt/rocm- if specified with --with-rocm-version=
+ or the ROCM_VERSION environment variable.
+ - Try /opt/rocm if it exists.
+ - See "How do I enable ROCm SMI and select which version to use?"
+ in the FAQ for details.
+ + Add a CMakeLists for Windows under contrib/windows-cmake/ .
+* Documentation
+ + Add FAQ entry "How do I create a custom heterogeneous and
+ asymmetric topology?"
+
+
+Version 2.5.0
+-------------
+* API
+ + Add hwloc/windows.h to query Windows processor groups.
+ + Add hwloc_get_obj_with_same_locality() to convert between objects
+ with same locality, for instance NUMA nodes and Packages,
+ or OS devices within a PCI device.
+ + Add hwloc_distances_transform() to modify distances structures.
+ - hwloc-annotate and lstopo have new distances-transform options.
+ + hwloc_distances_add() is replaced with _add_create() followed by
+ _add_values() and _add_commit(). See hwloc/distances.h for details.
+ + Add topology flags to mitigate binding modifications during
+ hwloc discovery, especially on Windows:
+ - HWLOC_TOPOLOGY_FLAG_RESTRICT_TO_CPUBINDING and _MEMBINDING
+ restrict discovery to PUs and NUMA nodes inside the binding.
+ - HWLOC_TOPOLOGY_FLAG_DONT_CHANGE_BINDING prevents from ever
+ changing the binding during discovery.
+* Backends
+ + Add a levelzero backend for oneAPI L0 devices, exposed as OS devices
+ of subtype "LevelZero" and name such as "ze0".
+ - Add hwloc/levelzero.h for interoperability between converting
+ between L0 API devices and hwloc cpusets or OS devices.
+ + Expose NEC Vector Engine cards on Linux as OS devices of subtype
+ "VectorEngine" and name "ve0", etc.
+ Thanks to Anara Kozhokanova, Tim Cramer and Erich Focht for the help.
+ + Add a NVLinkBandwidth distances structure between NVIDIA GPUs
+ (and POWER processor or NVSwitches) in the NVML backend,
+ and a XGMIBandwidth distances structure between AMD GPUs
+ in the RSMI backends.
+ - See "Topology Attributes: Distances, Memory Attributes and CPU Kinds"
+ in the documentation for details about these new distances.
+ + Add support for NUMA node 0 being offline in Linux, thanks to Jirka Hladky.
+* Build
+ + Add --with-cuda-version= or look at the CUDA_VERSION
+ environment variable to find the appropriate CUDA pkg-config files.
+ Thanks to Stephen Herbein for the suggestion.
+ - Also add --with-cuda= to specify the CUDA installation path
+ manually (and its NVML and OpenCL components).
+ Thanks to Andrea Bocci for the suggestion.
+ - See "How do I enable CUDA and select which CUDA version to use?"
+ in the FAQ for details.
+* Tools
+ + lstopo now has a --windows-processor-groups option on Windows.
+ + hwloc-ps now has a --short-name option to avoid long/truncated
+ command path.
+ + hwloc-ps now has a --single-ancestor option to return a single
+ (possibly too large) object where a process is bound.
+ + hwloc-ps --pid-cmd may now query environment variables,
+ including MPI-specific variables to find out process ranks.
+
+
+Version 2.4.1
+-------------
+* Fix AMD OpenCL device locality when PCI bus or device number >= 128.
+ Thanks to Edgar Leon for reporting the issue.
+ + Applications using any of the following inline functions must
+ be recompiled to get the fix: hwloc_opencl_get_device_pci_busid()
+ hwloc_opencl_get_device_cpuset(), hwloc_opencl_get_device_osdev().
+* Fix the ranking of cpukinds on non-Windows systems,
+ thanks to Ivan Kochin for the report.
+* Fix the insertion of custom Groups after loading the topology,
+ thanks to Scott Hicks.
+* Add support for CPU0 being offline in Linux, thanks to Garrett Clay.
+* Fix missing x86 Package and Core objects FreeBSD/NetBSD.
+ Thanks to Thibault Payet and Yuri Victorovich for the report.
+* Fix the import of very large distances with heterogeneous object types.
+* Fix a memory leak in the Linux backend,
+ thanks to Perceval Anichini.
+
+
+Version 2.4.0
+-------------
+* API
+ + Add hwloc/cpukinds.h for reporting information about hybrid CPUs.
+ - Use Linux cpufreq frequencies to rank cores by efficiency.
+ - Use x86 CPUID hybrid leaf and future Linux kernels sysfs CPU type
+ files to identify Intel Atom and Core cores.
+ - Use the Windows native EfficiencyClass to separate kinds.
+* Backends
+ + Properly handle Linux kernel 5.10+ exposing ACPI HMAT information
+ with knowledge of Generic Initiators.
+* Tools
+ + lstopo has new --cpukinds and --no-cpukinds options for showing
+ CPU kinds or not in textual and graphical modes respectively.
+ + hwloc-calc has a new --cpukind option for filtering PUs by kind.
+ + hwloc-annotate has a new cpukind command for modifying CPU kinds.
+* Misc
+ + Fix hwloc_bitmap_nr_ulongs(), thanks to Norbert Eicker.
+ + Add a documentation section about
+ "Topology Attributes: Distances, Memory Attributes and CPU Kinds".
+ + Silence some spurious warnings in the OpenCL backend and when showing
+ process binding with lstopo --ps.
+
+
+Version 2.3.0
+-------------
+* API
+ + Add hwloc/memattrs.h for exposing latency/bandwidth information
+ between initiators (CPU sets for now) and target NUMA nodes,
+ typically on heterogeneous platforms.
+ - When available, bandwidths and latencies are read from the ACPI HMAT
+ table exposed by Linux kernel 5.2+.
+ - Attributes may also be customized to expose user-defined performance
+ information.
+ + Add hwloc_get_local_numanode_objs() for listing NUMA nodes that are
+ local to some locality.
+ + The new topology flag HWLOC_TOPOLOGY_FLAG_IMPORT_SUPPORT causes
+ support arrays to be loaded from XML exported with hwloc 2.3+.
+ - hwloc_topology_get_support() now returns an additional "misc"
+ array with feature "imported_support" set when support was imported.
+ + Add hwloc_topology_refresh() to refresh internal caches after modifying
+ the topology and before consulting the topology in a multithread context.
+* Backends
+ + Add a ROCm SMI backend and a hwloc/rsmi.h helper file for getting
+ the locality of AMD GPUs, now exposed as "rsmi" OS devices.
+ Thanks to Mike Li.
+ + Remove POWER device-tree-based topology on Linux,
+ (it was disabled by default since 2.1).
+* Tools
+ + Command-line options for specifying flags now understand comma-separated
+ lists of flag names (substrings).
+ + hwloc-info and hwloc-calc have new --local-memory --local-memory-flags
+ and --best-memattr options for reporting local memory nodes and filtering
+ by memory attributes.
+ + hwloc-bind has a new --best-memattr option for filtering by memory attributes
+ among the memory binding set.
+ + Tools that have a --restrict option may now receive a nodeset or
+ some custom flags for restricting the topology.
+ + lstopo now has a --thickness option for changing line thickness in the
+ graphical output.
+ + Fix lstopo drawing when autoresizing on Windows 10.
+ + Pressing the F5 key in lstopo X11 and Windows graphical/interactive outputs
+ now refreshes the display according to the current topology and binding.
+ + Add a tikz lstopo graphical backend to generate picture easily included into
+ LaTeX documents. Thanks to Clement Foyer.
+* Misc
+ + The default installation path of the Bash completion file has changed to
+ ${datadir}/bash-completion/completions/hwloc. Thanks to Tomasz Kłoczko.
+
+
+Version 2.2.0
+-------------
+* API
+ + Add hwloc_bitmap_singlify_by_core() to remove SMT from a given cpuset,
+ thanks to Florian Reynier for the suggestion.
+ + Add --enable-32bits-pci-domain to stop ignoring PCI devices with domain
+ >16bits (e.g. 10000:02:03.4). Enabling this option breaks the library ABI.
+ Thanks to Dylan Simon for the help.
+* Backends
+ + Add support for Linux cgroups v2.
+ + Add NUMA support for FreeBSD.
+ + Add get_last_cpu_location support for FreeBSD.
+ + Remove support for Intel Xeon Phi (MIC, Knights Corner) co-processors.
+* Tools
+ + Add --uid to filter the hwloc-ps output by uid on Linux.
+ + Add a GRAPHICAL OUTPUT section in the manpage of lstopo.
+* Misc
+ + Use the native dlopen instead of libltdl,
+ unless --disable-plugin-dlopen is passed at configure time.
+
+
+Version 2.1.0
+-------------
+* API
+ + Add a new "Die" object (HWLOC_OBJ_DIE) for upcoming x86 processors
+ with multiple dies per package, in the x86 and Linux backends.
+ + Add the new HWLOC_OBJ_MEMCACHE object type for memory-side caches.
+ - They are filtered-out by default, except in command-line tools.
+ - They are only available on very recent platforms running Linux 5.2+
+ and uptodate ACPI tables.
+ - The KNL MCDRAM in cache mode is still exposed as a L3 unless
+ HWLOC_KNL_MSCACHE_L3=0 in the environment.
+ + Add HWLOC_RESTRICT_FLAG_BYNODESET and _REMOVE_MEMLESS for restricting
+ topologies based on some memory nodes.
+ + Add hwloc_topology_set_components() for blacklisting some components
+ from being enabled in a topology.
+ + Add hwloc_bitmap_nr_ulongs() and hwloc_bitmap_from/to_ulongs(),
+ thanks to Junchao Zhang for the suggestion.
+ + Improve the API for dealing with disallowed resources
+ - HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM is replaced with FLAG_INCLUDE_DISALLOWED
+ and --whole-system command-line options with --disallowed.
+ . Former names are still accepted for backward compatibility.
+ - Add hwloc_topology_allow() for changing allowed sets after load().
+ - Add the HWLOC_ALLOW=all environment variable to totally ignore
+ administrative restrictions such as Linux Cgroups.
+ - Add disallowed_pu and disallowed_numa bits to the discovery support
+ structure.
+ + Group objects have a new "dont_merge" attribute to prevent them from
+ being automatically merged with identical parent or children.
+ + Add more distances-related features:
+ - Add hwloc_distances_get_name() to retrieve a string describing
+ what a distances structure contain.
+ - Add hwloc_distances_get_by_name() to retrieve distances structures
+ based on their name.
+ - Add hwloc_distances_release_remove()
+ - Distances may now cover objects of different types with new kind
+ HWLOC_DISTANCES_KIND_HETEROGENEOUS_TYPES.
+* Backends
+ + Add support for Linux 5.3 new sysfs cpu topology files with Die information.
+ + Add support for Intel v2 Extended Topology Enumeration in the x86 backend.
+ + Improve memory locality on Linux by using HMAT initiators (exposed
+ since Linux 5.2+), and NUMA distances for CPU-less NUMA nodes.
+ + The x86 backend now properly handles offline CPUs.
+ + Detect the locality of NVIDIA GPU OpenCL devices.
+ + Ignore NUMA nodes that correspond to NVIDIA GPU by default.
+ - They may be unignored if HWLOC_KEEP_NVIDIA_GPU_NUMA_NODES=1 in the environment.
+ - Fix their CPU locality and add info attributes to identify them.
+ Thanks to Max Katz and Edgar Leon for the help.
+ + Add support for IBM S/390 drawers.
+ + Rework the heuristics for discovering KNL Cluster and Memory modes
+ to stop assuming all CPUs are online (required for mOS support).
+ Thanks to Sharath K Bhat for testing patches.
+ + Ignore NUMA node information from AMD topoext in the x86 backend,
+ unless HWLOC_X86_TOPOEXT_NUMANODES=1 is set in the environment.
+ + Expose Linux DAX devices as hwloc Block OS devices.
+ + Remove support for /proc/cpuinfo-only topology discovery in Linux
+ kernel prior to 2.6.16.
+ + Disable POWER device-tree-based topology on Linux by default.
+ - It may be reenabled by setting HWLOC_USE_DT=1 in the environment.
+ + Discovery components are now divided in phases that may be individually
+ blacklisted.
+ - The linuxio component has been merged back into the linux component.
+* Tools
+ + lstopo
+ - lstopo factorizes objects by default in the graphical output when
+ there are more than 4 identical children.
+ . New options --no-factorize and --factorize may be used to configure this.
+ . Hit the 'f' key to disable factorizing in interactive outputs.
+ - Both logical and OS/physical indexes are now displayed by default
+ for PU and NUMA nodes.
+ - The X11 and Windows interactive outputs support many keyboard
+ shortcuts to dynamically customize the attributes, legend, etc.
+ - Add --linespacing and change default margins and linespacing.
+ - Add --allow for changing allowed sets.
+ - Add a native SVG backend. Its graphical output may be slightly less
+ pretty than Cairo (still used by default if available) but the SVG
+ code provides attributes to manipulate objects from HTML/JS.
+ See dynamic_SVG_example.html for an example.
+ + Add --nodeset options to hwloc-calc for converting between cpusets and
+ nodesets.
+ + Add --no-smt to lstopo, hwloc-bind and hwloc-calc to ignore multiple
+ PU in SMT cores.
+ + hwloc-annotate may annotate multiple locations at once.
+ + Add a HTML/JS version of hwloc-ps. See contrib/hwloc-ps.www/README.
+ + Add bash completions.
+* Misc
+ + Add several FAQ entries in "Compatibility between hwloc versions"
+ about API version, ABI, XML, Synthetic strings, and shmem topologies.
+
+
+Version 2.0.4 (also included in 1.11.13 when appropriate)
+-------------
+* Add support for Linux 5.3 new sysfs cpu topology files with Die information.
+* Add support for Intel v2 Extended Topology Enumeration in the x86 backend.
+* Tiles, Modules and Dies are exposed as Groups for now.
+ + HWLOC_DONT_MERGE_DIE_GROUPS=1 may be set in the environment to prevent
+ Die groups from being automatically merged with identical parent or children.
+* Ignore NUMA node information from AMD topoext in the x86 backend,
+ unless HWLOC_X86_TOPOEXT_NUMANODES=1 is set in the environment.
+* Group objects have a new "dont_merge" attribute to prevent them from
+ being automatically merged with identical parent or children.
+
+
+Version 2.0.3 (also included in 1.11.12 when appropriate)
+-------------
+* Fix build on Cygwin, thanks to Marco Atzeri for the patches.
+* Fix a corner case of hwloc_topology_restrict() where children would
+ become out-of-order.
+* Fix the return length of export_xmlbuffer() functions to always
+ include the ending \0.
+* Fix lstopo --children-order argument parsing.
+
+
+Version 2.0.2 (also included in 1.11.11 when appropriate)
+-------------
+* Add support for Hygon Dhyana processors in the x86 backend,
+ thanks to Pu Wen for the patch.
+* Fix symbol renaming to also rename internal components,
+ thanks to Evan Ramos for the patch.
+* Fix build on HP-UX, thanks to Richard Lloyd for reporting the issues.
+* Detect PCI link speed without being root on Linux >= 4.13.
+* Add HWLOC_VERSION* macros to the public headers,
+ thanks to Gilles Gouaillardet for the suggestion.
+
+
+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-order=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.13 (also included in 2.0.4)
+---------------
+* Add support for Linux 5.3 new sysfs cpu topology files with Die information.
+* Add support for Intel v2 Extended Topology Enumeration in the x86 backend.
+* Tiles, Modules and Dies are exposed as Groups for now.
+ + HWLOC_DONT_MERGE_DIE_GROUPS=1 may be set in the environment to prevent
+ Die groups from being automatically merged with identical parent or children.
+* Ignore NUMA node information from AMD topoext in the x86 backend,
+ unless HWLOC_X86_TOPOEXT_NUMANODES=1 is set in the environment.
+* Group objects have a new "dont_merge" attribute to prevent them from
+ being automatically merged with identical parent or children.
+
+
+Version 1.11.12 (also included in 2.0.3)
+---------------
+* Fix a corner case of hwloc_topology_restrict() where children would
+ become out-of-order.
+* Fix the return length of export_xmlbuffer() functions to always
+ include the ending \0.
+
+
+Version 1.11.11 (also included in 2.0.2)
+---------------
+* Add support for Hygon Dhyana processors in the x86 backend,
+ thanks to Pu Wen for the patch.
+* Fix symbol renaming to also rename internal components,
+ thanks to Evan Ramos for the patch.
+* Fix build on HP-UX, thanks to Richard Lloyd for reporting the issues.
+* Detect PCI link speed without being root on Linux >= 4.13.
+
+
+Version 1.11.10 (also included in 2.0.1)
+---------------
+* Fix detection of cores and hyperthreads on Mac OS X.
+* Serialize pciaccess discovery to fix concurrent topology loads in
+ multiple threads.
+* Fix first touch area memory binding on Linux when thread memory
+ binding is different.
+* Some minor fixes to memory binding.
+* 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.
+* Fix discovery of NVMe OS devices on Linux >= 4.0.
+* Add get_area_memlocation() on Windows.
+* Add CPUVendor, Model, ... attributes on Mac OS X.
+
+
+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 1.6.2 but not in 1.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 (contains all 1.3.2 changes)
+-------------
+* 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 1.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 (formerly named "libtopology")
+-----------
+
+* First release.
diff --git a/3rd-party/hwloc-2.7.1/README b/3rd-party/hwloc-2.7.1/README
new file mode 100644
index 0000000000000000000000000000000000000000..43210e636ce41be4bd68642c1298379b621e5e07
--- /dev/null
+++ b/3rd-party/hwloc-2.7.1/README
@@ -0,0 +1,85 @@
+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 (https://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 (https:/
+/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 (https://
+www.open-mpi.org/community/lists/hwloc.php).
+
+There is also a #hwloc IRC channel on Libera Chat (irc.libera.chat).
+
+
+
+See https://www.open-mpi.org/projects/hwloc/doc/ for more hwloc documentation.
diff --git a/3rd-party/hwloc-2.7.1/VERSION b/3rd-party/hwloc-2.7.1/VERSION
new file mode 100644
index 0000000000000000000000000000000000000000..d17fb44e231edd4b31a68adedcc999cd3de8bf63
--- /dev/null
+++ b/3rd-party/hwloc-2.7.1/VERSION
@@ -0,0 +1,47 @@
+# 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/hwloc_config.h too.
+
+major=2
+minor=7
+release=1
+
+# 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=
+
+# The date when this release was created
+
+date="Mar 20, 2022"
+
+# 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=0
+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=20:3:5
+libnetloc_so_version=0:0:0
+
+# Please also update the lines in contrib/windows/libhwloc.vcxproj
diff --git a/3rd-party/hwloc-2.7.1/config/distscript.sh b/3rd-party/hwloc-2.7.1/config/distscript.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d72a3fd3052a3678d94a90e541b576821fd8dd29
--- /dev/null
+++ b/3rd-party/hwloc-2.7.1/config/distscript.sh
@@ -0,0 +1,130 @@
+#!/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 <=2.70 or AC_PROG_CC_C99 is stored in ac_cv_prog_cc_c99
+ if test "x$ac_cv_prog_cc_c99" = xno ; then
+ AC_MSG_WARN([hwloc requires a C99 compiler])
+ AC_MSG_ERROR([Aborting.])
+ fi
+
+ # GCC specifics.
+ _HWLOC_C_COMPILER_VENDOR([hwloc_c_vendor])
+ if test "$hwloc_c_vendor" = "gnu"; then
+ HWLOC_GCC_CFLAGS="-Wall -Wmissing-prototypes -Wundef"
+ HWLOC_GCC_CFLAGS="$HWLOC_GCC_CFLAGS -Wpointer-arith -Wcast-align"
+ fi
+
+ # Enample system extensions for O_DIRECTORY, fdopen, fssl, etc.
+ AH_VERBATIM([USE_HPUX_SYSTEM_EXTENSIONS],
+[/* Enable extensions on HP-UX. */
+#ifndef _HPUX_SOURCE
+# undef _HPUX_SOURCE
+#endif
+])
+ AC_DEFINE([_HPUX_SOURCE], [1], [Are we building for HP-UX?])
+
+ AC_LANG_PUSH([C])
+
+ # Check to see if we're producing a 32 or 64 bit executable by
+ # checking the sizeof void*. Note that AC CHECK_SIZEOF even works
+ # when cross compiling (!), according to the AC 2.64 docs. This
+ # check is needed because on some systems, you can instruct the
+ # compiler to specifically build 32 or 64 bit executables -- even
+ # though the $target may indicate something different.
+ AC_CHECK_SIZEOF([void *])
+
+ #
+ # List of components to be built, either statically or dynamically.
+ # To be enlarged below.
+ #
+ hwloc_components="noos xml synthetic xml_nolibxml"
+
+ #
+ # Check OS support
+ #
+ AC_MSG_CHECKING([which OS support to include])
+ case ${target} in
+ powerpc64-bgq-linux*) # must be before Linux
+ AC_DEFINE(HWLOC_BGQ_SYS, 1, [Define to 1 on BlueGene/Q])
+ hwloc_bgq=yes
+ AC_MSG_RESULT([bgq])
+ hwloc_components="$hwloc_components bgq"
+ ;;
+ *-*-linux*)
+ AC_DEFINE(HWLOC_LINUX_SYS, 1, [Define to 1 on Linux])
+ hwloc_linux=yes
+ AC_MSG_RESULT([Linux])
+ hwloc_components="$hwloc_components linux"
+ if test "x$enable_io" != xno; then
+ AC_DEFINE(HWLOC_HAVE_LINUXIO, 1, [Define to 1 for I/O discovery in the Linux component])
+ hwloc_linuxio_happy=yes
+ if test x$enable_pci != xno; then
+ AC_DEFINE(HWLOC_HAVE_LINUXPCI, 1, [Define to 1 if enabling Linux-specific PCI discovery in the Linux I/O component])
+ hwloc_linuxpci_happy=yes
+ fi
+ fi
+ ;;
+ *-*-irix*)
+ AC_DEFINE(HWLOC_IRIX_SYS, 1, [Define to 1 on Irix])
+ hwloc_irix=yes
+ AC_MSG_RESULT([IRIX])
+ # no irix component yet
+ ;;
+ *-*-darwin*)
+ AC_DEFINE(HWLOC_DARWIN_SYS, 1, [Define to 1 on Darwin])
+ hwloc_darwin=yes
+ AC_MSG_RESULT([Darwin])
+ hwloc_components="$hwloc_components darwin"
+ ;;
+ *-*-solaris*)
+ AC_DEFINE(HWLOC_SOLARIS_SYS, 1, [Define to 1 on Solaris])
+ hwloc_solaris=yes
+ AC_MSG_RESULT([Solaris])
+ hwloc_components="$hwloc_components solaris"
+ ;;
+ *-*-aix*)
+ AC_DEFINE(HWLOC_AIX_SYS, 1, [Define to 1 on AIX])
+ hwloc_aix=yes
+ AC_MSG_RESULT([AIX])
+ hwloc_components="$hwloc_components aix"
+ ;;
+ *-*-hpux*)
+ AC_DEFINE(HWLOC_HPUX_SYS, 1, [Define to 1 on HP-UX])
+ hwloc_hpux=yes
+ AC_MSG_RESULT([HP-UX])
+ hwloc_components="$hwloc_components hpux"
+ ;;
+ *-*-mingw*|*-*-cygwin*)
+ AC_DEFINE(HWLOC_WIN_SYS, 1, [Define to 1 on WINDOWS])
+ hwloc_windows=yes
+ AC_MSG_RESULT([Windows])
+ hwloc_components="$hwloc_components windows"
+ ;;
+ *-*-*freebsd*)
+ AC_DEFINE(HWLOC_FREEBSD_SYS, 1, [Define to 1 on *FREEBSD])
+ hwloc_freebsd=yes
+ AC_MSG_RESULT([FreeBSD])
+ hwloc_components="$hwloc_components freebsd"
+ ;;
+ *-*-*netbsd*)
+ AC_DEFINE(HWLOC_NETBSD_SYS, 1, [Define to 1 on *NETBSD])
+ hwloc_netbsd=yes
+ AC_MSG_RESULT([NetBSD])
+ hwloc_components="$hwloc_components netbsd"
+ ;;
+ *)
+ AC_MSG_RESULT([Unsupported! ($target)])
+ AC_DEFINE(HWLOC_UNSUPPORTED_SYS, 1, [Define to 1 on unsupported systems])
+ AC_MSG_WARN([***********************************************************])
+ AC_MSG_WARN([*** hwloc does not support this system.])
+ AC_MSG_WARN([*** hwloc will *attempt* to build (but it may not work).])
+ AC_MSG_WARN([*** hwloc run-time results may be reduced to showing just one processor,])
+ AC_MSG_WARN([*** and binding will not be supported.])
+ AC_MSG_WARN([*** You have been warned.])
+ AC_MSG_WARN([*** Pausing to give you time to read this message...])
+ AC_MSG_WARN([***********************************************************])
+ sleep 10
+ ;;
+ esac
+
+ #
+ # Check CPU support
+ #
+ AC_MSG_CHECKING([which CPU support to include])
+ case ${target} in
+ i*86-*-*|x86_64-*-*|amd64-*-*)
+ case ${ac_cv_sizeof_void_p} in
+ 4)
+ AC_DEFINE(HWLOC_X86_32_ARCH, 1, [Define to 1 on x86_32])
+ hwloc_x86_32=yes
+ HWLOC_MS_LIB_ARCH=X86
+ AC_MSG_RESULT([x86_32])
+ ;;
+ 8)
+ AC_DEFINE(HWLOC_X86_64_ARCH, 1, [Define to 1 on x86_64])
+ hwloc_x86_64=yes
+ HWLOC_MS_LIB_ARCH=X64
+ AC_MSG_RESULT([x86_64])
+ ;;
+ *)
+ AC_DEFINE(HWLOC_X86_64_ARCH, 1, [Define to 1 on x86_64])
+ hwloc_x86_64=yes
+ HWLOC_MS_LIB_ARCH=X64
+ AC_MSG_RESULT([unknown -- assuming x86_64])
+ ;;
+ esac
+ ;;
+ *)
+ AC_MSG_RESULT([unknown])
+ ;;
+ esac
+ AC_SUBST(HWLOC_MS_LIB_ARCH)
+
+ AC_CHECK_SIZEOF([unsigned long])
+ AC_DEFINE_UNQUOTED([HWLOC_SIZEOF_UNSIGNED_LONG], $ac_cv_sizeof_unsigned_long, [The size of `unsigned long', as computed by sizeof])
+ AC_CHECK_SIZEOF([unsigned int])
+ AC_DEFINE_UNQUOTED([HWLOC_SIZEOF_UNSIGNED_INT], $ac_cv_sizeof_unsigned_int, [The size of `unsigned int', as computed by sizeof])
+
+ #
+ # Check for compiler attributes and visibility
+ #
+ _HWLOC_CHECK_ATTRIBUTES
+ _HWLOC_CHECK_VISIBILITY
+ HWLOC_CFLAGS="$HWLOC_FLAGS $HWLOC_VISIBILITY_CFLAGS"
+ AS_IF([test "$HWLOC_VISIBILITY_CFLAGS" != ""],
+ [AC_MSG_WARN(["$HWLOC_VISIBILITY_CFLAGS" has been added to the hwloc CFLAGS])])
+
+ # Make sure the compiler returns an error code when function arg
+ # count is wrong, otherwise sched_setaffinity checks may fail.
+ HWLOC_STRICT_ARGS_CFLAGS=
+ hwloc_args_check=0
+ AC_MSG_CHECKING([whether the C compiler rejects function calls with too many arguments])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ extern int one_arg(int x);
+ int foo(void) { return one_arg(1, 2); }
+ ]])],
+ [AC_MSG_RESULT([no])],
+ [hwloc_args_check=1
+ AC_MSG_RESULT([yes])])
+ AC_MSG_CHECKING([whether the C compiler rejects function calls with too few arguments])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ extern int two_arg(int x, int y);
+ int foo(void) { return two_arg(3); }
+ ]])],
+ [AC_MSG_RESULT([no])],
+ [hwloc_args_check=`expr $hwloc_args_check + 1`
+ AC_MSG_RESULT([yes])])
+ AS_IF([test "$hwloc_args_check" != "2"],[
+ AC_MSG_WARN([Your C compiler does not consider incorrect argument counts to be a fatal error.])
+ case "$hwloc_c_vendor" in
+ ibm)
+ HWLOC_STRICT_ARGS_CFLAGS="-qhalt=e"
+ ;;
+ intel)
+ HWLOC_STRICT_ARGS_CFLAGS="-we140"
+ ;;
+ *)
+ HWLOC_STRICT_ARGS_CFLAGS=FAIL
+ AC_MSG_WARN([Please report this warning and configure using a different C compiler if possible.])
+ ;;
+ esac
+ AS_IF([test "$HWLOC_STRICT_ARGS_CFLAGS" != "FAIL"],[
+ AC_MSG_WARN([Configure will append '$HWLOC_STRICT_ARGS_CFLAGS' to the value of CFLAGS when needed.])
+ AC_MSG_WARN([Alternatively you may configure with a different compiler.])
+ ])
+ ])
+
+ AS_IF([test "$hwloc_mode" = "standalone"],[
+ # For the common developer case, if we're in a developer checkout and
+ # using the GNU compilers, turn on maximum warnings unless
+ # specifically disabled by the user.
+ AC_MSG_CHECKING([whether to enable "picky" compiler mode])
+ hwloc_want_picky=0
+ AS_IF([test "$hwloc_c_vendor" = "gnu"],
+ [AS_IF([test -e "$srcdir/.git"],
+ [hwloc_want_picky=1])])
+ if test "$enable_picky" = "yes"; then
+ if test "$hwloc_c_vendor" = "gnu"; then
+ AC_MSG_RESULT([yes])
+ hwloc_want_picky=1
+ else
+ AC_MSG_RESULT([no])
+ AC_MSG_WARN([Warning: --enable-picky used, but is currently only defined for the GCC compiler set -- automatically disabled])
+ hwloc_want_picky=0
+ fi
+ elif test "$enable_picky" = "no"; then
+ AC_MSG_RESULT([no])
+ hwloc_want_picky=0
+ else
+ if test "$hwloc_want_picky" = 1; then
+ AC_MSG_RESULT([yes (default)])
+ else
+ AC_MSG_RESULT([no (default)])
+ fi
+ fi
+ if test "$hwloc_want_picky" = 1; then
+ add="-Wall -Wextra -Wunused-parameter -Wundef -Wno-long-long -Wsign-compare"
+ add="$add -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes"
+ add="$add -Wcomment -pedantic -Wshadow -Wwrite-strings -Wnested-externs"
+ add="$add -Wpointer-arith -Wbad-function-cast -Wold-style-definition"
+ add="$add -Werror-implicit-function-declaration"
+
+ _HWLOC_CHECK_CC_OPTION([-Wdiscarded-qualifiers], [add])
+ _HWLOC_CHECK_CC_OPTION([-Wvariadic-macros], [add])
+ _HWLOC_CHECK_CC_OPTION([-Wtype-limits], [add])
+ _HWLOC_CHECK_CC_OPTION([-Wstack-usage=262144], [add])
+
+ # -Wextra enables some -Wfoo that we want to disable it at some place
+ _HWLOC_CHECK_CC_OPTION([-Wmissing-field-initializers], [add], [AC_DEFINE(HWLOC_HAVE_GCC_W_MISSING_FIELD_INITIALIZERS, 1, [Define to 1 if gcc -Wmissing-field-initializers is supported and enabled])])
+ _HWLOC_CHECK_CC_OPTION([-Wcast-function-type], [add], [AC_DEFINE(HWLOC_HAVE_GCC_W_CAST_FUNCTION_TYPE, 1, [Define to 1 if gcc -Wcast-function-type is supported and enabled])])
+
+ HWLOC_CFLAGS="$HWLOC_CFLAGS $add"
+ fi
+ ])
+
+ #
+ # Now detect support
+ #
+
+ AC_CHECK_HEADERS([unistd.h])
+ AC_CHECK_HEADERS([dirent.h])
+ AC_CHECK_HEADERS([strings.h])
+ AC_CHECK_HEADERS([ctype.h])
+
+ AC_CHECK_FUNCS([strcasecmp], [
+ _HWLOC_CHECK_DECL([strcasecmp], [
+ AC_DEFINE([HWLOC_HAVE_DECL_STRCASECMP], [1], [Define to 1 if function `strcasecmp' is declared by system headers])
+ ])
+ ])
+ AC_CHECK_FUNCS([strncasecmp], [
+ _HWLOC_CHECK_DECL([strncasecmp], [
+ AC_DEFINE([HWLOC_HAVE_DECL_STRNCASECMP], [1], [Define to 1 if function `strncasecmp' is declared by system headers])
+ ])
+ ])
+
+ AC_CHECK_FUNCS([strftime])
+ AC_CHECK_FUNCS([setlocale])
+
+ AC_CHECK_HEADER([stdint.h], [
+ AC_DEFINE([HWLOC_HAVE_STDINT_H], [1], [Define to 1 if you have the header file.])
+ ])
+ AC_CHECK_HEADERS([sys/mman.h])
+
+ if test x$hwloc_freebsd = xyes; then
+ echo
+ echo "**** FreeBSD-specific checks"
+
+ AC_CHECK_HEADERS([sys/domainset.h])
+ AC_CHECK_HEADERS([sys/thr.h])
+ AC_CHECK_HEADERS([pthread_np.h])
+ AC_CHECK_HEADERS([sys/cpuset.h],,,[[#include ]])
+ AC_CHECK_FUNCS([cpuset_setaffinity])
+ AC_CHECK_FUNCS([cpuset_setid])
+
+ echo "**** end of FreeBSD-specific checks"
+ echo
+ fi
+
+ if test x$hwloc_windows = xyes; then
+ echo
+ echo "**** Windows-specific checks"
+
+ AC_CHECK_HEADER([windows.h], [
+ AC_DEFINE([HWLOC_HAVE_WINDOWS_H], [1], [Define to 1 if you have the `windows.h' header.])
+ ])
+
+ old_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS -D_WIN32_WINNT=0x0601"
+ AC_CHECK_TYPES([KAFFINITY,
+ PROCESSOR_CACHE_TYPE,
+ CACHE_DESCRIPTOR,
+ LOGICAL_PROCESSOR_RELATIONSHIP,
+ RelationProcessorPackage,
+ 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_DECLS([GetModuleFileName], [], [], [#include ])
+
+ 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_PATH_PROGS([HWLOC_MS_LIB], [lib])
+
+ echo "**** end of Windows-specific checks"
+ echo
+ fi
+
+ if test x$hwloc_solaris = xyes; then
+ echo
+ echo "**** Solaris-specific checks"
+
+ 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_HEADERS([picl.h], [
+ AC_CHECK_LIB([picl], [picl_initialize],
+ [HWLOC_LIBS="-lpicl $HWLOC_LIBS"])])
+
+ echo "**** end of Solaris-specific checks"
+ echo
+ fi
+
+ if test x$hwloc_aix = xyes; then
+ echo
+ echo "**** AIX-specific checks"
+
+ AC_SEARCH_LIBS([pthread_getthrds_np], [pthread], [
+ AC_DEFINE([HWLOC_HAVE_PTHREAD_GETTHRDS_NP], 1, `Define to 1 if you have pthread_getthrds_np')
+ ])
+
+ echo "**** end of AIX-specific checks"
+ echo
+ fi
+
+ if test x$hwloc_darwin = xyes; then
+ echo
+ echo "**** Darwin-specific checks"
+
+ AC_MSG_CHECKING([for the Foundation framework])
+ tmp_save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -framework Foundation"
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([
+#include
+ ], [
+return CFDictionaryGetTypeID();
+ ])],
+ [AC_MSG_RESULT(yes)
+ HWLOC_DARWIN_LDFLAGS="$HWLOC_DARWIN_LDFLAGS -framework Foundation"
+ AC_DEFINE(HWLOC_HAVE_DARWIN_FOUNDATION, 1, `Define to 1 if you have the Foundation Darwin framework')],
+ [AC_MSG_RESULT(no)])
+ LDFLAGS="$tmp_save_LDFLAGS"
+
+ AC_MSG_CHECKING([for the IOKit framework])
+ tmp_save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -framework IOKit"
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([
+#include
+ ], [
+io_registry_entry_t service = IORegistryGetRootEntry(kIOMasterPortDefault);
+ ])],
+ [AC_MSG_RESULT(yes)
+ HWLOC_DARWIN_LDFLAGS="$HWLOC_DARWIN_LDFLAGS -framework IOKit"
+ AC_DEFINE(HWLOC_HAVE_DARWIN_IOKIT, 1, `Define to 1 if you have the IOKit Darwin framework')],
+ [AC_MSG_RESULT(no)])
+ LDFLAGS="$tmp_save_LDFLAGS"
+
+ AC_SUBST(HWLOC_DARWIN_LDFLAGS)
+
+ echo "**** end of Darwin-specific checks"
+ echo
+ fi
+
+ if test x$hwloc_linux = xyes; then
+ echo
+ echo "**** Linux-specific checks"
+
+ AC_CHECK_DECLS([sched_getcpu],,[:],[[
+ #ifndef _GNU_SOURCE
+ # define _GNU_SOURCE
+ #endif
+ #include
+ ]])
+
+ _HWLOC_CHECK_DECL([sched_setaffinity], [
+ hwloc_have_sched_setaffinity=yes
+ 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])])
+
+ # 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
+
+ echo "**** end of Linux-specific checks"
+ echo
+ fi
+
+ if test "x$hwloc_linux" != "xyes" ; then
+ # Don't look for sys/sysctl.h on Linux because it's deprecated and
+ # generates a warning in GCC10. Also it's unneeded.
+ AC_CHECK_HEADERS([sys/param.h])
+ AC_CHECK_HEADERS([sys/sysctl.h], [
+ AC_CHECK_DECLS([CTL_HW, HW_NCPU, HW_REALMEM64, HW_MEMSIZE64, HW_PHYSMEM64, HW_USERMEM64, HW_REALMEM, HW_MEMSIZE, HW_PHYSMEM, HW_USERMEM],,,[[
+ #if HAVE_SYS_PARAM_H
+ #include
+ #endif
+ #include
+ ]])
+ ],,[
+ AC_INCLUDES_DEFAULT
+ #if HAVE_SYS_PARAM_H
+ #include
+ #endif
+ ])
+
+ # 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_LINK_IFELSE([
+ AC_LANG_PROGRAM([
+ #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_LINK_IFELSE([
+ AC_LANG_PROGRAM([
+ #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([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_DECLS([fabsf], [
+ AC_CHECK_LIB([m], [fabsf],
+ [need_libm=yes])
+ ], [], [[#include ]])
+ AC_CHECK_DECLS([modff], [
+ AC_CHECK_LIB([m], [modff],
+ [need_libm=yes])
+ ], [], [[#include ]])
+ if test x$need_libm = xyes; then
+ HWLOC_LIBS="-lm $HWLOC_LIBS"
+ fi
+
+ 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_CHECK_HEADERS([mach/mach_init.h])
+ AC_CHECK_HEADERS([mach_init.h])
+ AC_CHECK_HEADERS([mach/mach_host.h], [
+ AC_CHECK_FUNCS([host_info])
+ ])
+
+ 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])
+ # 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
+
+ broken_snprintf=no
+ AC_MSG_CHECKING([whether snprintf is correct])
+ AC_RUN_IFELSE([
+ AC_LANG_PROGRAM([[
+#include
+#include
+#include
+ ]], [[
+char buf[7];
+assert(snprintf(buf, 7, "abcdef") == 6);
+assert(snprintf(buf, 6, "abcdef") == 6);
+assert(snprintf(buf, 5, "abcdef") == 6);
+assert(snprintf(buf, 0, "abcdef") == 6);
+assert(snprintf(NULL, 0, "abcdef") == 6);
+return 0;
+ ]])],
+ AC_MSG_RESULT([yes]),
+ [
+ AC_MSG_RESULT([no])
+ broken_snprintf=yes
+ ], [
+ AC_MSG_RESULT([don't know (cross-compiling)])
+ broken_snprintf=maybe
+ ])
+
+ if test x$broken_snprintf = xno; then
+ AC_DEFINE([HWLOC_HAVE_CORRECT_SNPRINTF], 1, [Define to 1 if snprintf supports NULL output buffer and returns the correct length on truncation])
+ fi
+
+ AC_CHECK_DECLS([getprogname], [], [], [AC_INCLUDES_DEFAULT])
+ AC_CHECK_DECLS([getexecname], [], [], [AC_INCLUDES_DEFAULT])
+ # program_invocation_name and __progname may be available but not exported in headers
+ AC_MSG_CHECKING([for program_invocation_name])
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([
+ #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_LINK_IFELSE([
+ AC_LANG_PROGRAM([
+ #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_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])
+
+ # Components and pciaccess 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_NOTICE([trying again with -lpthread ...])
+ # Try again with explicit -lpthread
+ $as_unset ac_cv_func_pthread_mutex_lock
+ tmp_save_LIBS=$LIBS
+ LIBS="$LIBS -lpthread"
+ AC_CHECK_FUNC([pthread_mutex_lock],
+ [hwloc_pthread_mutex_happy=yes
+ HWLOC_LIBS="$HWLOC_LIBS -lpthread"
+ ])
+ 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])])
+
+ 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])
+ ])
+
+ AS_IF([test "x$enable_32bits_pci_domain" = "xyes"], [
+ AC_DEFINE([HWLOC_HAVE_32BITS_PCI_DOMAIN], 1,
+ [Define to 1 if --enable-32bits-pci-domain is called.])
+ ])
+
+ # 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
+ echo
+ echo "**** pciaccess configuration"
+
+ 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"
+ AC_SUBST(HWLOC_PCIACCESS_LIBS)
+ ])
+ ])
+ ])
+
+ AS_IF([test "$hwloc_pciaccess_happy" = "yes"],
+ [hwloc_components="$hwloc_components pci"
+ hwloc_pci_component_maybeplugin=1])
+
+ echo "**** end of pciaccess configuration"
+ 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
+
+ if test "x$enable_io" != xno && test "x$enable_opencl" != xno -o "x$enable_cuda" != xno -o "x$enable_nvml" != xno; then
+ echo
+ echo "**** NVIDIA-common configuration"
+
+ # Try to find CUDA pkg-config using a specific CUDA version
+ # Use --with-cuda-version first, or $CUDA_VERSION
+ cuda_version=$CUDA_VERSION
+ if test "x$with_cuda_version" != xno -a "x$with_cuda_version" != x; then
+ cuda_version=$with_cuda_version
+ fi
+ if test x$cuda_version != x; then
+ AC_MSG_CHECKING([if cuda-$cuda_version.pc exists])
+ HWLOC_PKG_CHECK_EXISTS([cuda-$cuda_version], [
+ cudapc=cuda-$cuda_version
+ AC_MSG_RESULT(yes)
+ _HWLOC_PKG_CONFIG(cuda_includedir, [variable=includedir], $cudapc)
+ _HWLOC_PKG_CONFIG(cuda_libdir, [variable=libdir], $cudapc)
+ ], [AC_MSG_RESULT(no)])
+ AC_MSG_CHECKING([if cudart-$cuda_version.pc exists])
+ HWLOC_PKG_CHECK_EXISTS([cudart-$cuda_version], [
+ cudartpc=cudart-$cuda_version
+ AC_MSG_RESULT(yes)
+ ], [AC_MSG_RESULT(no)])
+ fi
+
+ # OpenCL/NVML/CUDA may use CUDA directories, define common directories
+ # libnvidia-ml.so (and libcuda.so for tests) is under stubs
+ # when the driver isn't installed on the build machine.
+ # hwloc programs will fail to link if libnvidia-ml.so.1 is not available there too.
+ if test "x$with_cuda" != xno -a "x$with_cuda" != x; then
+ AC_MSG_NOTICE([using custom CUDA install path $with_cuda ...])
+ if test "x${ac_cv_sizeof_void_p}" = x4; then
+ HWLOC_CUDA_COMMON_LDFLAGS="-L$with_cuda/lib/ -L$with_cuda/lib/stubs/"
+ else
+ HWLOC_CUDA_COMMON_LDFLAGS="-L$with_cuda/lib64/ -L$with_cuda/lib64/stubs/"
+ fi
+ HWLOC_CUDA_COMMON_CPPFLAGS="-I$with_cuda/include/"
+
+ else if test x$HWLOC_pkg_cv_cuda_includedir != x -a x$HWLOC_pkg_cv_cuda_libdir != x; then
+ # or use cuda libdir/includedir from cuda.pc above
+ AC_MSG_NOTICE([using CUDA libdir and includedir from ${cudapc}.pc ...])
+ HWLOC_CUDA_COMMON_LDFLAGS="-L$HWLOC_pkg_cv_cuda_libdir -L$HWLOC_pkg_cv_cuda_libdir/stubs/"
+ HWLOC_CUDA_COMMON_CPPFLAGS="-I$HWLOC_pkg_cv_cuda_includedir"
+
+ else if test -f /usr/local/cuda/include/cuda.h; then
+ # or try the default /usr/local/cuda
+ AC_MSG_NOTICE([using default CUDA install path /usr/local/cuda ...])
+ HWLOC_CUDA_COMMON_LDFLAGS="-L/usr/local/cuda/lib64/ -L/usr/local/cuda/lib64/stubs/"
+ HWLOC_CUDA_COMMON_CPPFLAGS="-I/usr/local/cuda/include/"
+ fi fi fi
+
+ AC_MSG_NOTICE([common CUDA/OpenCL/NVML CPPFLAGS: $HWLOC_CUDA_COMMON_CPPFLAGS])
+ AC_MSG_NOTICE([common CUDA/OpenCL/NVML LDFLAGS: $HWLOC_CUDA_COMMON_LDFLAGS])
+
+ echo "**** end of NVIDIA-common configuration"
+ fi
+
+ # CUDA support
+ hwloc_have_cuda=no
+ hwloc_have_cudart=no
+ if test "x$enable_io" != xno && test "x$enable_cuda" != "xno"; then
+ echo
+ echo "**** CUDA configuration"
+
+ # Look for CUDA first, for our test only
+ if test "x$cudapc" != x; then
+ HWLOC_PKG_CHECK_MODULES([CUDA], [$cudapc], [cuInit], [cuda.h], [hwloc_have_cuda=yes])
+ else
+ HWLOC_CUDA_CPPFLAGS="$HWLOC_CUDA_COMMON_CPPFLAGS"
+ HWLOC_CUDA_LDFLAGS="$HWLOC_CUDA_COMMON_LDFLAGS"
+ tmp_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $HWLOC_CUDA_CPPFLAGS"
+ tmp_save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $HWLOC_CUDA_LDFLAGS"
+ 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], [
+ HWLOC_CUDA_LIBS="-lcuda"
+ hwloc_have_cuda=yes
+ ])
+ ],
+ [AC_MSG_RESULT(no)])])
+ CPPFLAGS="$tmp_save_CPPFLAGS"
+ LDFLAGS="$tmp_save_LDFLAGS"
+ fi
+ if test x$hwloc_have_cuda = xyes; then
+ AC_SUBST(HWLOC_CUDA_CPPFLAGS)
+ AC_SUBST(HWLOC_CUDA_CFLAGS)
+ AC_SUBST(HWLOC_CUDA_LIBS)
+ AC_SUBST(HWLOC_CUDA_LDFLAGS)
+ AC_DEFINE([HAVE_CUDA], 1, [Define to 1 if we have -lcuda])
+ fi
+
+ # Look for CUDART now, for library and tests
+ if test "x$cudartpc" != x; then
+ HWLOC_PKG_CHECK_MODULES([CUDART], [$cudartpc], [cudaGetDeviceProperties], [cuda_runtime_api.h], [
+ hwloc_have_cudart=yes
+ HWLOC_CUDART_REQUIRES=$cudartpc
+ ])
+ else
+ HWLOC_CUDART_CPPFLAGS="$HWLOC_CUDA_COMMON_CPPFLAGS"
+ HWLOC_CUDART_LDFLAGS="$HWLOC_CUDA_COMMON_LDFLAGS"
+ tmp_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $HWLOC_CUDART_CPPFLAGS"
+ tmp_save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $HWLOC_CUDART_LDFLAGS"
+ 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_CUDART_LIBS="-lcudart"
+ hwloc_have_cudart=yes
+ ])
+ ])
+ ])
+ CPPFLAGS="$tmp_save_CPPFLAGS"
+ LDFLAGS="$tmp_save_LDFLAGS"
+ fi
+ if test x$hwloc_have_cudart = xyes; then
+ AC_MSG_CHECKING([whether a program linked with -lcudart can run])
+ tmp_save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $HWLOC_CUDART_LDFLAGS"
+ tmp_save_LIBS="$LIBS"
+ LIBS="$LIBS $HWLOC_CUDART_LIBS"
+ AC_RUN_IFELSE([
+ AC_LANG_PROGRAM([[
+#include
+int cudaGetDeviceCount(int *);
+]], [[
+int n;
+cudaGetDeviceCount(&n); /* may fail if using stubs, but we're looking for libcudart load error instead only */
+return 0;
+]]
+ )],
+ [AC_MSG_RESULT([yes])
+ hwloc_cuda_warning=no],
+ [AC_MSG_RESULT([no])
+ hwloc_cuda_warning=yes],
+ [AC_MSG_RESULT([don't know (cross-compiling)])])
+ LDFLAGS="$tmp_save_LDFLAGS"
+ LIBS="$tmp_save_LIBS"
+ AC_SUBST(HWLOC_CUDART_CPPFLAGS)
+ AC_SUBST(HWLOC_CUDART_CFLAGS)
+ AC_SUBST(HWLOC_CUDART_LIBS)
+ AC_SUBST(HWLOC_CUDART_LDFLAGS)
+ AC_DEFINE([HWLOC_HAVE_CUDART], [1], [Define to 1 if you have the `cudart' SDK.])
+ fi
+
+ 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])])
+ AS_IF([test "x$with_cuda_version" != x -a "$hwloc_have_cudart" = "no"],
+ [AC_MSG_WARN([Specified --with-cuda-version 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
+
+ echo "**** end of CUDA configuration"
+ fi
+ # don't add LIBS/CFLAGS yet, depends on plugins
+
+ # NVML support
+ hwloc_nvml_happy=no
+ hwloc_nvml_warning=no
+ if test "x$enable_io" != xno && test "x$enable_nvml" != "xno"; then
+ echo
+ echo "**** NVML configuration"
+
+ hwloc_nvml_happy=yes
+ HWLOC_NVML_CPPFLAGS="$HWLOC_CUDA_COMMON_CPPFLAGS"
+ HWLOC_NVML_LDFLAGS="$HWLOC_CUDA_COMMON_LDFLAGS"
+ tmp_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $HWLOC_NVML_CPPFLAGS"
+ tmp_save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $HWLOC_NVML_LDFLAGS"
+ tmp_save_LIBS="$LIBS"
+ AC_CHECK_HEADERS([nvml.h], [
+ AC_CHECK_LIB([nvidia-ml],
+ [nvmlInit],
+ [AC_MSG_CHECKING([whether a program linked with -lnvidia-ml can run])
+ HWLOC_NVML_LIBS="-lnvidia-ml"
+ LIBS="$LIBS $HWLOC_NVML_LIBS"
+ AC_RUN_IFELSE([
+ AC_LANG_PROGRAM([[
+#include
+char nvmlInit ();
+]], [[
+ return nvmlInit ();
+]]
+ )],
+ [AC_MSG_RESULT([yes])
+ hwloc_nvml_warning=no],
+ [AC_MSG_RESULT([no])
+ hwloc_nvml_warning=yes],
+ [AC_MSG_RESULT([don't know (cross-compiling)])
+ hwloc_nvml_happy=maybe])],
+ [hwloc_nvml_happy=no])
+ ], [hwloc_nvml_happy=no])
+ LIBS="$tmp_save_LIBS"
+ CPPFLAGS="$tmp_save_CPPFLAGS"
+ LDFLAGS="$tmp_save_LDFLAGS"
+
+ if test "x$hwloc_nvml_happy" = "xyes"; then
+ tmp_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $HWLOC_NVML_CPPFLAGS"
+ AC_CHECK_DECLS([nvmlDeviceGetMaxPcieLinkGeneration],,[:],[[#include ]])
+ CPPFLAGS="$tmp_save_CPPFLAGS"
+ fi
+
+ echo "**** end of NVML configuration"
+ fi
+ AC_SUBST(HWLOC_NVML_LIBS)
+ AC_SUBST(HWLOC_NVML_LDFLAGS)
+ AC_SUBST(HWLOC_NVML_CPPFLAGS)
+ # 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
+
+ # RSMI support, rocm_smi64 is just library name and not related to 32/64 bits
+ hwloc_rsmi_happy=no
+ if test "x$enable_io" != xno && test "x$enable_rsmi" != "xno"; then
+ echo
+ echo "**** RSMI configuration"
+
+ # Try to find the ROCm default path a specific ROCm version
+ # Use --with-rocm-version first, or $CUDA_VERSION
+ rocm_version=$ROCM_VERSION
+ if test "x$with_rocm_version" != xno -a "x$with_rocm_version" != x; then
+ rocm_version=$with_rocm_version
+ fi
+ if test "x$with_rocm" != x -a "x$with_rocm" != xyes; then
+ rocm_dir=$with_rocm
+ AC_MSG_NOTICE([using custom ROCm install path $rocm_dir ...])
+ else if test "x$rocm_version" != x; then
+ rocm_dir=/opt/rocm-${rocm_version}
+ AC_MSG_NOTICE([assuming ROCm $rocm_version is installed in $rocm_dir ...])
+ else if test -d /opt/rocm; then
+ rocm_dir=/opt/rocm
+ AC_MSG_NOTICE([using standard ROCm install path $rocm_dir ...])
+ else
+ AC_MSG_NOTICE([assuming ROCm is installed in standard directories ...])
+ fi fi fi
+ if test "x$rocm_dir" != x; then
+ HWLOC_RSMI_CPPFLAGS="-I$rocm_dir/rocm_smi/include/"
+ HWLOC_RSMI_LDFLAGS="-L$rocm_dir/rocm_smi/lib/"
+ fi
+
+ hwloc_rsmi_happy=yes
+ CPPFLAGS_save="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $HWLOC_RSMI_CPPFLAGS"
+ AC_CHECK_HEADERS([rocm_smi/rocm_smi.h], [
+ LDFLAGS_save="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $HWLOC_RSMI_LDFLAGS"
+ LIBS_save="$LIBS"
+ AC_CHECK_LIB([rocm_smi64],
+ [rsmi_init],
+ [AC_MSG_CHECKING([whether a program linked with -lrocm_smi64 can run])
+ HWLOC_RSMI_LIBS="-lrocm_smi64"
+ LIBS="$LIBS $HWLOC_RSMI_LIBS"
+ AC_RUN_IFELSE([
+ AC_LANG_PROGRAM([[
+#include
+char rsmi_init(int);
+]], [[
+return rsmi_init(0);
+]]
+ )],
+ [AC_MSG_RESULT([yes])
+ hwloc_rsmi_warning=no],
+ [AC_MSG_RESULT([no])
+ hwloc_rsmi_warning=yes],
+ [AC_MSG_RESULT([don't know (cross-compiling)])])],
+ [hwloc_rsmi_happy=no])
+ LDFLAGS="$LDFLAGS_save"
+ LIBS="$LIBS_save"
+ ], [hwloc_rsmi_happy=no])
+ CPPFLAGS="$CPPFLAGS_save"
+
+ echo "**** end of RSMI configuration"
+ fi
+ AC_SUBST(HWLOC_RSMI_CPPFLAGS)
+ AC_SUBST(HWLOC_RSMI_LDFLAGS)
+ AC_SUBST(HWLOC_RSMI_LIBS)
+ # If we asked for rsmi support but couldn't deliver, fail
+ AS_IF([test "$enable_rsmi" = "yes" -a "$hwloc_rsmi_happy" = "no"],
+ [AC_MSG_WARN([Specified --enable-rsmi switch, but could not])
+ AC_MSG_WARN([find appropriate support])
+ AC_MSG_ERROR([Cannot continue])])
+ if test "x$hwloc_rsmi_happy" = "xyes"; then
+ AC_DEFINE([HWLOC_HAVE_RSMI], [1], [Define to 1 if you have the `RSMI' library.])
+ AC_SUBST([HWLOC_HAVE_RSMI], [1])
+ hwloc_components="$hwloc_components rsmi"
+ hwloc_rsmi_component_maybeplugin=1
+ else
+ AC_SUBST([HWLOC_HAVE_RSMI], [0])
+ fi
+ # 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
+ echo
+ echo "**** OpenCL configuration"
+
+ 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
+ HWLOC_OPENCL_CPPFLAGS="$HWLOC_CUDA_COMMON_CPPFLAGS"
+ HWLOC_OPENCL_LDFLAGS="$HWLOC_CUDA_COMMON_LDFLAGS"
+ if test "x$rocm_dir" != x; then
+ HWLOC_OPENCL_CPPFLAGS="$HWLOC_OPENCL_CPPFLAGS -I$rocm_dir/opencl/include/"
+ HWLOC_OPENCL_LDFLAGS="$HWLOC_OPENCL_LDFLAGS -L$rocm_dir/opencl/lib/"
+ fi
+ tmp_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $HWLOC_OPENCL_CPPFLAGS"
+ tmp_save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $HWLOC_OPENCL_LDFLAGS"
+ AC_CHECK_HEADERS([CL/cl_ext.h], [
+ AC_CHECK_LIB([OpenCL], [clGetDeviceIDs], [HWLOC_OPENCL_LIBS="-lOpenCL"], [hwloc_opencl_happy=no])
+ ], [hwloc_opencl_happy=no])
+ CPPFLAGS="$tmp_save_CPPFLAGS"
+ LDFLAGS="$tmp_save_LDFLAGS"
+ ;;
+ esac
+
+ echo "**** end of OpenCL configuration"
+ fi
+ AC_SUBST(HWLOC_OPENCL_CPPFLAGS)
+ 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
+
+ # LevelZero support
+ hwloc_levelzero_happy=no
+ if test "x$enable_io" != xno && test "x$enable_levelzero" != "xno"; then
+ echo
+ echo "**** LevelZero configuration"
+
+ HWLOC_PKG_CHECK_MODULES([LEVELZERO], [libze_loader], [zesDevicePciGetProperties], [level_zero/zes_api.h],
+ [hwloc_levelzero_happy=yes
+ HWLOC_LEVELZERO_REQUIRES=libze_loader
+ ], [hwloc_levelzero_happy=no])
+ if test x$hwloc_levelzero_happy = xno; then
+ hwloc_levelzero_happy=yes
+ AC_CHECK_HEADERS([level_zero/ze_api.h], [
+ AC_CHECK_LIB([ze_loader], [zeInit], [
+ AC_CHECK_HEADERS([level_zero/zes_api.h], [
+ AC_CHECK_LIB([ze_loader], [zesDevicePciGetProperties], [HWLOC_LEVELZERO_LIBS="-lze_loader"], [hwloc_levelzero_happy=no])
+ ], [hwloc_levelzero_happy=no])
+ ], [hwloc_levelzero_happy=no])
+ ], [hwloc_levelzero_happy=no])
+ fi
+
+ echo "**** end of LevelZero configuration"
+ fi
+ AC_SUBST(HWLOC_LEVELZERO_LIBS)
+ # If we asked for LevelZero support but couldn't deliver, fail
+ AS_IF([test "$enable_levelzero" = "yes" -a "$hwloc_levelzero_happy" = "no"],
+ [AC_MSG_WARN([Specified --enable-levelzero switch, but could not])
+ AC_MSG_WARN([find appropriate support])
+ AC_MSG_ERROR([Cannot continue])])
+ if test "x$hwloc_levelzero_happy" = "xyes"; then
+ AC_DEFINE([HWLOC_HAVE_LEVELZERO], [1], [Define to 1 if you have the `LevelZero' library.])
+ AC_SUBST([HWLOC_HAVE_LEVELZERO], [1])
+ hwloc_components="$hwloc_components levelzero"
+ hwloc_levelzero_component_maybeplugin=1
+ else
+ AC_SUBST([HWLOC_HAVE_LEVELZERO], [0])
+ fi
+ # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins
+
+ # GL Support
+ hwloc_gl_happy=no
+ if test "x$enable_io" != xno && test "x$enable_gl" != "xno"; then
+ echo
+ echo "**** NVIDIA GL configuration"
+
+ hwloc_gl_happy=yes
+
+ # some X11 support (less then lstopo in hwloc_internal.m4)
+ 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],
+ [hwloc_enable_X11=yes])
+ ])
+ CPPFLAGS=$CPPFLAGS_save
+ LIBS=$LIBS_save
+
+ 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
+
+ echo "**** end of NVIDIA GL configuration"
+ fi
+ # don't add LIBS/CFLAGS yet, depends on plugins
+
+ # libxml2 support
+ hwloc_libxml2_happy=
+ if test "x$enable_libxml2" != "xno"; then
+ echo
+ echo "**** libxml2 configuration"
+
+ HWLOC_PKG_CHECK_MODULES([LIBXML2], [libxml-2.0], [xmlNewDoc], [libxml/parser.h],
+ [hwloc_libxml2_happy=yes],
+ [hwloc_libxml2_happy=no])
+
+ echo "**** end of libxml2 configuration"
+ 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
+ echo
+ echo "**** x86 CPUID configuration"
+
+ 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"
+
+ echo "**** end of x86 CPUID configuration"
+ fi
+
+ #
+ # Now enable registration of listed components
+ #
+ echo
+ echo "**** component and plugin-specific configuration"
+
+ # Plugin support
+ AC_MSG_CHECKING([if plugin support is enabled])
+ # Plugins (even core support) are totally disabled by default.
+ # Pass --enable-plugins=foo (with "foo" NOT an existing component) to enable plugins but build none of them.
+ if test "x$enable_plugins" = xyes; then
+ hwloc_have_plugins=yes
+ requested_plugins="$hwloc_components"
+ else if test "x$enable_plugins" != xno -a "x$enable_plugins" != x; then
+ hwloc_have_plugins=yes
+ requested_plugins=`echo $enable_plugins | sed -e 's/,/ /g'`
+ else
+ hwloc_have_plugins=no
+ fi fi
+ AC_MSG_RESULT($hwloc_have_plugins)
+
+ if test "x$hwloc_have_plugins" = xyes; then
+ # dlopen and ltdl (at least 2.4.2) doesn't work on AIX
+ # posix linkers don't work well with plugins and windows dll constraints
+ if test "x$enable_plugin_dlopen" = x; then
+ if test "x$hwloc_aix" = "xyes"; then
+ AC_MSG_WARN([dlopen does not work on AIX, disabled by default.])
+ enable_plugin_dlopen=no
+ else if test "x$hwloc_windows" = "xyes"; then
+ AC_MSG_WARN([dlopen not supported on non-native Windows build, disabled by default.])
+ enable_plugin_dlopen=no
+ fi fi
+ fi
+ if test "x$enable_plugin_ltdl" = x; then
+ if test "x$hwloc_aix" = "xyes"; then
+ AC_MSG_WARN([ltdl does not work on AIX, disabled by default.])
+ enable_plugin_dlopen=no
+ else if test "x$hwloc_windows" = "xyes"; then
+ AC_MSG_WARN([ltdl not supported on non-native Windows build, disabled by default.])
+ enable_plugin_dlopen=no
+ fi fi
+ fi
+
+ # Look for dlopen
+ if test "x$enable_plugin_dlopen" != xno; then
+ HWLOC_CHECK_DLOPEN([hwloc_dlopen_ready], [hwloc_dlopen_libs])
+ fi
+ # Look for ltdl
+ if test "x$enable_plugin_ltdl" != xno; then
+ HWLOC_CHECK_LTDL([hwloc_ltdl_ready], [hwloc_ltdl_libs])
+ fi
+
+ # Now use dlopen by default, or ltdl, or just fail to enable plugins
+ AC_MSG_CHECKING([which library to use for loading plugins])
+ if test "x$hwloc_dlopen_ready" = xyes; then
+ AC_MSG_RESULT([dlopen])
+ hwloc_plugins_load=dlopen
+ # Now enable dlopen libs
+ HWLOC_DL_LIBS="$hwloc_dlopen_libs"
+ AC_SUBST(HWLOC_DL_LIBS)
+ else if test x$hwloc_ltdl_ready = xyes; then
+ AC_MSG_RESULT([ltdl])
+ hwloc_plugins_load=ltdl
+ # Now enable ltdl libs
+ AC_DEFINE([HWLOC_HAVE_LTDL], 1, [Define to 1 if the hwloc library should use ltdl for loading plugins])
+ HWLOC_LTDL_LIBS="$hwloc_ltdl_libs"
+ AC_SUBST(HWLOC_LTDL_LIBS)
+ # Add ltdl static-build dependencies to hwloc.pc
+ HWLOC_CHECK_LTDL_DEPS
+ else
+ AC_MSG_RESULT([none])
+ AC_MSG_WARN([Plugin support requested, but could not enable dlopen or ltdl])
+ AC_MSG_ERROR([Cannot continue])
+ fi fi
+
+ AC_DEFINE([HWLOC_HAVE_PLUGINS], 1, [Define to 1 if the hwloc library should support dynamically-loaded plugins])
+ fi
+
+ AC_ARG_WITH([hwloc-plugins-path],
+ AS_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}"
+
+ HWLOC_PREPARE_FILTER_COMPONENTS([$requested_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=list (space separated)
+ 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_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_PCIACCESS_LDFLAGS"
+ HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_PCIACCESS_CPPFLAGS $HWLOC_PCIACCESS_CFLAGS"
+ HWLOC_REQUIRES="$HWLOC_PCIACCESS_REQUIRES $HWLOC_REQUIRES"
+ AC_DEFINE([HWLOC_PCI_COMPONENT_BUILTIN], 1, [Define if the PCI component is built statically inside libhwloc])])
+ 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_CPPFLAGS $HWLOC_OPENCL_CFLAGS"
+ HWLOC_REQUIRES="$HWLOC_OPENCL_REQUIRES $HWLOC_REQUIRES"
+ AC_DEFINE([HWLOC_OPENCL_COMPONENT_BUILTIN], 1, [Define if the OpenCL component is built statically inside libhwloc])])
+ AS_IF([test "$hwloc_cuda_component" = "static"],
+ [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_CUDART_LIBS"
+ HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_CUDART_LDFLAGS"
+ HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_CUDART_CPPFLAGS $HWLOC_CUDART_CFLAGS"
+ HWLOC_REQUIRES="$HWLOC_CUDART_REQUIRES $HWLOC_REQUIRES"
+ AC_DEFINE([HWLOC_CUDA_COMPONENT_BUILTIN], 1, [Define if the CUDA component is built statically inside libhwloc])])
+ AS_IF([test "$hwloc_nvml_component" = "static"],
+ [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_NVML_LIBS"
+ HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_NVML_LDFLAGS"
+ HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_NVML_CPPFLAGS $HWLOC_NVML_CFLAGS"
+ HWLOC_REQUIRES="$HWLOC_NVML_REQUIRES $HWLOC_REQUIRES"
+ AC_DEFINE([HWLOC_NVML_COMPONENT_BUILTIN], 1, [Define if the NVML component is built statically inside libhwloc])])
+ AS_IF([test "$hwloc_rsmi_component" = "static"],
+ [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_RSMI_LIBS"
+ HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_RSMI_LDFLAGS"
+ HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_RSMI_CPPFLAGS $HWLOC_RSMI_CFLAGS"
+ HWLOC_REQUIRES="$HWLOC_RSMI_REQUIRES $HWLOC_REQUIRES"
+ AC_DEFINE([HWLOC_RSMI_COMPONENT_BUILTIN], 1, [Define if the RSMI component is built statically inside libhwloc])])
+ AS_IF([test "$hwloc_levelzero_component" = "static"],
+ [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_LEVELZERO_LIBS"
+ HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_LEVELZERO_LDFLAGS"
+ HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_LEVELZERO_CPPFLAGS $HWLOC_LEVELZERO_CFLAGS"
+ HWLOC_REQUIRES="$HWLOC_LEVELZERO_REQUIRES $HWLOC_REQUIRES"
+ AC_DEFINE([HWLOC_LEVELZERO_COMPONENT_BUILTIN], 1, [Define if the LevelZero component is built statically inside libhwloc])])
+ AS_IF([test "$hwloc_gl_component" = "static"],
+ [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_GL_LIBS"
+ HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_GL_LDFLAGS"
+ HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_GL_CPPFLAGS $HWLOC_GL_CFLAGS"
+ HWLOC_REQUIRES="$HWLOC_GL_REQUIRES $HWLOC_REQUIRES"
+ AC_DEFINE([HWLOC_GL_COMPONENT_BUILTIN], 1, [Define if the GL component is built statically inside libhwloc])])
+ AS_IF([test "$hwloc_xml_libxml_component" = "static"],
+ [HWLOC_LIBS="$HWLOC_LIBS $HWLOC_LIBXML2_LIBS"
+ HWLOC_LDFLAGS="$HWLOC_LDFLAGS $HWLOC_LIBXML2_LDFLAGS"
+ HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_LIBXML2_CPPFLAGS $HWLOC_LIBXML2_CFLAGS"
+ HWLOC_REQUIRES="$HWLOC_LIBXML2_REQUIRES $HWLOC_REQUIRES"
+ AC_DEFINE([HWLOC_XML_LIBXML_COMPONENT_BUILTIN], 1, [Define if the libxml XML component is built statically inside libhwloc])])
+
+ echo "**** end of component and plugin configuration"
+
+ #
+ # 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_LDFLAGS=$HWLOC_LDFLAGS
+ 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_LDFLAGS)
+ 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_RSMI], [test "$hwloc_rsmi_happy" = "yes"])
+ AM_CONDITIONAL([HWLOC_HAVE_LEVELZERO], [test "$hwloc_levelzero_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_32BITS_PCI_DOMAIN], [test "x$enable_32bits_pci_domain" = "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_RSMI_BUILD_STATIC], [test "x$hwloc_rsmi_component" = "xstatic"])
+ AM_CONDITIONAL([HWLOC_LEVELZERO_BUILD_STATIC], [test "x$hwloc_levelzero_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
+
+#-----------------------------------------------------------------------
+
+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_DLOPEN
+dnl
+dnl set $1 to yes or not
+dnl set $2 to -ldl or so
+AC_DEFUN([HWLOC_CHECK_DLOPEN], [
+ [$1]=no
+ AC_MSG_CHECKING([for dlopen])
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+ #include
+ #include
+ void *handle;
+ ]], [[
+ handle = dlopen(NULL, RTLD_NOW|RTLD_LOCAL);
+ ]])],
+ [AC_MSG_RESULT([yes])
+ [$1]=yes],
+ [AC_MSG_RESULT([no])
+ AC_CHECK_HEADER([dlfcn.h],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [[$1]=yes
+ [$2]=-ldl])
+ ])
+ ])
+])
+
+#-----------------------------------------------------------------------
+
+dnl HWLOC_CHECK_LTDL
+dnl
+dnl set $1 to yes or not
+dnl set $2 to -lltdl or so
+AC_DEFUN([HWLOC_CHECK_LTDL], [
+ [$1]=no
+ AC_CHECK_HEADER([ltdl.h],
+ [AC_CHECK_LIB([ltdl], [lt_dlopenext],
+ [[$1]=yes
+ [$2]=-lltdl])
+ ])
+])
+
+#-----------------------------------------------------------------------
+
+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/3rd-party/hwloc-2.7.1/config/hwloc_check_attributes.m4 b/3rd-party/hwloc-2.7.1/config/hwloc_check_attributes.m4
new file mode 100644
index 0000000000000000000000000000000000000000..5062beb4ddbed5013fd2d5a8357ad6ea266a2aff
--- /dev/null
+++ b/3rd-party/hwloc-2.7.1/config/hwloc_check_attributes.m4
@@ -0,0 +1,555 @@
+# 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-2021 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_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([$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_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [$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_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [
+ #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_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [
+ #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__constructor=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_CHECK_SPECIFIC_ATTRIBUTE([constructor],
+ [
+ void foo(void) __attribute__ ((__constructor__));
+ void foo(void) { return; }
+ ],
+ [],
+ [])
+
+
+ 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_CONSTRUCTOR, [$hwloc_cv___attribute__constructor],
+ [Whether your compiler has __attribute__ constructor 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/3rd-party/hwloc-2.7.1/config/hwloc_check_vendor.m4 b/3rd-party/hwloc-2.7.1/config/hwloc_check_vendor.m4
new file mode 100644
index 0000000000000000000000000000000000000000..24c3be8aa99121955661be2a41c0404eb4f6b818
--- /dev/null
+++ b/3rd-party/hwloc-2.7.1/config/hwloc_check_vendor.m4
@@ -0,0 +1,262 @@
+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-2021 Inria. All rights reserved.
+dnl Copyright © 2020 IBM Corporation. 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"])])
+
+ # Portland Group
+ AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+ [HWLOC_IFDEF_IFELSE([__PGI],
+ [hwloc_check_compiler_vendor_result="portland group"])])
+
+ # 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__) || defined(__ibmxl__)],
+ [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"])])
+
+ # 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"])])
+
+ # GNU
+ AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+ [HWLOC_IFDEF_IFELSE([__GNUC__],
+ [hwloc_check_compiler_vendor_result="gnu"])])
+
+ $1="$hwloc_check_compiler_vendor_result"
+ unset hwloc_check_compiler_vendor_result
+])
+
+# _HWLOC_CHECK_CC_OPTION([option], [variable to append the option to], [action if supported])
+# ----------------------------------------------
+# Run gcc to determine if option is supported.
+AC_DEFUN([_HWLOC_CHECK_CC_OPTION], [
+ tmp_save_CFLAGS="$CFLAGS"
+ CFLAGS="$1 -Werror"
+ AC_MSG_CHECKING([if gcc supports $1])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int i;]])],
+ [AC_MSG_RESULT(yes)
+ $2="$$2 $1"
+ $3],
+ [AC_MSG_RESULT(no)])
+ CFLAGS="$tmp_save_CFLAGS"
+])
diff --git a/3rd-party/hwloc-2.7.1/config/hwloc_check_visibility.m4 b/3rd-party/hwloc-2.7.1/config/hwloc_check_visibility.m4
new file mode 100644
index 0000000000000000000000000000000000000000..8ba2d391c9d49a52ba7ebd69150650a7ba74892e
--- /dev/null
+++ b/3rd-party/hwloc-2.7.1/config/hwloc_check_visibility.m4
@@ -0,0 +1,131 @@
+# 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-2021 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,
+ AS_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/3rd-party/hwloc-2.7.1/config/hwloc_components.m4 b/3rd-party/hwloc-2.7.1/config/hwloc_components.m4
new file mode 100644
index 0000000000000000000000000000000000000000..e4a8c3a5d707ac45c799ab26385367f3c2dc6751
--- /dev/null
+++ b/3rd-party/hwloc-2.7.1/config/hwloc_components.m4
@@ -0,0 +1,64 @@
+# Copyright © 2012-2020 Inria. All rights reserved.
+# See COPYING in top-level directory.
+
+
+# HWLOC_PREPARE_FILTER_COMPONENTS
+#
+# Given a list of names, define hwloc__component_maybeplugin=1.
+#
+# $1 = space-separated list of components to build as plugins
+#
+AC_DEFUN([HWLOC_PREPARE_FILTER_COMPONENTS], [
+ for name in [$1] ; 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,
+# 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 -a x$maybeplugin = x1 -a x$wantplugin = x1; 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], [
+cat <>[$1]
+#include
+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/3rd-party/hwloc-2.7.1/config/hwloc_get_version.sh b/3rd-party/hwloc-2.7.1/config/hwloc_get_version.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4bc4f2933bd27ad9d07bed84e7d0494d127d298f
--- /dev/null
+++ b/3rd-party/hwloc-2.7.1/config/hwloc_get_version.sh
@@ -0,0 +1,114 @@
+#!/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-2018 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
+ ;;
+ --major)
+ echo $HWLOC_MAJOR_VERSION
+ ;;
+ --minor)
+ echo $HWLOC_MINOR_VERSION
+ ;;
+ --release)
+ echo $HWLOC_RELEASE_VERSION
+ ;;
+ --greek)
+ echo $HWLOC_GREEK_VERSION
+ ;;
+ --release-date)
+ echo $HWLOC_RELEASE_DATE
+ ;;
+ --snapshot)
+ echo $HWLOC_SNAPSHOT
+ ;;
+ -h|--help)
+ cat <