Commit bc3a9b0e authored by Pavan Balaji's avatar Pavan Balaji
Browse files

[svn-r6632] Upgrade to the 1.0rc5 release of hwloc. This is an intermediate step

for testing before we move to hwloc-1.0.
parent 188c34e3
......@@ -53,10 +53,22 @@ Notes to developers:
"make check".
- For the windows zipball, make sure you have Microsoft's lib tool in
PATH, and remember to copy README at the root of the zip into a
README.txt file with CRLF:
PATH, and remember to copy README and NEWS at the root of the zip into
README.txt and NEWS.txt files with CRLF:
sed -e 's/$/'$'\015'/ < README > $prefix/README.txt
sed -e 's/$/'$'\015'/ < NEWS > $prefix/NEWS.txt
- make maintainer-clean can be used to properly remove the generated
documentations.
- Silent rules are used by default to reduce the build verbosity:
shell$ make
CC src/topology.lo
To revert to the old verbose rules, pass V=1 to make:
shell$ make V=1
/bin/sh ../libtool --tag=CC --mode=compile gcc [...] -c -o topology.lo topology.c
# Copyright 2009 INRIA, Université Bordeaux 1
# Copyright © 2009 Cisco Systems, Inc. All rights reserved.
# Copyright © 2009 INRIA, Université Bordeaux 1
# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
ACLOCAL_AMFLAGS = -I config -I m4
# Note that the -I directory must *exactly* match what was specified
# via AC_CONFIG_MACRO_DIR in configure.ac.
ACLOCAL_AMFLAGS = -I ./config
SUBDIRS = src utils tests include doc
SUBDIRS = src include
if HWLOC_BUILD_STANDALONE
SUBDIRS += utils tests 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)
# Only install the pkg file if we're building in standalone mode
if HWLOC_BUILD_STANDALONE
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = hwloc.pc
endif
#
# "make distcheck" requires that tarballs are able to be able to "make
# dist", so we have to include config/distscript.csh.
#
EXTRA_DIST = \
README VERSION COPYING AUTHORS \
config/hwloc_get_version.sh \
config/distscript.csh
if HWLOC_BUILD_STANDALONE
#
# Double check that we generated both the doxygen docs and a new copy
# of the top-level README file.
#
cannot-dist:
@echo "ERROR: Did not build both of the doxygen docs and README."
@echo "ERROR: This tarball is not complete!"
@echo "ERROR: Cowardly refusing to complete successfully..."
@exit 1
if !BUILD_DOXYGEN
# Refuse to make dist if we can't make the doxygen stuff (note that
# BUILD_DOXYGEN will automatically be false if we're not building
# standalone).
if !HWLOC_BUILD_DOXYGEN
dist-hook: cannot-dist
else
if !BUILD_README
if !HWLOC_BUILD_README
dist-hook: cannot-dist
else
dist-hook:
csh "$(top_srcdir)/config/distscript.csh" "$(top_srcdir)" "$(distdir)" "$(HWLOC_VERSION)" "$(HWLOC_SVN_R)"
endif
endif
endif HWLOC_BUILD_README
endif HWLOC_BUILD_DOXYGEN
endif HWLOC_BUILD_STANDALONE
#
# Build the top-level README file
#
if HWLOC_BUILD_STANDALONE
.PHONY: doc readme
doc readme:
$(MAKE) -C doc readme
endif HWLOC_BUILD_STANDALONE
# -*- makefile -*-
# Copyright (c) 2008-2009 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
.1in.1:
@ echo Creating $@ man page...
@ sed -e 's/#PACKAGE_NAME#/@PACKAGE_NAME@/g' \
-e 's/#PACKAGE_VERSION#/@PACKAGE_VERSION@/g' \
-e 's/#HWLOC_DATE#/@HWLOC_RELEASE_DATE@/g' \
> $@ < $<
.3in.3:
@ echo Creating $@ man page...
@ sed -e 's/#PACKAGE_NAME#/@PACKAGE_NAME@/g' \
-e 's/#PACKAGE_VERSION#/@PACKAGE_VERSION@/g' \
-e 's/#HWLOC_DATE#/@HWLOC_RELEASE_DATE@/g' \
> $@ < $<
.7in.7:
@ echo Creating $@ man page...
@ sed -e 's/#PACKAGE_NAME#/@PACKAGE_NAME@/g' \
-e 's/#PACKAGE_VERSION#/@PACKAGE_VERSION@/g' \
-e 's/#HWLOC_DATE#/@HWLOC_RELEASE_DATE@/g' \
> $@ < $<
......@@ -14,6 +14,95 @@ bug fixes (and other actions) for each version of hwloc since version
0.9 (as initially released as "libtopology", then re-branded to "hwloc"
in v0.9.1).
Version 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
-------------
......
This diff is collapsed.
......@@ -5,9 +5,9 @@
# major, minor, and release are generally combined in the form
# <major>.<minor>.<release>. If release is zero, then it is omitted.
major=0
minor=9
release=2
major=1
minor=0
release=0
# 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
......@@ -16,7 +16,7 @@ release=2
# requirement is that it must be entirely printable ASCII characters
# and have no white space.
greek=rc1
greek=rc5
# If want_svn=1, then the SVN r number will be included in the overall
# hwloc version number in some form.
......
......@@ -128,12 +128,6 @@ if ($vpath == 0) then
exit 1
endif
# Remove generate latex kruft; no need to ship that.
echo "*** Remove generated latex kruft: `pwd`"
cd doxygen-doc/latex
rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out
cd ../..
# Make new README file
echo "*** Making new README"
make readme
......@@ -165,6 +159,15 @@ cp -pf $srcdir/README $distdir
cd "$distdir"
echo "*** Now in distdir: $distdir"
#
# Remove all the latex source files from the distribution tree (the
# PDFs are still there; we're just removing the latex source because
# some of the filenames get really, really long...).
#
echo "*** Removing latex source from dist tree"
rm -rf doc/doxygen-doc/latex
#
# Get the latest config.guess and config.sub from ftp.gnu.org
#
......
# This macro set originally copied from Open MPI:
# Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
# University Research and Technology
# Corporation. All rights reserved.
# Copyright (c) 2004-2005 The University of Tennessee and The University
# of Tennessee Research Foundation. All rights
# reserved.
# Copyright (c) 2004-2007 High Performance Computing Center Stuttgart,
# University of Stuttgart. All rights reserved.
# Copyright (c) 2004-2005 The Regents of the University of California.
# All rights reserved.
# and renamed for hwloc:
# Copyright (c) 2009 INRIA, Université Bordeaux 1
# Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
#
# 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],[
AC_REQUIRE([AC_PROG_GREP])
if test -s conftest.err ; then
for i in ignore skip ; do
$GREP -iq $i conftest.err
if test "$?" = "0" ; then
hwloc_cv___attribute__[$1]=0
break;
fi
done
fi
])
#
# HWLOC: Remove C++ compiler check. It can result in a circular
# dependency in embedded situations.
#
# Check for one specific attribute by compiling with C
# and possibly using a cross-check.
#
# If the cross-check is defined, a static function "usage" should be
# defined, which is to be called from main (to circumvent warnings
# regarding unused function in main file)
# static int usage (int * argument);
#
# The last argument is for specific CFLAGS, that need to be set
# for the compiler to generate a warning on the cross-check.
# This may need adaption for future compilers / CFLAG-settings.
#
AC_DEFUN([_HWLOC_CHECK_SPECIFIC_ATTRIBUTE], [
AC_MSG_CHECKING([for __attribute__([$1])])
AC_CACHE_VAL(hwloc_cv___attribute__[$1], [
#
# Try to compile using the C compiler
#
AC_TRY_COMPILE([$2],[],
[
#
# In case we did succeed: Fine, but was this due to the
# attribute being ignored/skipped? Grep for IgNoRe/skip in conftest.err
# and if found, reset the hwloc_cv__attribute__var=0
#
hwloc_cv___attribute__[$1]=1
_HWLOC_ATTRIBUTE_FAIL_SEARCH([$1])
],
[hwloc_cv___attribute__[$1]=0])
#
# If the attribute is supported by both compilers,
# try to recompile a *cross-check*, IFF defined.
#
if test '(' "$hwloc_cv___attribute__[$1]" = "1" -a "[$3]" != "" ')' ; then
ac_c_werror_flag_safe=$ac_c_werror_flag
ac_c_werror_flag="yes"
CFLAGS_safe=$CFLAGS
CFLAGS="$CFLAGS [$4]"
AC_TRY_COMPILE([$3],
[
int i=4711;
i=usage(&i);
],
[hwloc_cv___attribute__[$1]=0],
[
#
# In case we did NOT succeed: Fine, but was this due to the
# attribute being ignored? Grep for IgNoRe in conftest.err
# and if found, reset the hwloc_cv__attribute__var=0
#
hwloc_cv___attribute__[$1]=1
_HWLOC_ATTRIBUTE_FAIL_SEARCH([$1])
])
ac_c_werror_flag=$ac_c_werror_flag_safe
CFLAGS=$CFLAGS_safe
fi
])
if test "$hwloc_cv___attribute__[$1]" = "1" ; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
])
#
# Test the availability of __attribute__ and with the help
# of _HWLOC_CHECK_SPECIFIC_ATTRIBUTE for the support of
# particular attributes. Compilers, that do not support an
# attribute most often fail with a warning (when the warning
# level is set).
# The compilers output is parsed in _HWLOC_ATTRIBUTE_FAIL_SEARCH
#
# To add a new attributes __NAME__ add the
# hwloc_cv___attribute__NAME
# add a new check with _HWLOC_CHECK_SPECIFIC_ATTRIBUTE (possibly with a cross-check)
# _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([name], [int foo (int arg) __attribute__ ((__name__));], [], [])
# and define the corresponding
# AC_DEFINE_UNQUOTED(_HWLOC_HAVE_ATTRIBUTE_NAME, [$hwloc_cv___attribute__NAME],
# [Whether your compiler has __attribute__ NAME or not])
# and decide on a correct macro (in opal/include/opal_config_bottom.h):
# # define __opal_attribute_NAME(x) __attribute__(__NAME__)
#
# Please use the "__"-notation of the attribute in order not to
# clash with predefined names or macros (e.g. const, which some compilers
# do not like..)
#
AC_DEFUN([_HWLOC_CHECK_ATTRIBUTES], [
AC_MSG_CHECKING(for __attribute__)
AC_CACHE_VAL(hwloc_cv___attribute__, [
AC_TRY_COMPILE(
[#include <stdlib.h>
/* Check for the longest available __attribute__ (since gcc-2.3) */
struct foo {
char a;
int x[2] __attribute__ ((__packed__));
};
],
[],
[hwloc_cv___attribute__=1],
[hwloc_cv___attribute__=0],
)
if test "$hwloc_cv___attribute__" = "1" ; then
AC_TRY_COMPILE(
[#include <stdlib.h>
/* Check for the longest available __attribute__ (since gcc-2.3) */
struct foo {
char a;
int x[2] __attribute__ ((__packed__));
};
],
[],
[hwloc_cv___attribute__=1],
[hwloc_cv___attribute__=0],
)
fi
])
AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE, [$hwloc_cv___attribute__],
[Whether your compiler has __attribute__ or not])
#
# Now that we know the compiler support __attribute__ let's check which kind of
# attributed are supported.
#
if test "$hwloc_cv___attribute__" = "0" ; then
AC_MSG_RESULT([no])
hwloc_cv___attribute__aligned=0
hwloc_cv___attribute__always_inline=0
hwloc_cv___attribute__cold=0
hwloc_cv___attribute__const=0
hwloc_cv___attribute__deprecated=0
hwloc_cv___attribute__format=0
hwloc_cv___attribute__hot=0
hwloc_cv___attribute__malloc=0
hwloc_cv___attribute__may_alias=0
hwloc_cv___attribute__no_instrument_function=0
hwloc_cv___attribute__nonnull=0
hwloc_cv___attribute__noreturn=0
hwloc_cv___attribute__packed=0
hwloc_cv___attribute__pure=0
hwloc_cv___attribute__sentinel=0
hwloc_cv___attribute__unused=0
hwloc_cv___attribute__warn_unused_result=0
hwloc_cv___attribute__weak_alias=0
else
AC_MSG_RESULT([yes])
_HWLOC_CHECK_SPECIFIC_ATTRIBUTE([aligned],
[struct foo { char text[4]; } __attribute__ ((__aligned__(8)));],
[],
[])
#
# Ignored by PGI-6.2.5; -- recognized by output-parser
#
_HWLOC_CHECK_SPECIFIC_ATTRIBUTE([always_inline],
[int foo (int arg) __attribute__ ((__always_inline__));],
[],
[])
_HWLOC_CHECK_SPECIFIC_ATTRIBUTE([cold],
[
int foo(int arg1, int arg2) __attribute__ ((__cold__));
int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; }
],
[],
[])
_HWLOC_CHECK_SPECIFIC_ATTRIBUTE([const],
[
int foo(int arg1, int arg2) __attribute__ ((__const__));
int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; }
],
[],
[])
_HWLOC_CHECK_SPECIFIC_ATTRIBUTE([deprecated],
[
int foo(int arg1, int arg2) __attribute__ ((__deprecated__));
int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; }
],
[],
[])
HWLOC_ATTRIBUTE_CFLAGS=
case "$hwloc_c_vendor" in
gnu)
HWLOC_ATTRIBUTE_CFLAGS="-Wall"
;;
intel)
# we want specifically the warning on format string conversion
HWLOC_ATTRIBUTE_CFLAGS="-we181"
;;
esac
_HWLOC_CHECK_SPECIFIC_ATTRIBUTE([format],
[
int this_printf (void *my_object, const char *my_format, ...) __attribute__ ((__format__ (__printf__, 2, 3)));
],
[
static int usage (int * argument);
extern int this_printf (int arg1, const char *my_format, ...) __attribute__ ((__format__ (__printf__, 2, 3)));
static int usage (int * argument) {
return this_printf (*argument, "%d", argument); /* This should produce a format warning */
}
/* The autoconf-generated main-function is int main(), which produces a warning by itself */
int main(void);
],
[$HWLOC_ATTRIBUTE_CFLAGS])
_HWLOC_CHECK_SPECIFIC_ATTRIBUTE([hot],
[
int foo(int arg1, int arg2) __attribute__ ((__hot__));
int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; }
],
[],
[])
_HWLOC_CHECK_SPECIFIC_ATTRIBUTE([malloc],
[
#ifdef HAVE_STDLIB_H
# include <stdlib.h>
#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
#
_HWLOC_CHECK_SPECIFIC_ATTRIBUTE([may_alias],
[int * p_value __attribute__ ((__may_alias__));],
[],
[])
_HWLOC_CHECK_SPECIFIC_ATTRIBUTE([no_instrument_function],
[int * foo(int arg1) __attribute__ ((__no_instrument_function__));],
[],
[])
#