diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2011-11-21 02:52:41 +0000 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2011-11-21 02:52:41 +0000 |
commit | bc87a8ff8c5b6374a00a950cd15e1b290d6c5e06 (patch) | |
tree | 616bbb782feaabc04d48c963ff1b4b1cfec5b267 | |
parent | 7ca10817122d3b7b30fabb1cadb75e5ee14b364e (diff) |
Remove bundled hwloc-1.2.1. Use either native Linux affinity support or an external libhwloc.
(for details see https://sourceforge.net/mailarchive/forum.php?thread_name=CAJpkDYeZpwqcWxZ77wq6bMrnhn-KzkU1xAqb3cU0drfnA3n9FQ%40mail.gmail.com&forum_name=htop-general )
83 files changed, 14 insertions, 72615 deletions
diff --git a/Makefile.am b/Makefile.am index 419054e5..b648969b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,9 +1,5 @@ -if HAVE_BUNDLED_HWLOC -SUBDIRS = hwloc-1.2.1 -endif - -ACLOCAL_AMFLAGS = -I m4 -I hwloc-1.2.1/config +ACLOCAL_AMFLAGS = -I m4 bin_PROGRAMS = htop dist_man_MANS = htop.1 @@ -41,12 +37,6 @@ SUFFIXES = .h BUILT_SOURCES = $(myhtopheaders) htop_SOURCES = $(myhtopheaders) $(myhtopsources) config.h debug.h -if HAVE_BUNDLED_HWLOC -htop_LDADD = $(HWLOC_EMBEDDED_LDADD) $(HWLOC_EMBEDDED_LIBS) -AM_CFLAGS += $(HWLOC_EMBEDDED_CFLAGS) -AM_CPPFLAGS += $(HWLOC_EMBEDDED_CPPFLAGS) -endif - profile: $(MAKE) all CFLAGS="-pg -O2" @@ -29,7 +29,7 @@ in the source distribution for its full text. #include <sched.h> #include <time.h> -#ifdef HAVE_HWLOC +#ifdef HAVE_LIBHWLOC #include <hwloc/linux.h> #endif @@ -566,7 +566,7 @@ bool Process_setPriority(Process* this, int priority) { return (err == 0); } -#ifdef HAVE_HWLOC +#ifdef HAVE_LIBHWLOC Affinity* Process_getAffinity(Process* this) { hwloc_cpuset_t cpuset = hwloc_bitmap_alloc(); @@ -32,7 +32,7 @@ in the source distribution for its full text. #include <sched.h> #include <time.h> -#ifdef HAVE_HWLOC +#ifdef HAVE_LIBHWLOC #include <hwloc/linux.h> #endif @@ -196,7 +196,7 @@ void Process_toggleTag(Process* this); bool Process_setPriority(Process* this, int priority); -#ifdef HAVE_HWLOC +#ifdef HAVE_LIBHWLOC Affinity* Process_getAffinity(Process* this); diff --git a/ProcessList.c b/ProcessList.c index 0ba17980..be01ca65 100644 --- a/ProcessList.c +++ b/ProcessList.c @@ -115,7 +115,7 @@ typedef struct ProcessList_ { int kernelThreads; int runningTasks; - #ifdef HAVE_HWLOC + #ifdef HAVE_LIBHWLOC hwloc_topology_t topology; bool topologyOk; #endif @@ -195,7 +195,7 @@ ProcessList* ProcessList_new(UsersTable* usersTable) { fclose(file); this->cpuCount = cpus - 1; -#ifdef HAVE_HWLOC +#ifdef HAVE_LIBHWLOC this->topologyOk = false; int topoErr = hwloc_topology_init(&this->topology); if (topoErr == 0) { diff --git a/ProcessList.h b/ProcessList.h index 5432c187..641a08c6 100644 --- a/ProcessList.h +++ b/ProcessList.h @@ -117,7 +117,7 @@ typedef struct ProcessList_ { int kernelThreads; int runningTasks; - #ifdef HAVE_HWLOC + #ifdef HAVE_LIBHWLOC hwloc_topology_t topology; bool topologyOk; #endif diff --git a/acinclude.m4 b/acinclude.m4 deleted file mode 100644 index f844c3a3..00000000 --- a/acinclude.m4 +++ /dev/null @@ -1,2 +0,0 @@ -m4_include(hwloc-1.2.1/config/hwloc.m4) -m4_include(hwloc-1.2.1/config/hwloc_pkg.m4) diff --git a/configure.ac b/configure.ac index 514c458d..83a096ee 100644 --- a/configure.ac +++ b/configure.ac @@ -131,32 +131,12 @@ if test "x$enable_native_affinity" = xyes; then [AC_MSG_RESULT([no])]) fi -##### hwloc -AC_ARG_ENABLE(system-hwloc, [AC_HELP_STRING([--enable-system-hwloc], [use the copy of hwloc from your system and not the one bundled with the htop sources. (hwloc required)])], ,enable_system_hwloc="no") -enable_xml=no -AC_ARG_ENABLE(hwloc, [AC_HELP_STRING([--enable-hwloc], [enable hwloc support for CPU affinity])],, test "x$enable_native_affinity" = xno && enable_hwloc="yes") +AC_ARG_ENABLE(hwloc, [AC_HELP_STRING([--enable-hwloc], [enable hwloc support for CPU affinity])],, enable_hwloc="no") if test "x$enable_hwloc" = xyes then - if test "x$enable_system_hwloc" = xyes - then - AC_CHECK_LIB([hwloc], [hwloc_linux_get_tid_cpubind], [], [missing_libraries="$missing_libraries libhwloc"]) - AC_CHECK_HEADERS([hwloc.h],[:], [missing_headers="$missing_headers $ac_header"]) - - else - HWLOC_SETUP_CORE([hwloc-1.2.1], [hwloc_bundled=yes], [hwloc_bundled=no]) - fi + AC_CHECK_LIB([hwloc], [hwloc_linux_get_tid_cpubind], [], [missing_libraries="$missing_libraries libhwloc"]) + AC_CHECK_HEADERS([hwloc.h],[:], [missing_headers="$missing_headers $ac_header"]) fi -HWLOC_DO_AM_CONDITIONALS -AM_CONDITIONAL([HAVE_HWLOC], [test "x$hwloc_bundled" = "xyes" -o "x$hwloc_system" = "xyes"]) -AM_CONDITIONAL([HAVE_BUNDLED_HWLOC], [test "x$hwloc_bundled" = "xyes"]) -if test "x$hwloc_system" = "xyes"; then - AC_DEFINE([HAVE_SYSTEM_HWLOC], 1, [Have system hwloc]) - AC_DEFINE([HAVE_HWLOC], 1, [Have hwloc]) -elif test "x$hwloc_bundled" = "xyes"; then - AC_DEFINE([HAVE_BUNDLED_HWLOC], 1, [Use bundled hwloc]) - AC_DEFINE([HAVE_HWLOC], 1, [Have hwloc]) -fi -##### AC_CONFIG_FILES([Makefile htop.1]) AC_OUTPUT @@ -123,7 +123,7 @@ static void showHelp(ProcessList* pl) { mvaddstr(15, 0, " F9 k: kill process/tagged processes P: sort by CPU%"); mvaddstr(16, 0, " ] F7: higher priority (root only) M: sort by MEM%"); mvaddstr(17, 0, " [ F8: lower priority (+ nice) T: sort by TIME"); -#ifdef HAVE_HWLOC +#if (HAVE_LIBHWLOC || HAVE_NATIVE_AFFINITY) if (pl->cpuCount > 1) mvaddstr(18, 0, " a: set CPU affinity I: invert sort order"); else @@ -144,7 +144,7 @@ static void showHelp(ProcessList* pl) { mvaddstr(16, 0, " ] F7"); mvaddstr(16,40, " M"); mvaddstr(17, 0, " [ F8"); mvaddstr(17,40, " T"); mvaddstr(18,40, " F4 I"); -#if HAVE_HWLOC +#if (HAVE_LIBHWLOC || HAVE_NATIVE_AFFINITY) if (pl->cpuCount > 1) mvaddstr(18, 0, " a:"); #endif @@ -773,7 +773,7 @@ int main(int argc, char** argv) { refreshTimeout = 0; break; } -#if (HAVE_HWLOC || HAVE_NATIVE_AFFINITY) +#if (HAVE_LIBHWLOC || HAVE_NATIVE_AFFINITY) case 'a': { if (pl->cpuCount == 1) diff --git a/hwloc-1.2.1/AUTHORS b/hwloc-1.2.1/AUTHORS deleted file mode 100644 index 837b27f2..00000000 --- a/hwloc-1.2.1/AUTHORS +++ /dev/null @@ -1,8 +0,0 @@ -Cédric Augonnet <Cedric.Augonnet@labri.fr> -Jérôme Clet-Ortega <Jerome.Clet-Ortega@labri.fr> -Ludovic Courtès <Ludovic.Courtes@inria.fr> -Brice Goglin <Brice.Goglin@inria.fr> -Nathalie Furmento <Nathalie.Furmento@labri.fr> -Samuel Thibault <Samuel.Thibault@labri.fr> -Jeff Squyres <jsquyres@cisco.com> -Alexey Kardashevskiy <aik@au1.ibm.com> diff --git a/hwloc-1.2.1/COPYING b/hwloc-1.2.1/COPYING deleted file mode 100644 index cdbd4f67..00000000 --- a/hwloc-1.2.1/COPYING +++ /dev/null @@ -1,27 +0,0 @@ -Copyright © 2009 CNRS -Copyright © 2009 INRIA. All rights reserved. -Copyright © 2009 Université Bordeaux 1 -Copyright © 2009 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: -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/hwloc-1.2.1/Makefile.am b/hwloc-1.2.1/Makefile.am deleted file mode 100644 index de37e341..00000000 --- a/hwloc-1.2.1/Makefile.am +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright © 2009 INRIA. All rights reserved. -# Copyright © 2009 Université Bordeaux 1 -# Copyright © 2009-2010 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 - -SUBDIRS = src include - -# Do not let automake automatically add the non-standalone dirs to the -# distribution tarball if we're building in embedded mode. -DIST_SUBDIRS = $(SUBDIRS) - -# -# "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 - -# -# Build the top-level README file -# diff --git a/hwloc-1.2.1/Makefile.in b/hwloc-1.2.1/Makefile.in deleted file mode 100644 index 4bed1d18..00000000 --- a/hwloc-1.2.1/Makefile.in +++ /dev/null @@ -1,611 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Copyright © 2009 INRIA. All rights reserved. -# Copyright © 2009 Université Bordeaux 1 -# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved. -# See COPYING in top-level directory. -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -subdir = hwloc-1.2.1 -DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - AUTHORS COPYING NEWS -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/hwloc-1.2.1/config/hwloc_check_attributes.m4 \ - $(top_srcdir)/hwloc-1.2.1/config/hwloc_check_visibility.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/hwloc-1.2.1/config/hwloc.m4 \ - $(top_srcdir)/hwloc-1.2.1/config/hwloc_pkg.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h \ - $(top_builddir)/hwloc-1.2.1/include/private/autogen/config.h \ - $(top_builddir)/hwloc-1.2.1/include/hwloc/autogen/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BASH = @BASH@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -HWLOC_CFLAGS = @HWLOC_CFLAGS@ -HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ -HWLOC_EMBEDDED_CFLAGS = @HWLOC_EMBEDDED_CFLAGS@ -HWLOC_EMBEDDED_CPPFLAGS = @HWLOC_EMBEDDED_CPPFLAGS@ -HWLOC_EMBEDDED_LDADD = @HWLOC_EMBEDDED_LDADD@ -HWLOC_EMBEDDED_LIBS = @HWLOC_EMBEDDED_LIBS@ -HWLOC_HAVE_XML = @HWLOC_HAVE_XML@ -HWLOC_KERRIGHED_CFLAGS = @HWLOC_KERRIGHED_CFLAGS@ -HWLOC_KERRIGHED_LIBS = @HWLOC_KERRIGHED_LIBS@ -HWLOC_LDFLAGS = @HWLOC_LDFLAGS@ -HWLOC_LIBS = @HWLOC_LIBS@ -HWLOC_LINUX_LIBNUMA_LIBS = @HWLOC_LINUX_LIBNUMA_LIBS@ -HWLOC_MS_LIB = @HWLOC_MS_LIB@ -HWLOC_PKG_CONFIG = @HWLOC_PKG_CONFIG@ -HWLOC_REQUIRES = @HWLOC_REQUIRES@ -HWLOC_XML_CFLAGS = @HWLOC_XML_CFLAGS@ -HWLOC_XML_LIBS = @HWLOC_XML_LIBS@ -HWLOC_top_builddir = @HWLOC_top_builddir@ -HWLOC_top_srcdir = @HWLOC_top_srcdir@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ - -# 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 include - -# Do not let automake automatically add the non-standalone dirs to the -# distribution tarball if we're building in embedded mode. -DIST_SUBDIRS = $(SUBDIRS) - -# -# "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 - -all: all-recursive - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu hwloc-1.2.1/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu hwloc-1.2.1/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am - - -# -# Build the top-level README file -# - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/hwloc-1.2.1/NEWS b/hwloc-1.2.1/NEWS deleted file mode 100644 index 740df156..00000000 --- a/hwloc-1.2.1/NEWS +++ /dev/null @@ -1,361 +0,0 @@ -Copyright © 2009 CNRS -Copyright © 2009-2011 INRIA. All rights reserved. -Copyright © 2009-2011 Université Bordeaux 1 -Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - -$COPYRIGHT$ - -Additional copyrights may follow - -$HEADER$ - -=========================================================================== - -This file contains the main features as well as overviews of specific -bug fixes (and other actions) for each version of hwloc since version -0.9 (as initially released as "libtopology", then re-branded to "hwloc" -in v0.9.1). - - -Version 1.2.1 -------------- -* Improve support of AMD Bulldozer "Compute-Unit" modules by detecting - logical processors with different core IDs on Linux. -* Fix hwloc-ps crash when listing processes from another Linux cpuset. - Thanks to Carl Smith for reporting the problem. -* Fix build on AIX and Solaris. Thanks to Carl Smith and Andreas Kupries - for reporting the problems. -* Fix cache size detection on Darwin. Thanks to Erkcan Özcan for reporting - the problem. -* Make configure fail if --enable-xml or --enable-cairo is given and - proper support cannot be found. Thanks to Andreas Kupries for reporting - the XML problem. -* Fix spurious L1 cache detection on AIX. Thanks to Hendryk Bockelmann - for reporting the problem. -* Fix hwloc_get_last_cpu_location(THREAD) on Linux. Thanks to Gabriele - Fatigati for reporting the problem. -* Fix object distance detection on Solaris. -* Add pthread_self weak symbol to ease static linking. -* Minor documentation fixes. - - -Version 1.2.0 -------------- -* Major features - + Expose latency matrices in the API as an array of distance structures - within objects. Add several helpers to find distances. - + Add hwloc_topology_set_distance_matrix() and environment variables - to provide a matrix of distances between a given set of objects. - + Add hwloc_get_last_cpu_location() and hwloc_get_proc_last_cpu_location() - to retrieve the processors where a process or thread recently ran. - - Add the corresponding --get-last-cpu-location option to hwloc-bind. - + Add hwloc_topology_restrict() to restrict an existing topology to a - given cpuset. - - Add the corresponding --restrict option to lstopo. -* Minor API updates - + Add hwloc_bitmap_list_sscanf/snprintf/asprintf to convert between bitmaps - and strings such as 4-5,7-9,12,15- - + hwloc_bitmap_set/clr_range() now support infinite ranges. - + Clarify the difference between inserting Misc objects by cpuset or by - parent. - + hwloc_insert_misc_object_by_cpuset() now returns NULL in case of error. -* Discovery improvements - + x86 backend (for freebsd): add x2APIC support - + Support standard device-tree phandle, to get better support on e.g. ARM - systems providing it. - + Detect cache size on AIX. Thanks Christopher and IBM. - + Improve grouping to support asymmetric topologies. -* Tools - + Command-line tools now support "all" and "root" special locations - consisting in the entire topology, as well as type names with depth - attributes such as L2 or Group4. - + hwloc-calc improvements: - - Add --number-of/-N option to report the number of objects of a given - type or depth. - - -I is now equivalent to --intersect for listing the indexes of - objects of a given type or depth that intersects the input. - - Add -H to report the output as a hierarchical combination of types - and depths. - + Add --thissystem to lstopo. - + Add lstopo-win, a console-less lstopo variant on Windows. -* Miscellaneous - + Remove C99 usage from code base. - + Rename hwloc-gather-topology.sh into hwloc-gather-topology - + Fix AMD cache discovery on freebsd when there is no L3 cache, thanks - Andriy Gapon for the fix. - - -Version 1.1.2 -------------- -* Fix a segfault in the distance-based grouping code when some objects - are not placed in any group. Thanks to Bernd Kallies for reporting - the problem and providing a patch. -* Fix the command-line parsing of hwloc-bind --mempolicy interleave. - Thanks to Guy Streeter for reporting the problem. -* Stop truncating the output in hwloc_obj_attr_snprintf() and in the - corresponding lstopo output. Thanks to Guy Streeter for reporting the - problem. -* Fix object levels ordering in synthetic topologies. -* Fix potential incoherency between device tree and kernel information, - when SMT is disabled on Power machines. -* Fix and document the behavior of hwloc_topology_set_synthetic() in case - of invalid argument. Thanks to Guy Streeter for reporting the problem. -* Add some verbose error message reporting when it looks like the OS - gives erroneous information. -* Do not include unistd.h and stdint.h in public headers on Windows. -* Move config.h files into their own subdirectories to avoid name - conflicts when AC_CONFIG_HEADERS adds -I's for them. -* Remove the use of declaring variables inside "for" loops. -* Some other minor fixes. -* Many minor documentation fixes. - - -Version 1.1.1 -------------- -* Add hwloc_get_api_version() which returns the version of hwloc used - at runtime. Thanks to Guy Streeter for the suggestion. -* Fix the number of hugepages reported for NUMA nodes on Linux. -* Fix hwloc_bitmap_to_ulong() right after allocating the bitmap. - Thanks to Bernd Kallies for reporting the problem. -* Fix hwloc_bitmap_from_ith_ulong() to properly zero the first ulong. - Thanks to Guy Streeter for reporting the problem. -* Fix hwloc_get_membind_nodeset() on Linux. - Thanks to Bernd Kallies for reporting the problem and providing a patch. -* Fix some file descriptor leaks in the Linux discovery. -* Fix the minimum width of NUMA nodes, caches and the legend in the graphical - lstopo output. Thanks to Jirka Hladky for reporting the problem. -* Various fixes to bitmap conversion from/to taskset-strings. -* Fix and document snprintf functions behavior when the buffer size is too - small or zero. Thanks to Guy Streeter for reporting the problem. -* Fix configure to avoid spurious enabling of the cpuid backend. - Thanks to Tim Anderson for reporting the problem. -* Cleanup error management in hwloc-gather-topology.sh. - Thanks to Jirka Hladky for reporting the problem and providing a patch. -* Add a manpage and usage for hwloc-gather-topology.sh on Linux. - Thanks to Jirka Hladky for providing a patch. -* Memory binding documentation enhancements. - - -Version 1.1.0 -------------- - -* API - + Increase HWLOC_API_VERSION to 0x00010100 so that API changes may be - detected at build-time. - + Add a memory binding interface. - + The cpuset API (hwloc/cpuset.h) is now deprecated. It is replaced by - the bitmap API (hwloc/bitmap.h) which offers the same features with more - generic names since it applies to CPU sets, node sets and more. - Backward compatibility with the cpuset API and ABI is still provided but - it will be removed in a future release. - Old types (hwloc_cpuset_t, ...) are still available as a way to clarify - what kind of hwloc_bitmap_t each API function manipulates. - Upgrading to the new API only requires to replace hwloc_cpuset_ function - calls with the corresponding hwloc_bitmap_ calls, with the following - renaming exceptions: - - hwloc_cpuset_cpu -> hwloc_bitmap_only - - hwloc_cpuset_all_but_cpu -> hwloc_bitmap_allbut - - hwloc_cpuset_from_string -> hwloc_bitmap_sscanf - + Add an `infos' array in each object to store couples of info names and - values. It enables generic storage of things like the old dmi board infos - that were previously stored in machine specific attributes. - + Add linesize cache attribute. -* Features - + Bitmaps (and thus CPU sets and node sets) are dynamically (re-)allocated, - the maximal number of CPUs (HWLOC_NBMAXCPUS) has been removed. - + Improve the distance-based grouping code to better support irregular - distance matrices. - + Add support for device-tree to get cache information (useful on Power - architectures). -* Helpers - + Add NVIDIA CUDA helpers in cuda.h and cudart.h to ease interoperability - with CUDA Runtime and Driver APIs. - + Add Myrinet Express helper in myriexpress.h to ease interoperability. -* Tools - + lstopo now displays physical/OS indexes by default in graphical mode - (use -l to switch back to logical indexes). The textual output still uses - logical by default (use -p to switch to physical indexes). - + lstopo prefixes logical indexes with `L#' and physical indexes with `P#'. - Physical indexes are also printed as `P#N' instead of `phys=N' within - object attributes (in parentheses). - + Add a legend at the bottom of the lstopo graphical output, use --no-legend - to remove it. - + Add hwloc-ps to list process' bindings. - + Add --membind and --mempolicy options to hwloc-bind. - + Improve tools command-line options by adding a generic --input option - (and more) which replaces the old --xml, --synthetic and --fsys-root. - + Cleanup lstopo output configuration by adding --output-format. - + Add --intersect in hwloc-calc, and replace --objects with --largest. - + Add the ability to work on standard input in hwloc-calc. - + Add --from, --to and --at in hwloc-distrib. - + Add taskset-specific functions and command-line tools options to - manipulate CPU set strings in the format of the taskset program. - + Install hwloc-gather-topology.sh on Linux. - - -Version 1.0.3 -------------- - -* Fix support for Linux cpuset when emulated by a cgroup mount point. -* Remove unneeded runtime dependency on libibverbs.so in the library and - all utils programs. -* Fix hwloc_cpuset_to_linux_libnuma_ulongs in case of non-linear OS-indexes - for NUMA nodes. -* lstopo now displays physical/OS indexes by default in graphical mode - (use -l to switch back to logical indexes). The textual output still uses - logical by default (use -p to switch to physical indexes). - - -Version 1.0.2 -------------- - -* Public headers can now be included directly from C++ programs. -* Solaris fix for non-contiguous cpu numbers. Thanks to Rolf vandeVaart for - reporting the issue. -* Darwin 10.4 fix. Thanks to Olivier Cessenat for reporting the issue. -* Revert 1.0.1 patch that ignored sockets with unknown ID values since it - only slightly helped POWER7 machines with old Linux kernels while it - prevents recent kernels from getting the complete POWER7 topology. -* Fix hwloc_get_common_ancestor_obj(). -* Remove arch-specific bits in public headers. -* Some fixes in the lstopo graphical output. -* Various man page clarifications and minor updates. - - -Version 1.0.1 -------------- - -* Various Solaris fixes. Thanks to Yannick Martin for reporting the issue. -* Fix "non-native" builds on x86 platforms (e.g., when building 32 - bit executables with compilers that natively build 64 bit). -* Ignore sockets with unknown ID values (which fixes issues on POWER7 - machines). Thanks to Greg Bauer for reporting the issue. -* Various man page clarifications and minor updates. -* Fixed memory leaks in hwloc_setup_group_from_min_distance_clique(). -* Fix cache type filtering on MS Windows 7. Thanks to Αλέξανδρος - Παπαδογιαννάκ for reporting the issue. -* Fixed warnings when compiling with -DNDEBUG. - - -Version 1.0.0 -------------- - -* The ABI of the library has changed. -* Backend updates - + Add FreeBSD support. - + Add x86 cpuid based backend. - + Add Linux cgroup support to the Linux cpuset code. - + Support binding of entire multithreaded process on Linux. - + Fix and enable Group support in Windows. - + Cleanup XML export/import. -* Objects - + HWLOC_OBJ_PROC is renamed into HWLOC_OBJ_PU for "Processing Unit", - its stringified type name is now "PU". - + Use new HWLOC_OBJ_GROUP objects instead of MISC when grouping - objects according to NUMA distances or arbitrary OS aggregation. - + Rework memory attributes. - + Add different cpusets in each object to specify processors that - are offline, unavailable, ... - + Cleanup the storage of object names and DMI infos. -* Features - + Add support for looking up specific PID topology information. - + Add hwloc_topology_export_xml() to export the topology in a XML file. - + Add hwloc_topology_get_support() to retrieve the supported features - for the current topology context. - + Support non-SYSTEM object as the root of the tree, use MACHINE in - most common cases. - + Add hwloc_get_*cpubind() routines to retrieve the current binding - of processes and threads. -* API - + Add HWLOC_API_VERSION to help detect the currently used API version. - + Add missing ending "e" to *compare* functions. - + Add several routines to emulate PLPA functions. - + Rename and rework the cpuset and/or/xor/not/clear operators to output - their result in a dedicated argument instead of modifying one input. - + Deprecate hwloc_obj_snprintf() in favor of hwloc_obj_type/attr_snprintf(). - + Clarify the use of parent and ancestor in the API, do not use father. - + Replace hwloc_get_system_obj() with hwloc_get_root_obj(). - + Return -1 instead of HWLOC_OBJ_TYPE_MAX in the API since the latter - isn't public. - + Relax constraints in hwloc_obj_type_of_string(). - + Improve displaying of memory sizes. - + Add 0x prefix to cpuset strings. -* Tools - + lstopo now displays logical indexes by default, use --physical to - revert back to OS/physical indexes. - + Add colors in the lstopo graphical outputs to distinguish between online, - offline, reserved, ... objects. - + Extend lstopo to show cpusets, filter objects by type, ... - + Renamed hwloc-mask into hwloc-calc which supports many new options. -* Documentation - + Add a hwloc(7) manpage containing general information. - + Add documentation about how to switch from PLPA to hwloc. - + Cleanup the distributed documentation files. -* Miscellaneous - + Many compilers warning fixes. - + Cleanup the ABI by using the visibility attribute. - + Add project embedding support. - - -Version 0.9.4 (unreleased) --------------------------- - -* Fix reseting colors to normal in lstopo -.txt output. -* Fix Linux pthread_t binding error report. - - -Version 0.9.3 -------------- - -* Fix autogen.sh to work with Autoconf 2.63. -* Fix various crashes in particular conditions: - - xml files with root attributes - - offline CPUs - - partial sysfs support - - unparseable /proc/cpuinfo - - ignoring NUMA level while Misc level have been generated -* Tweak documentation a bit -* Do not require the pthread library for binding the current thread on Linux -* Do not erroneously consider the sched_setaffinity prototype is the old version - when there is actually none. -* Fix _syscall3 compilation on archs for which we do not have the - sched_setaffinity system call number. -* Fix AIX binding. -* Fix libraries dependencies: now only lstopo depends on libtermcap, fix - binutils-gold link -* Have make check always build and run hwloc-hello.c -* Do not limit size of a cpuset. - - -Version 0.9.2 -------------- - -* Trivial documentation changes. - - -Version 0.9.1 -------------- - -* Re-branded to "hwloc" and moved to the Open MPI project, relicensed under the - BSD license. -* The prefix of all functions and tools is now hwloc, and some public - functions were also renamed for real. -* Group NUMA nodes into Misc objects according to their physical distance - that may be reported by the OS/BIOS. - May be ignored by setting HWLOC_IGNORE_DISTANCES=1 in the environment. -* Ignore offline CPUs on Solaris. -* Improved binding support on AIX. -* Add HP-UX support. -* CPU sets are now allocated/freed dynamically. -* Add command line options to tune the lstopo graphical output, add - semi-graphical textual output -* Extend topobind to support multiple cpusets or objects on the command - line as topomask does. -* Add an Infiniband-specific helper hwloc/openfabrics-verbs.h to retrieve - the physical location of IB devices. - - -Version 0.9 (libtopology) -------------------------- - -* First release. diff --git a/hwloc-1.2.1/README b/hwloc-1.2.1/README deleted file mode 100644 index 7eba416f..00000000 --- a/hwloc-1.2.1/README +++ /dev/null @@ -1,688 +0,0 @@ -Introduction - -hwloc provides command line tools and a C API to obtain the hierarchical map of -key computing elements, such as: NUMA memory nodes, shared caches, processor -sockets, processor cores, and processing units (logical processors or -"threads"). hwloc also gathers various attributes such as cache and memory -information, and is portable across a variety of different operating systems -and platforms. - -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. - -Note that the hwloc project represents the merger of the libtopology project -from INRIA and the Portable Linux Processor Affinity (PLPA) sub-project from -Open MPI. Both of these prior projects are now deprecated. The first hwloc -release was essentially a "re-branding" of the libtopology code base, but with -both a few genuinely new features and a few PLPA-like features added in. Prior -releases of hwloc included documentation about switching from PLPA to hwloc; -this documentation has been dropped on the assumption that everyone who was -using PLPA has already switched to hwloc. - -hwloc supports the following operating systems: - - * Linux (including old kernels not having sysfs topology information, with - knowledge of cpusets, offline CPUs, ScaleMP vSMP, and Kerrighed support) - * Solaris - * AIX - * Darwin / OS X - * FreeBSD and its variants, such as kFreeBSD/GNU - * OSF/1 (a.k.a., Tru64) - * HP-UX - * Microsoft Windows - -hwloc only reports the number of processors on unsupported operating systems; -no topology information is available. - -For development and debugging purposes, hwloc also offers the ability to work -on "fake" topologies: - - * Symmetrical tree of resources generated from a list of level arities - * Remote machine simulation through the gathering of Linux sysfs topology - files - -hwloc can display the topology in a human-readable format, either in graphical -mode (X11), or by exporting in one of several different formats, including: -plain text, PDF, PNG, and FIG (see CLI Examples below). Note that some of the -export formats require additional support libraries. - -hwloc offers a programming interface for manipulating topologies and objects. -It also brings a powerful CPU bitmap API that is used to describe topology -objects location on physical/logical processors. See the Programming Interface -below. It may also be used to binding applications onto certain cores or memory -nodes. Several utility programs are also provided to ease command-line -manipulation of topology objects, binding of processes, and so on. - -Installation - -hwloc (http://www.open-mpi.org/projects/hwloc/) is available under the BSD -license. It is hosted as a sub-project of the overall Open MPI project (http:// -www.open-mpi.org/). Note that hwloc does not require any functionality from -Open MPI -- it is a wholly separate (and much smaller!) project and code base. -It just happens to be hosted as part of the overall Open MPI project. - -Nightly development snapshots are available on the web site. Additionally, the -code can be directly checked out of Subversion: - -shell$ svn checkout http://svn.open-mpi.org/svn/hwloc/trunk hwloc-trunk -shell$ cd hwloc-trunk -shell$ ./autogen.sh - -Note that GNU Autoconf >=2.63, Automake >=1.10 and Libtool >=2.2.6 are required -when building from a Subversion checkout. - -Installation by itself is the fairly common GNU-based process: - -shell$ ./configure --prefix=... -shell$ make -shell$ make install - -The hwloc command-line tool "lstopo" produces human-readable topology maps, as -mentioned above. It can also export maps to the "fig" file format. Support for -PDF, Postscript, and PNG exporting is provided if the "Cairo" development -package can be found when hwloc is configured and build. Similarly, lstopo's -XML support requires the libxml2 development package. - -CLI Examples - -On a 4-socket 2-core machine with hyperthreading, the lstopo tool may show the -following graphical output: - -dudley.png - -Here's the equivalent output in textual form: - -Machine (16GB) - Socket L#0 + L3 L#0 (4096KB) - L2 L#0 (1024KB) + L1 L#0 (16KB) + Core L#0 - PU L#0 (P#0) - PU L#1 (P#8) - L2 L#1 (1024KB) + L1 L#1 (16KB) + Core L#1 - PU L#2 (P#4) - PU L#3 (P#12) - Socket L#1 + L3 L#1 (4096KB) - L2 L#2 (1024KB) + L1 L#2 (16KB) + Core L#2 - PU L#4 (P#1) - PU L#5 (P#9) - L2 L#3 (1024KB) + L1 L#3 (16KB) + Core L#3 - PU L#6 (P#5) - PU L#7 (P#13) - Socket L#2 + L3 L#2 (4096KB) - L2 L#4 (1024KB) + L1 L#4 (16KB) + Core L#4 - PU L#8 (P#2) - PU L#9 (P#10) - L2 L#5 (1024KB) + L1 L#5 (16KB) + Core L#5 - PU L#10 (P#6) - PU L#11 (P#14) - Socket L#3 + L3 L#3 (4096KB) - L2 L#6 (1024KB) + L1 L#6 (16KB) + Core L#6 - PU L#12 (P#3) - PU L#13 (P#11) - L2 L#7 (1024KB) + L1 L#7 (16KB) + Core L#7 - PU L#14 (P#7) - PU L#15 (P#15) - -Finally, here's the equivalent output in XML. Long lines were artificially -broken for document clarity (in the real output, each XML tag is on a single -line), and only socket #0 is shown for brevity: - -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE topology SYSTEM "hwloc.dtd"> -<topology> - <object type="Machine" os_level="-1" os_index="0" cpuset="0x0000ffff" - complete_cpuset="0x0000ffff" online_cpuset="0x0000ffff" - allowed_cpuset="0x0000ffff" - dmi_board_vendor="Dell Computer Corporation" dmi_board_name="0RD318" - local_memory="16648183808"> - <page_type size="4096" count="4064498"/> - <page_type size="2097152" count="0"/> - <object type="Socket" os_level="-1" os_index="0" cpuset="0x00001111" - complete_cpuset="0x00001111" online_cpuset="0x00001111" - allowed_cpuset="0x00001111"> - <object type="Cache" os_level="-1" cpuset="0x00001111" - complete_cpuset="0x00001111" online_cpuset="0x00001111" - allowed_cpuset="0x00001111" cache_size="4194304" depth="3" - cache_linesize="64"> - <object type="Cache" os_level="-1" cpuset="0x00000101" - complete_cpuset="0x00000101" online_cpuset="0x00000101" - allowed_cpuset="0x00000101" cache_size="1048576" depth="2" - cache_linesize="64"> - <object type="Cache" os_level="-1" cpuset="0x00000101" - complete_cpuset="0x00000101" online_cpuset="0x00000101" - allowed_cpuset="0x00000101" cache_size="16384" depth="1" - cache_linesize="64"> - <object type="Core" os_level="-1" os_index="0" cpuset="0x00000101" - complete_cpuset="0x00000101" online_cpuset="0x00000101" - allowed_cpuset="0x00000101"> - <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" - complete_cpuset="0x00000001" online_cpuset="0x00000001" - allowed_cpuset="0x00000001"/> - <object type="PU" os_level="-1" os_index="8" cpuset="0x00000100" - complete_cpuset="0x00000100" online_cpuset="0x00000100" - allowed_cpuset="0x00000100"/> - </object> - </object> - </object> - <object type="Cache" os_level="-1" cpuset="0x00001010" - complete_cpuset="0x00001010" online_cpuset="0x00001010" - allowed_cpuset="0x00001010" cache_size="1048576" depth="2" - cache_linesize="64"> - <object type="Cache" os_level="-1" cpuset="0x00001010" - complete_cpuset="0x00001010" online_cpuset="0x00001010" - allowed_cpuset="0x00001010" cache_size="16384" depth="1" - cache_linesize="64"> - <object type="Core" os_level="-1" os_index="1" cpuset="0x00001010" - complete_cpuset="0x00001010" online_cpuset="0x00001010" - allowed_cpuset="0x00001010"> - <object type="PU" os_level="-1" os_index="4" cpuset="0x00000010" - complete_cpuset="0x00000010" online_cpuset="0x00000010" - allowed_cpuset="0x00000010"/> - <object type="PU" os_level="-1" os_index="12" cpuset="0x00001000" - complete_cpuset="0x00001000" online_cpuset="0x00001000" - allowed_cpuset="0x00001000"/> - </object> - </object> - </object> - </object> - </object> - <!-- ...other sockets listed here ... --> - </object> -</topology> - -On a 4-socket 2-core Opteron NUMA machine, the lstopo tool may show the -following graphical output: - -hagrid.png - -Here's the equivalent output in textual form: - -Machine (32GB) - NUMANode L#0 (P#0 8190MB) + Socket L#0 - L2 L#0 (1024KB) + L1 L#0 (64KB) + Core L#0 + PU L#0 (P#0) - L2 L#1 (1024KB) + L1 L#1 (64KB) + Core L#1 + PU L#1 (P#1) - NUMANode L#1 (P#1 8192MB) + Socket L#1 - L2 L#2 (1024KB) + L1 L#2 (64KB) + Core L#2 + PU L#2 (P#2) - L2 L#3 (1024KB) + L1 L#3 (64KB) + Core L#3 + PU L#3 (P#3) - NUMANode L#2 (P#2 8192MB) + Socket L#2 - L2 L#4 (1024KB) + L1 L#4 (64KB) + Core L#4 + PU L#4 (P#4) - L2 L#5 (1024KB) + L1 L#5 (64KB) + Core L#5 + PU L#5 (P#5) - NUMANode L#3 (P#3 8192MB) + Socket L#3 - L2 L#6 (1024KB) + L1 L#6 (64KB) + Core L#6 + PU L#6 (P#6) - L2 L#7 (1024KB) + L1 L#7 (64KB) + Core L#7 + PU L#7 (P#7) - -And here's the equivalent output in XML. Similar to above, line breaks were -added and only PU #0 is shown for brevity: - -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE topology SYSTEM "hwloc.dtd"> -<topology> - <object type="Machine" os_level="-1" os_index="0" cpuset="0x000000ff" - complete_cpuset="0x000000ff" online_cpuset="0x000000ff" - allowed_cpuset="0x000000ff" nodeset="0x000000ff" - complete_nodeset="0x000000ff" allowed_nodeset="0x000000ff" - dmi_board_vendor="TYAN Computer Corp" dmi_board_name="S4881 "> - <page_type size="4096" count="0"/> - <page_type size="2097152" count="0"/> - <object type="NUMANode" os_level="-1" os_index="0" cpuset="0x00000003" - complete_cpuset="0x00000003" online_cpuset="0x00000003" - allowed_cpuset="0x00000003" nodeset="0x00000001" - complete_nodeset="0x00000001" allowed_nodeset="0x00000001" - local_memory="7514177536"> - <page_type size="4096" count="1834516"/> - <page_type size="2097152" count="0"/> - <object type="Socket" os_level="-1" os_index="0" cpuset="0x00000003" - complete_cpuset="0x00000003" online_cpuset="0x00000003" - allowed_cpuset="0x00000003" nodeset="0x00000001" - complete_nodeset="0x00000001" allowed_nodeset="0x00000001"> - <object type="Cache" os_level="-1" cpuset="0x00000001" - complete_cpuset="0x00000001" online_cpuset="0x00000001" - allowed_cpuset="0x00000001" nodeset="0x00000001" - complete_nodeset="0x00000001" allowed_nodeset="0x00000001" - cache_size="1048576" depth="2" cache_linesize="64"> - <object type="Cache" os_level="-1" cpuset="0x00000001" - complete_cpuset="0x00000001" online_cpuset="0x00000001" - allowed_cpuset="0x00000001" nodeset="0x00000001" - complete_nodeset="0x00000001" allowed_nodeset="0x00000001" - cache_size="65536" depth="1" cache_linesize="64"> - <object type="Core" os_level="-1" os_index="0" - cpuset="0x00000001" complete_cpuset="0x00000001" - online_cpuset="0x00000001" allowed_cpuset="0x00000001" - nodeset="0x00000001" complete_nodeset="0x00000001" - allowed_nodeset="0x00000001"> - <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" - complete_cpuset="0x00000001" online_cpuset="0x00000001" - allowed_cpuset="0x00000001" nodeset="0x00000001" - complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/> - </object> - </object> - </object> - <!-- ...more objects listed here ... --> -</topology> - -On a 2-socket quad-core Xeon (pre-Nehalem, with 2 dual-core dies into each -socket): - -emmett.png - -Here's the same output in textual form: - -Machine (16GB) - Socket L#0 - L2 L#0 (4096KB) - L1 L#0 (32KB) + Core L#0 + PU L#0 (P#0) - L1 L#1 (32KB) + Core L#1 + PU L#1 (P#4) - L2 L#1 (4096KB) - L1 L#2 (32KB) + Core L#2 + PU L#2 (P#2) - L1 L#3 (32KB) + Core L#3 + PU L#3 (P#6) - Socket L#1 - L2 L#2 (4096KB) - L1 L#4 (32KB) + Core L#4 + PU L#4 (P#1) - L1 L#5 (32KB) + Core L#5 + PU L#5 (P#5) - L2 L#3 (4096KB) - L1 L#6 (32KB) + Core L#6 + PU L#6 (P#3) - L1 L#7 (32KB) + Core L#7 + PU L#7 (P#7) - -And the same output in XML (line breaks added, only PU #0 shown): - -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE topology SYSTEM "hwloc.dtd"> -<topology> - <object type="Machine" os_level="-1" os_index="0" cpuset="0x000000ff" - complete_cpuset="0x000000ff" online_cpuset="0x000000ff" - allowed_cpuset="0x000000ff" dmi_board_vendor="Dell Inc." - dmi_board_name="0NR282" local_memory="16865292288"> - <page_type size="4096" count="4117503"/> - <page_type size="2097152" count="0"/> - <object type="Socket" os_level="-1" os_index="0" cpuset="0x00000055" - complete_cpuset="0x00000055" online_cpuset="0x00000055" - allowed_cpuset="0x00000055"> - <object type="Cache" os_level="-1" cpuset="0x00000011" - complete_cpuset="0x00000011" online_cpuset="0x00000011" - allowed_cpuset="0x00000011" cache_size="4194304" depth="2" - cache_linesize="64"> - <object type="Cache" os_level="-1" cpuset="0x00000001" - complete_cpuset="0x00000001" online_cpuset="0x00000001" - allowed_cpuset="0x00000001" cache_size="32768" depth="1" - cache_linesize="64"> - <object type="Core" os_level="-1" os_index="0" cpuset="0x00000001" - complete_cpuset="0x00000001" online_cpuset="0x00000001" - allowed_cpuset="0x00000001"> - <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" - complete_cpuset="0x00000001" online_cpuset="0x00000001" - allowed_cpuset="0x00000001"/> - </object> - </object> - <object type="Cache" os_level="-1" cpuset="0x00000010" - complete_cpuset="0x00000010" online_cpuset="0x00000010" - allowed_cpuset="0x00000010" cache_size="32768" depth="1" - cache_linesize="64"> - <object type="Core" os_level="-1" os_index="1" cpuset="0x00000010" - complete_cpuset="0x00000010" online_cpuset="0x00000010" - allowed_cpuset="0x00000010"> - <object type="PU" os_level="-1" os_index="4" cpuset="0x00000010" - complete_cpuset="0x00000010" online_cpuset="0x00000010" - allowed_cpuset="0x00000010"/> - </object> - </object> - </object> - <!-- ...more objects listed here ... --> -</topology> - -Programming Interface - -The basic interface is available in hwloc.h. It essentially offers low-level -routines for advanced programmers that want to manually manipulate objects and -follow links between them. Documentation for everything in hwloc.h are provided -later in this document. Developers should also look at hwloc/helper.h (and also -in this document, which provides good higher-level topology traversal examples. - -To precisely define the vocabulary used by hwloc, a Terms and Definitions -section is available and should probably be read first. - -Each hwloc object contains a cpuset describing the list of processing units -that it contains. These bitmaps may be used for CPU binding and Memory binding. -hwloc offers an extensive bitmap manipulation interface in hwloc/bitmap.h. - -Moreover, hwloc also comes with additional helpers for interoperability with -several commonly used environments. See the Interoperability With Other -Software section for details. - -The complete API documentation is available in a full set of HTML pages, man -pages, and self-contained PDF files (formatted for both both US letter and A4 -formats) in the source tarball in doc/doxygen-doc/. - -NOTE: If you are building the documentation from a Subversion checkout, you -will need to have Doxygen and pdflatex installed -- the documentation will be -built during the normal "make" process. The documentation is installed during -"make install" to $prefix/share/doc/hwloc/ and your systems default man page -tree (under $prefix, of course). - -Portability - -As shown in CLI Examples, hwloc can obtain information on a wide variety of -hardware topologies. However, some platforms and/or operating system versions -will only report a subset of this information. For example, on an PPC64-based -system with 32 cores (each with 2 hardware threads) running a default -2.6.18-based kernel from RHEL 5.4, hwloc is only able to glean information -about NUMA nodes and processor units (PUs). No information about caches, -sockets, or cores is available. - -Similarly, Operating System have varying support for CPU and memory binding, -e.g. while some Operating Systems provide interfaces for all kinds of CPU and -memory bindings, some others provide only interfaces for a limited number of -kinds of CPU and memory binding, and some do not provide any binding interface -at all. Hwloc's binding functions would then simply return the ENOSYS error -(Function not implemented), meaning that the underlying Operating System does -not provide any interface for them. CPU binding and Memory binding provide more -information on which hwloc binding functions should be preferred because -interfaces for them are usually available on the supported Operating Systems. - -Here's the graphical output from lstopo on this platform when Simultaneous -Multi-Threading (SMT) is enabled: - -ppc64-with-smt.png - -And here's the graphical output from lstopo on this platform when SMT is -disabled: - -ppc64-without-smt.png - -Notice that hwloc only sees half the PUs when SMT is disabled. PU #15, for -example, seems to change location from NUMA node #0 to #1. In reality, no PUs -"moved" -- they were simply re-numbered when hwloc only saw half as many. -Hence, PU #15 in the SMT-disabled picture probably corresponds to PU #30 in the -SMT-enabled picture. - -This same "PUs have disappeared" effect can be seen on other platforms -- even -platforms / OSs that provide much more information than the above PPC64 system. -This is an unfortunate side-effect of how operating systems report information -to hwloc. - -Note that upgrading the Linux kernel on the same PPC64 system mentioned above -to 2.6.34, hwloc is able to discover all the topology information. The -following picture shows the entire topology layout when SMT is enabled: - -ppc64-full-with-smt.png - -Developers using the hwloc API or XML output for portable applications should -therefore be extremely careful to not make any assumptions about the structure -of data that is returned. For example, per the above reported PPC topology, it -is not safe to assume that PUs will always be descendants of cores. - -Additionally, future hardware may insert new topology elements that are not -available in this version of hwloc. Long-lived applications that are meant to -span multiple different hardware platforms should also be careful about making -structure assumptions. For example, there may someday be an element "lower" -than a PU, or perhaps a new element may exist between a core and a PU. - -API Example - -The following small C example (named ``hwloc-hello.c'') prints the topology of -the machine and bring the process to the first logical processor of the second -core of the machine. - -/* Example hwloc API program. - * - * Copyright ? 2009-2010 INRIA. All rights reserved. - * Copyright ? 2009-2011 Universit? Bordeaux 1 - * Copyright ? 2009-2010 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - * - * hwloc-hello.c - */ - -#include <hwloc.h> -#include <errno.h> -#include <stdio.h> -#include <string.h> - -static void print_children(hwloc_topology_t topology, hwloc_obj_t obj, - int depth) -{ - char string[128]; - unsigned i; - - hwloc_obj_snprintf(string, sizeof(string), topology, obj, "#", 0); - printf("%*s%s\n", 2*depth, "", string); - for (i = 0; i < obj->arity; i++) { - print_children(topology, obj->children[i], depth + 1); - } -} - -int main(void) -{ - int depth; - unsigned i, n; - unsigned long size; - int levels; - char string[128]; - int topodepth; - hwloc_topology_t topology; - hwloc_cpuset_t cpuset; - hwloc_obj_t obj; - - /* Allocate and initialize topology object. */ - hwloc_topology_init(&topology); - - /* ... Optionally, put detection configuration here to ignore - some objects types, define a synthetic topology, etc.... - - The default is to detect all the objects of the machine that - the caller is allowed to access. See Configure Topology - Detection. */ - - /* Perform the topology detection. */ - hwloc_topology_load(topology); - - /* Optionally, get some additional topology information - in case we need the topology depth later. */ - topodepth = hwloc_topology_get_depth(topology); - - /***************************************************************** - * First example: - * Walk the topology with an array style, from level 0 (always - * the system level) to the lowest level (always the proc level). - *****************************************************************/ - for (depth = 0; depth < topodepth; depth++) { - printf("*** Objects at level %d\n", depth); - for (i = 0; i < hwloc_get_nbobjs_by_depth(topology, depth); - i++) { - hwloc_obj_snprintf(string, sizeof(string), topology, - hwloc_get_obj_by_depth(topology, depth, i), - "#", 0); - printf("Index %u: %s\n", i, string); - } - } - - /***************************************************************** - * Second example: - * Walk the topology with a tree style. - *****************************************************************/ - printf("*** Printing overall tree\n"); - print_children(topology, hwloc_get_root_obj(topology), 0); - - /***************************************************************** - * Third example: - * Print the number of sockets. - *****************************************************************/ - depth = hwloc_get_type_depth(topology, HWLOC_OBJ_SOCKET); - if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) { - printf("*** The number of sockets is unknown\n"); - } else { - printf("*** %u socket(s)\n", - hwloc_get_nbobjs_by_depth(topology, depth)); - } - - /***************************************************************** - * Fourth example: - * Compute the amount of cache that the first logical processor - * has above it. - *****************************************************************/ - levels = 0; - size = 0; - for (obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 0); - obj; - obj = obj->parent) - if (obj->type == HWLOC_OBJ_CACHE) { - levels++; - size += obj->attr->cache.size; - } - printf("*** Logical processor 0 has %d caches totaling %luKB\n", - levels, size / 1024); - - /***************************************************************** - * Fifth example: - * Bind to only one thread of the last core of the machine. - * - * First find out where cores are, or else smaller sets of CPUs if - * the OS doesn't have the notion of a "core". - *****************************************************************/ - depth = hwloc_get_type_or_below_depth(topology, HWLOC_OBJ_CORE); - - /* Get last core. */ - obj = hwloc_get_obj_by_depth(topology, depth, - hwloc_get_nbobjs_by_depth(topology, depth) - 1); - if (obj) { - /* Get a copy of its cpuset that we may modify. */ - cpuset = hwloc_bitmap_dup(obj->cpuset); - - /* Get only one logical processor (in case the core is - SMT/hyperthreaded). */ - hwloc_bitmap_singlify(cpuset); - - /* And try to bind ourself there. */ - if (hwloc_set_cpubind(topology, cpuset, 0)) { - char *str; - int error = errno; - hwloc_bitmap_asprintf(&str, obj->cpuset); - printf("Couldn't bind to cpuset %s: %s\n", str, strerror(error)); - free(str); - } - - /* Free our cpuset copy */ - hwloc_bitmap_free(cpuset); - } - - /***************************************************************** - * Sixth example: - * Allocate some memory on the last NUMA node, bind some existing - * memory to the last NUMA node. - *****************************************************************/ - /* Get last node. */ - n = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NODE); - if (n) { - void *m; - size = 1024*1024; - - obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NODE, n - 1); - m = hwloc_alloc_membind_nodeset(topology, size, obj->nodeset, - HWLOC_MEMBIND_DEFAULT, 0); - hwloc_free(topology, m, size); - - m = malloc(size); - hwloc_set_area_membind_nodeset(topology, m, size, obj->nodeset, - HWLOC_MEMBIND_DEFAULT, 0); - free(m); - } - - /* Destroy topology object. */ - hwloc_topology_destroy(topology); - - return 0; -} - -hwloc provides a pkg-config executable to obtain relevant compiler and linker -flags. For example, it can be used thusly to compile applications that utilize -the hwloc library (assuming GNU Make): - -CFLAGS += $(pkg-config --cflags hwloc) -LDLIBS += $(pkg-config --libs hwloc) -cc hwloc-hello.c $(CFLAGS) -o hwloc-hello $(LDLIBS) - -On a machine with 4GB of RAM and 2 processor sockets -- each socket of which -has two processing cores -- the output from running hwloc-hello could be -something like the following: - -shell$ ./hwloc-hello -*** Objects at level 0 -Index 0: Machine(3938MB) -*** Objects at level 1 -Index 0: Socket#0 -Index 1: Socket#1 -*** Objects at level 2 -Index 0: Core#0 -Index 1: Core#1 -Index 2: Core#3 -Index 3: Core#2 -*** Objects at level 3 -Index 0: PU#0 -Index 1: PU#1 -Index 2: PU#2 -Index 3: PU#3 -*** Printing overall tree -Machine(3938MB) - Socket#0 - Core#0 - PU#0 - Core#1 - PU#1 - Socket#1 - Core#3 - PU#2 - Core#2 - PU#3 -*** 2 socket(s) -shell$ - -Questions and Bugs - -Questions should be sent to the devel mailing list (http://www.open-mpi.org/ -community/lists/hwloc.php). Bug reports should be reported in the tracker ( -https://svn.open-mpi.org/trac/hwloc/). - -If hwloc discovers an incorrect topology for your machine, the very first thing -you should check is to ensure that you have the most recent updates installed -for your operating system. Indeed, most of hwloc topology discovery relies on -hardware information retrieved through the operation system (e.g., via the /sys -virtual filesystem of the Linux kernel). If upgrading your OS or Linux kernel -does not solve your problem, you may also want to ensure that you are running -the most recent version of the BIOS for your machine. - -If those things fail, contact us on the mailing list for additional help. -Please attach the output of lstopo after having given the --enable-debug option -to ./configure and rebuilt completely, to get debugging output. - -History / Credits - -hwloc is the evolution and merger of the libtopology (http:// -runtime.bordeaux.inria.fr/libtopology/) project and the Portable Linux -Processor Affinity (PLPA) (http://www.open-mpi.org/projects/plpa/) project. -Because of functional and ideological overlap, these two code bases and ideas -were merged and released under the name "hwloc" as an Open MPI sub-project. - -libtopology was initially developed by the INRIA Runtime Team-Project (http:// -runtime.bordeaux.inria.fr/) (headed by Raymond Namyst (http:// -dept-info.labri.fr/~namyst/). PLPA was initially developed by the Open MPI -development team as a sub-project. Both are now deprecated in favor of hwloc, -which is distributed as an Open MPI sub-project. - -Further Reading - -The documentation chapters include - - * Terms and Definitions - * Command-Line Tools - * Environment Variables - * CPU and Memory Binding Overview - * Interoperability With Other Software - * Thread Safety - * Embedding hwloc in Other Software - * Frequently Asked Questions - -Make sure to have had a look at those too! - -------------------------------------------------------------------------------- - -Generated on Tue Aug 16 2011 19:37:04 for Hardware Locality (hwloc) by doxygen -1.7.4 diff --git a/hwloc-1.2.1/VERSION b/hwloc-1.2.1/VERSION deleted file mode 100644 index c3779fc6..00000000 --- a/hwloc-1.2.1/VERSION +++ /dev/null @@ -1,61 +0,0 @@ -# This is the VERSION file for hwloc, describing the precise version -# of hwloc in this distribution. The various components of the version -# number below are combined to form a single version number string. - -# major, minor, and release are generally combined in the form -# <major>.<minor>.<release>. If release is zero, then it is omitted. - -major=1 -minor=2 -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= - -# If want_repo_rev=1, then the SVN r number will be included in the overall -# hwloc version number in some form. - -want_repo_rev=0 - -# If repo_rev=-1, then the repository version number will be obtained -# dynamically at run time, either: -# -# 1) via the "svnversion" command (if this is a Subversion checkout) -# in the form "r<svn_r>", or -# 2) via the "hg -v -R tip" command (if this is a Mercurial clone) -# in the form of "hg<hash>", using the hash tag at the tip -# 3) via the "git log -1" command (if this is a Git clone) in the form -# of "git<hash>", using the hash tag at the HEAD -# 4) with the date (if none of the above work) in the form of -# "date<date>". -# -# Alternatively, if repo_rev is not -1, the value of repo_rev_r will -# be directly appended to the version string. This happens during -# "make dist", for example: if the distribution tarball is being made -# from an SVN checkout, if repo_rev=-1, then its value is replaced -# with the output of "svnversion". - -repo_rev=r3619 - -# The date when this release was created - -date="Aug 16, 2011" - -# 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 SVN trunk (and developer branches) is -# always 0:0:0. - -# 2. Version numbers are described in the Libtool current:revision:age -# format. - -libhwloc_so_version=3:1:3 diff --git a/hwloc-1.2.1/aclocal.m4 b/hwloc-1.2.1/aclocal.m4 deleted file mode 100644 index 1ebbfdbe..00000000 --- a/hwloc-1.2.1/aclocal.m4 +++ /dev/null @@ -1,1040 +0,0 @@ -# generated automatically by aclocal 1.11.1 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, -[m4_warning([this file was generated for autoconf 2.68. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) - -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.11' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.1], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.1])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 9 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 10 - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -#serial 5 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 16 - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.62])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) - -dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST(install_sh)]) - -# Copyright (C) 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 6 - -# AM_PROG_CC_C_O -# -------------- -# Like AC_PROG_CC_C_O, but changed for automake. -AC_DEFUN([AM_PROG_CC_C_O], -[AC_REQUIRE([AC_PROG_CC_C_O])dnl -AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -# FIXME: we rely on the cache variable name because -# there is no other way. -set dummy $CC -am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` -eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o -if test "$am_t" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -dnl Make sure AC_PROG_CC is never called again, or it will override our -dnl setting of CC. -m4_define([AC_PROG_CC], - [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 6 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_MKDIR_P -# --------------- -# Check for `mkdir -p'. -AC_DEFUN([AM_PROG_MKDIR_P], -[AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_RUN_LOG(COMMAND) -# ------------------- -# Run COMMAND, save the exit status in ac_status, and log it. -# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) -AC_DEFUN([AM_RUN_LOG], -[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD - ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - (exit $ac_status); }]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# Copyright (C) 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# AM_SILENT_RULES([DEFAULT]) -# -------------------------- -# Enable less verbose build rules; with the default set to DEFAULT -# (`yes' being less verbose, `no' or empty being verbose). -AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], -[ --enable-silent-rules less verbose build output (undo: `make V=1') - --disable-silent-rules verbose build output (undo: `make V=0')]) -case $enable_silent_rules in -yes) AM_DEFAULT_VERBOSITY=0;; -no) AM_DEFAULT_VERBOSITY=1;; -*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -esac -AC_SUBST([AM_DEFAULT_VERBOSITY])dnl -AM_BACKSLASH='\' -AC_SUBST([AM_BACKSLASH])dnl -_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl -]) - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006, 2008 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) -m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar <conftest.tar]) - grep GrepMe conftest.dir/file >/dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -m4_include([config/hwloc.m4]) -m4_include([config/hwloc_check_attributes.m4]) -m4_include([config/hwloc_check_visibility.m4]) -m4_include([config/hwloc_internal.m4]) -m4_include([config/hwloc_pkg.m4]) -m4_include([config/libtool.m4]) -m4_include([config/ltoptions.m4]) -m4_include([config/ltsugar.m4]) -m4_include([config/ltversion.m4]) -m4_include([config/lt~obsolete.m4]) diff --git a/hwloc-1.2.1/config/compile b/hwloc-1.2.1/config/compile deleted file mode 100755 index c0096a7b..00000000 --- a/hwloc-1.2.1/config/compile +++ /dev/null @@ -1,143 +0,0 @@ -#! /bin/sh -# Wrapper for compilers which do not understand `-c -o'. - -scriptversion=2009-10-06.20; # UTC - -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software -# Foundation, Inc. -# Written by Tom Tromey <tromey@cygnus.com>. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# This file is maintained in Automake, please report -# bugs to <bug-automake@gnu.org> or send patches to -# <automake-patches@gnu.org>. - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: compile [--help] [--version] PROGRAM [ARGS] - -Wrapper for compilers which do not understand `-c -o'. -Remove `-o dest.o' from ARGS, run PROGRAM with the remaining -arguments, and rename the output as expected. - -If you are trying to build a whole package this is not the -right script to run: please start by reading the file `INSTALL'. - -Report bugs to <bug-automake@gnu.org>. -EOF - exit $? - ;; - -v | --v*) - echo "compile $scriptversion" - exit $? - ;; -esac - -ofile= -cfile= -eat= - -for arg -do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as `compile cc -o foo foo.c'. - # So we strip `-o arg' only if arg is an object. - eat=1 - case $2 in - *.o | *.obj) - ofile=$2 - ;; - *) - set x "$@" -o "$2" - shift - ;; - esac - ;; - *.c) - cfile=$1 - set x "$@" "$1" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift -done - -if test -z "$ofile" || test -z "$cfile"; then - # If no `-o' option was seen then we might have been invoked from a - # pattern rule where we don't need one. That is ok -- this is a - # normal compilation that the losing compiler can handle. If no - # `.c' file was seen then we are probably linking. That is also - # ok. - exec "$@" -fi - -# Name of file we expect compiler to create. -cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` - -# Create the lock directory. -# Note: use `[/\\:.-]' here to ensure that we don't use the same name -# that we are using for the .o file. Also, base the name on the expected -# object file name, since that is what matters with a parallel build. -lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d -while true; do - if mkdir "$lockdir" >/dev/null 2>&1; then - break - fi - sleep 1 -done -# FIXME: race condition here if user kills between mkdir and trap. -trap "rmdir '$lockdir'; exit 1" 1 2 15 - -# Run the compile. -"$@" -ret=$? - -if test -f "$cofile"; then - test "$cofile" = "$ofile" || mv "$cofile" "$ofile" -elif test -f "${cofile}bj"; then - test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" -fi - -rmdir "$lockdir" -exit $ret - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/hwloc-1.2.1/config/config.guess b/hwloc-1.2.1/config/config.guess deleted file mode 100755 index dc84c68e..00000000 --- a/hwloc-1.2.1/config/config.guess +++ /dev/null @@ -1,1501 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 -# Free Software Foundation, Inc. - -timestamp='2009-11-20' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Originally written by Per Bothner. Please send patches (context -# diff format) to <config-patches@gnu.org> and include a ChangeLog -# entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to <config-patches@gnu.org>." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH="x86_64" - fi - fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include <stdio.h> /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include <sys/systemcfg.h> - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[456]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include <stdlib.h> - #include <unistd.h> - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep -q __LP64__ - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include <unistd.h> - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; - esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-gnu - else - echo ${UNAME_MACHINE}-unknown-linux-gnueabi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) - echo cris-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) - echo crisv32-axis-linux-gnu - exit ;; - frv:Linux:*:*) - echo frv-unknown-linux-gnu - exit ;; - i*86:Linux:*:*) - LIBC=gnu - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - or32:Linux:*:*) - echo or32-unknown-linux-gnu - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-gnu - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu - exit ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` - echo ${UNAME_MACHINE}-pc-isc$UNAME_REL - elif /bin/uname -X 2>/dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says <Richard.M.Bartel@ccMail.Census.GOV> - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes <hewes@openmarket.com>. - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - i386) - eval $set_cc_for_build - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - UNAME_PROCESSOR="x86_64" - fi - fi ;; - unknown) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NSE-?:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c <<EOF -#ifdef _SEQUENT_ -# include <sys/types.h> -# include <sys/utsname.h> -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include <sys/param.h> - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include <sys/param.h> -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - -cat >&2 <<EOF -$0: unable to guess system type - -This script, last modified $timestamp, has failed to recognize -the operating system you are using. It is advised that you -download the most up to date version of the config scripts from - - http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD -and - http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - -If the version you run ($0) is already up to date, please -send the following data and any information you think might be -pertinent to <config-patches@gnu.org> in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/hwloc-1.2.1/config/config.sub b/hwloc-1.2.1/config/config.sub deleted file mode 100755 index 2a55a507..00000000 --- a/hwloc-1.2.1/config/config.sub +++ /dev/null @@ -1,1705 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 -# Free Software Foundation, Inc. - -timestamp='2009-11-20' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Please send patches to <config-patches@gnu.org>. Submit a context -# diff and a properly formatted GNU ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to <config-patches@gnu.org>." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ - uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nios | nios2 \ - | ns16k | ns32k \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu | strongarm \ - | tahoe | thumb | tic4x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e \ - | we32k \ - | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12 | picochip) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ - | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze) - basic_machine=microblaze-xilinx - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tic55x | c55x*) - basic_machine=tic55x-unknown - os=-coff - ;; - tic6x | c6x*) - basic_machine=tic6x-unknown - os=-coff - ;; - tile*) - basic_machine=tile-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux - ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mep-*) - os=-elf - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -cnk*|-aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/hwloc-1.2.1/config/depcomp b/hwloc-1.2.1/config/depcomp deleted file mode 100755 index df8eea7e..00000000 --- a/hwloc-1.2.1/config/depcomp +++ /dev/null @@ -1,630 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2009-04-28.21; # UTC - -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free -# Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to <bug-automake@gnu.org>. -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u="sed s,\\\\\\\\,/,g" - depmode=msvisualcpp -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> "$depfile" - echo >> "$depfile" - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add `dependent.h:' lines. - sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. - "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -arch) - eat=yes ;; - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix=`echo "$object" | sed 's/^.*\././'` - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/hwloc-1.2.1/config/distscript.csh b/hwloc-1.2.1/config/distscript.csh deleted file mode 100755 index ed4578b4..00000000 --- a/hwloc-1.2.1/config/distscript.csh +++ /dev/null @@ -1,240 +0,0 @@ -#! /bin/csh -f -# -# Copyright (c) 2004-2005 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-2005 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. -# Copyright © 2010 INRIA. All rights reserved. -# Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. -# $COPYRIGHT$ -# -# Additional copyrights may follow -# -# $HEADER$ -# - -set builddir="`pwd`" - -set srcdir="$1" -cd "$srcdir" -set srcdir=`pwd` -cd "$builddir" - -set distdir="$builddir/$2" -set HWLOC_VERSION="$3" -set HWLOC_REPO_REV="$4" - -if ("$distdir" == "") then - echo "Must supply relative distdir as argv[2] -- aborting" - exit 1 -elif ("$HWLOC_VERSION" == "") then - echo "Must supply version as argv[1] -- aborting" - exit 1 -endif - -#======================================================================== - -if ("$srcdir" != "$builddir") then - set vpath=1 - set vpath_msg=yes -else - set vpath=0 - set vpath_msg=no -endif - -# We can catch some hard (but possible) to do mistakes by looking at -# our tree's revision number, but only if we are in the source tree. -# Otherwise, use what configure told us, at the cost of allowing one -# or two corner cases in (but otherwise VPATH builds won't work). -set repo_rev=$HWLOC_REPO_REV -if (-d .svn) then - set repo_rev="r`svnversion .`" -endif - -set start=`date` -cat <<EOF - -Creating hwloc distribution -In directory: `pwd` -Srcdir: $srcdir -Builddir: $builddir -VPATH: $vpath_msg -Version: $HWLOC_VERSION -Started: $start - -EOF - -umask 022 - -if (! -d "$distdir") then - echo "*** ERROR: dist dir does not exist" - echo "*** ERROR: $distdir" - exit 1 -endif - -# -# See if we need to update the version file with the current repo -# revision number. Do this *before* entering the distribution tree to -# solve a whole host of problems with VPATH (since srcdir may be -# relative or absolute) -# -set cur_repo_rev="`grep '^repo_rev' ${distdir}/VERSION | cut -d= -f2`" -if ("$cur_repo_rev" == "-1") then - sed -e 's/^repo_rev=.*/repo_rev='$repo_rev'/' "${distdir}/VERSION" > "${distdir}/version.new" - cp "${distdir}/version.new" "${distdir}/VERSION" - rm -f "${distdir}/version.new" - # need to reset the timestamp to not annoy AM dependencies - touch -r "${srcdir}/VERSION" "${distdir}/VERSION" - echo "*** Updated VERSION file with repo rev number: $repo_rev" -else - echo "*** Did NOT update VERSION file with repo rev number" -endif - -# -# VPATH builds only work if the srcdir has valid docs already built. -# If we're VPATH and the srcdir doesn't have valid docs, then fail. -# - -if ($vpath == 1 && ! -d $srcdir/doc/doxygen-doc) then - echo "*** This is a VPATH 'make dist', but the srcdir does not already" - echo "*** have a doxygen-doc tree built. hwloc's config/distscript.csh" - echo "*** requores the docs to be built in the srcdir before executing" - echo "*** 'make dist' in a VPATH build." - exit 1 -endif - -# -# If we're not VPATH, force the generation of new doxygen documentation -# - -if ($vpath == 0) then - # Not VPATH - echo "*** Making new doxygen documentation (doxygen-doc tree)" - echo "*** Directory: srcdir: $srcdir, distdir: $distdir, pwd: `pwd`" - cd doc - # We're still in the src tree, so kill any previous doxygen-docs - # tree and make a new one. - chmod -R a=rwx doxygen-doc - rm -rf doxygen-doc - make - if ($status != 0) then - echo ERROR: generating doxygen docs failed - echo ERROR: cannot continue - exit 1 - endif - - # Make new README file - echo "*** Making new README" - make readme - if ($status != 0) then - echo ERROR: generating new README failed - echo ERROR: cannot continue - exit 1 - endif -else - echo "*** This is a VPATH build; assuming that the doxygen docs and REAME" - echo "*** are current in the srcdir (i.e., we'll just copy those)" -endif - -echo "*** Copying doxygen-doc tree to dist..." -echo "*** Directory: srcdir: $srcdir, distdir: $distdir, pwd: `pwd`" -chmod -R a=rwx $distdir/doc/doxygen-doc -echo rm -rf $distdir/doc/doxygen-doc -rm -rf $distdir/doc/doxygen-doc -echo cp -rpf $srcdir/doc/doxygen-doc $distdir/doc -cp -rpf $srcdir/doc/doxygen-doc $distdir/doc - -echo "*** Copying new README" -ls -lf $distdir/README -cp -pf $srcdir/README $distdir - -######################################################### -# VERY IMPORTANT: Now go into the new distribution tree # -######################################################### -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 -# - -echo "*** Downloading latest config.sub/config.guess from ftp.gnu.org..." -cd config -set configdir="`pwd`" -mkdir tmp.$$ -cd tmp.$$ -# Official HTTP git mirrors for config.guess / config.sub -wget -t 1 -T 10 -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=master' -wget -t 1 -T 10 -O config.sub 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=master' -chmod +x config.guess config.sub - -# Recently, ftp.gnu.org has had zero-legnth config.guess / config.sub -# files, which causes the automated nightly SVN snapshot tarball to -# fail to be made correctly. This is a primitive attempt to fix that. -# If we got zero-length files from wget, use a config.guess / -# config.sub from a known location that is more recent than what ships -# in the current generation of auto* tools. Also check to ensure that -# the resulting scripts are runnable (Jan 2009: there are un-runnable -# scripts available right now because of some git vulnerability). - -# Before you complain about this too loudly, remember that we're using -# unreleased software... - -set happy=0 -if (! -f config.guess || ! -s config.guess) then - echo " - WARNING: Got bad config.guess from ftp.gnu.org (non-existent or empty)" -else - ./config.guess >& /dev/null - if ($status != 0) then - echo " - WARNING: Got bad config.guess from ftp.gnu.org (not executable)" - else - if (! -f config.sub || ! -s config.sub) then - echo " - WARNING: Got bad config.sub from ftp.gnu.org (non-existent or empty)" - else - ./config.sub `./config.guess` >& /dev/null - if ($status != 0) then - echo " - WARNING: Got bad config.sub from ftp.gnu.org (not executable)" - else - echo " - Got good config.guess and config.sub from ftp.gnu.org" - chmod +w ../config.sub ../config.guess - cp config.sub config.guess .. - set happy=1 - endif - endif - endif -endif - -if ("$happy" == "0") then - echo " - WARNING: using included versions for both config.sub and config.guess" -endif -cd .. -rm -rf tmp.$$ -cd .. - -# -# All done -# - -cat <<EOF -*** hwloc version $HWLOC_VERSION distribution created - -Started: $start -Ended: `date` - -EOF - diff --git a/hwloc-1.2.1/config/hwloc.m4 b/hwloc-1.2.1/config/hwloc.m4 deleted file mode 100644 index 680eb7b3..00000000 --- a/hwloc-1.2.1/config/hwloc.m4 +++ /dev/null @@ -1,707 +0,0 @@ -dnl -*- Autoconf -*- -dnl -dnl Copyright (c) 2009-2010 INRIA. All rights reserved. -dnl Copyright (c) 2009-2011 Université Bordeaux 1 -dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana -dnl University Research and Technology -dnl Corporation. All rights reserved. -dnl Copyright (c) 2004-2005 The Regents of the University of California. -dnl All rights reserved. -dnl Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, -dnl University of Stuttgart. All rights reserved. -dnl Copyright © 2006-2011 Cisco Systems, Inc. All rights reserved. -dnl See COPYING in top-level directory. - -# Main hwloc m4 macro, to be invoked by the user -# -# Expects two or three paramters: -# 1. Configuration prefix -# 2. What to do upon success -# 3. What to do upon failure -# 4. If non-empty, print the announcement banner -# -AC_DEFUN([HWLOC_SETUP_CORE],[ - AC_REQUIRE([AC_CANONICAL_TARGET]) - AC_REQUIRE([AC_PROG_CC]) - - AS_IF([test "x$4" != "x"], - [cat <<EOF - -### -### Configuring hwloc core -### -EOF]) - - # If no prefix was defined, set a good value - m4_ifval([$1], - [m4_define([hwloc_config_prefix],[$1/])], - [m4_define([hwloc_config_prefix], [])]) - - # Unless previously set to "standalone" mode, default to embedded - # mode - AS_IF([test "$hwloc_mode" = ""], [hwloc_mode=embedded]) - AC_MSG_CHECKING([hwloc building mode]) - AC_MSG_RESULT([$hwloc_mode]) - - # Get hwloc's absolute top builddir (which may not be the same as - # the real $top_builddir, because we may be building in embedded - # mode). - HWLOC_startdir=`pwd` - if test x"hwloc_config_prefix" != "x" -a ! -d "hwloc_config_prefix"; then - mkdir -p "hwloc_config_prefix" - fi - if test x"hwloc_config_prefix" != "x"; then - cd "hwloc_config_prefix" - fi - HWLOC_top_builddir=`pwd` - AC_SUBST(HWLOC_top_builddir) - - # Get hwloc's absolute top srcdir (which may not be the same as - # the real $top_srcdir, because we may be building in embedded - # mode). First, go back to the startdir incase the $srcdir is - # relative. - - cd "$HWLOC_startdir" - cd "$srcdir"/hwloc_config_prefix - HWLOC_top_srcdir="`pwd`" - AC_SUBST(HWLOC_top_srcdir) - - # Go back to where we started - cd "$HWLOC_startdir" - - AC_MSG_NOTICE([hwloc builddir: $HWLOC_top_builddir]) - AC_MSG_NOTICE([hwloc srcdir: $HWLOC_top_srcdir]) - if test "$HWLOC_top_builddir" != "$HWLOC_top_srcdir"; then - AC_MSG_NOTICE([Detected VPATH build]) - fi - - # Debug mode? - AC_MSG_CHECKING([if want hwloc maintainer support]) - hwloc_debug= - - # Unconditionally disable debug mode in embedded mode; if someone - # asks, we can add a configure-time option for it. Disable it - # now, however, because --enable-debug is not even added as an - # option when configuring in embedded mode, and we wouldn't want - # to hijack the enclosing application's --enable-debug configure - # switch. - AS_IF([test "$hwloc_mode" = "embedded"], - [hwloc_debug=0 - hwloc_debug_msg="disabled (embedded mode)"]) - AS_IF([test "$hwloc_debug" = "" -a "$enable_debug" = "yes"], - [hwloc_debug=1 - hwloc_debug_msg="enabled"]) - AS_IF([test "$hwloc_debug" = ""], - [hwloc_debug=0 - hwloc_debug_msg="disabled"]) - # Grr; we use #ifndef for HWLOC_DEBUG! :-( - AH_TEMPLATE(HWLOC_DEBUG, [Whether we are in debugging mode or not]) - AS_IF([test "$hwloc_debug" = "1"], [AC_DEFINE([HWLOC_DEBUG])]) - AC_MSG_RESULT([$hwloc_debug_msg]) - - # We need to set a path for header, etc files depending on whether - # we're standalone or embedded. this is taken care of by HWLOC_EMBEDDED. - - AC_MSG_CHECKING([for hwloc directory prefix]) - AC_MSG_RESULT(m4_ifval([$1], hwloc_config_prefix, [(none)])) - - # Note that private/config.h *MUST* be listed first so that it - # becomes the "main" config header file. Any AC-CONFIG-HEADERS - # after that (hwloc/config.h) will only have selective #defines - # replaced, not the entire file. - AC_CONFIG_HEADERS(hwloc_config_prefix[include/private/autogen/config.h]) - AC_CONFIG_HEADERS(hwloc_config_prefix[include/hwloc/autogen/config.h]) - - # What prefix are we using? - AC_MSG_CHECKING([for hwloc symbol prefix]) - AS_IF([test "$hwloc_symbol_prefix_value" = ""], - [AS_IF([test "$with_hwloc_symbol_prefix" = ""], - [hwloc_symbol_prefix_value=hwloc_], - [hwloc_symbol_prefix_value=$with_hwloc_symbol_prefix])]) - AC_DEFINE_UNQUOTED(HWLOC_SYM_PREFIX, [$hwloc_symbol_prefix_value], - [The hwloc symbol prefix]) - # Ensure to [] escape the whole next line so that we can get the - # proper tr tokens - [hwloc_symbol_prefix_value_caps="`echo $hwloc_symbol_prefix_value | tr '[:lower:]' '[:upper:]'`"] - AC_DEFINE_UNQUOTED(HWLOC_SYM_PREFIX_CAPS, [$hwloc_symbol_prefix_value_caps], - [The hwloc symbol prefix in all caps]) - AC_MSG_RESULT([$hwloc_symbol_prefix_value]) - - # Give an easy #define to know if we need to transform all the - # hwloc names - AH_TEMPLATE([HWLOC_SYM_TRANSFORM], [Whether we need to re-define all the hwloc public symbols or not]) - AS_IF([test "$hwloc_symbol_prefix_value" = "hwloc_"], - [AC_DEFINE([HWLOC_SYM_TRANSFORM], [0])], - [AC_DEFINE([HWLOC_SYM_TRANSFORM], [1])]) - - # GCC specifics. - if test "x$GCC" = "xyes"; 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. - AC_USE_SYSTEM_EXTENSIONS - 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 *]) - - # - # Check OS support - # - AC_MSG_CHECKING([which OS support to include]) - case ${target} in - *-*-linux*) - AC_DEFINE(HWLOC_LINUX_SYS, 1, [Define to 1 on Linux]) - hwloc_linux=yes - AC_MSG_RESULT([Linux]) - ;; - *-*-irix*) - AC_DEFINE(HWLOC_IRIX_SYS, 1, [Define to 1 on Irix]) - hwloc_irix=yes - AC_MSG_RESULT([IRIX]) - ;; - *-*-darwin*) - AC_DEFINE(HWLOC_DARWIN_SYS, 1, [Define to 1 on Darwin]) - hwloc_darwin=yes - AC_MSG_RESULT([Darwin]) - ;; - *-*-solaris*) - AC_DEFINE(HWLOC_SOLARIS_SYS, 1, [Define to 1 on Solaris]) - hwloc_solaris=yes - AC_MSG_RESULT([Solaris]) - ;; - *-*-aix*) - AC_DEFINE(HWLOC_AIX_SYS, 1, [Define to 1 on AIX]) - hwloc_aix=yes - AC_MSG_RESULT([AIX]) - ;; - *-*-osf*) - AC_DEFINE(HWLOC_OSF_SYS, 1, [Define to 1 on OSF]) - hwloc_osf=yes - AC_MSG_RESULT([OSF]) - ;; - *-*-hpux*) - AC_DEFINE(HWLOC_HPUX_SYS, 1, [Define to 1 on HP-UX]) - hwloc_hpux=yes - AC_MSG_RESULT([HP-UX]) - ;; - *-*-mingw*|*-*-cygwin*) - AC_DEFINE(HWLOC_WIN_SYS, 1, [Define to 1 on WINDOWS]) - hwloc_windows=yes - AC_MSG_RESULT([Windows]) - ;; - *-*-*freebsd*) - AC_DEFINE(HWLOC_FREEBSD_SYS, 1, [Define to 1 on *FREEBSD]) - hwloc_freebsd=yes - AC_MSG_RESULT([FreeBSD]) - ;; - *) - 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([*** 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-*-*) - 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 - AC_MSG_RESULT([x86_32]) - ;; - 8) - AC_DEFINE(HWLOC_X86_64_ARCH, 1, [Define to 1 on x86_64]) - hwloc_x86_64=yes - AC_MSG_RESULT([x86_64]) - ;; - *) - AC_DEFINE(HWLOC_X86_64_ARCH, 1, [Define to 1 on x86_64]) - hwloc_x86_64=yes - AC_MSG_RESULT([unknown -- assuming x86_64]) - ;; - esac - esac - - 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])]) - - # - # Check for inline compatibility support - # - AC_MSG_CHECKING([for inline compatibility keyword]) - AC_TRY_COMPILE([static void __inline__ f(void) { }], [], - [__hwloc_inline=__inline__], - [AC_TRY_COMPILE([static void __inline f(void) {}], [], - [__hwloc_inline=__inline], - [__hwloc_inline=] - )] - ) - AC_MSG_RESULT([$__hwloc_inline]) - AC_DEFINE_UNQUOTED(__hwloc_inline, $__hwloc_inline, [Define this to a keyword that can safely replace inline in installed headers]) - - # - # Now detect support - # - - hwloc_strncasecmp=strncmp - AC_CHECK_FUNCS([strncasecmp], [ - _HWLOC_CHECK_DECL([strncasecmp], [ - hwloc_strncasecmp=strncasecmp - ]) - ]) - AC_DEFINE_UNQUOTED(hwloc_strncasecmp, $hwloc_strncasecmp, [Define this to either strncasecmp or strncmp]) - - 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 <stdint.h> header file.]) - ]) - AC_CHECK_HEADERS([sys/mman.h]) - - AC_CHECK_TYPES([KAFFINITY, - PROCESSOR_CACHE_TYPE, - CACHE_DESCRIPTOR, - LOGICAL_PROCESSOR_RELATIONSHIP, - RelationProcessorPackage, - SYSTEM_LOGICAL_PROCESSOR_INFORMATION, - GROUP_AFFINITY, - PROCESSOR_RELATIONSHIP, - NUMA_NODE_RELATIONSHIP, - CACHE_RELATIONSHIP, - PROCESSOR_GROUP_INFO, - GROUP_RELATIONSHIP, - SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, - PSAPI_WORKING_SET_EX_BLOCK, - PSAPI_WORKING_SET_EX_INFORMATION], - [],[],[[#include <windows.h>]]) - AC_CHECK_LIB([gdi32], [main], - [HWLOC_LIBS="-lgdi32 $HWLOC_LIBS" - AC_DEFINE([HAVE_LIBGDI32], 1, [Define to 1 if we have -lgdi32])]) - - AC_CHECK_HEADER([windows.h], [ - AC_DEFINE([HWLOC_HAVE_WINDOWS_H], [1], [Define to 1 if you have the `windows.h' header.]) - ]) - - AC_CHECK_HEADERS([sys/lgrp_user.h], [ - AC_CHECK_LIB([lgrp], [lgrp_latency_cookie], - [HWLOC_LIBS="-llgrp $HWLOC_LIBS" - AC_DEFINE([HAVE_LIBLGRP], 1, [Define to 1 if we have -llgrp])]) - ]) - AC_CHECK_HEADERS([kstat.h], [ - AC_CHECK_LIB([kstat], [main], - [HWLOC_LIBS="-lkstat $HWLOC_LIBS" - AC_DEFINE([HAVE_LIBKSTAT], 1, [Define to 1 if we have -lkstat])]) - ]) - - AC_CHECK_DECLS([_SC_NPROCESSORS_ONLN, - _SC_NPROCESSORS_CONF, - _SC_NPROC_ONLN, - _SC_NPROC_CONF, - _SC_LARGE_PAGESIZE],,[:],[[#include <unistd.h>]]) - - AC_HAVE_HEADERS([mach/mach_host.h]) - AC_HAVE_HEADERS([mach/mach_init.h], [ - AC_CHECK_FUNCS([host_info]) - ]) - - AC_CHECK_HEADERS([sys/param.h]) - AC_CHECK_HEADERS([sys/sysctl.h], [ - AC_CHECK_DECLS([CTL_HW, HW_NCPU],,,[[ - #if HAVE_SYS_PARAM_H - #include <sys/param.h> - #endif - #include <sys/sysctl.h> - ]]) - ],,[ - AC_INCLUDES_DEFAULT - #if HAVE_SYS_PARAM_H - #include <sys/param.h> - #endif - ]) - AC_CHECK_FUNCS([sysctl sysctlbyname]) - - 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 <pthread.h>]]) - ;; - 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 - - _HWLOC_CHECK_DECL([sched_setaffinity], [ - AC_MSG_CHECKING([for old prototype of sched_setaffinity]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - #define _GNU_SOURCE - #include <sched.h> - 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 of sched_setaffinity()]) - AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no])]) - ], , [[ -#define _GNU_SOURCE -#include <sched.h> -]]) - - AC_MSG_CHECKING([for working CPU_SET]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - #include <sched.h> - 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 <sched.h> - 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 _syscall3]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - #include <linux/unistd.h> - #include <errno.h> - #define __NR_hwloc_test 123 - _syscall3(int, hwloc_test, int, param1, int, param2, int, param3); - ]], [[ hwloc_test(1, 2, 3); ]])], - [AC_DEFINE([HWLOC_HAVE__SYSCALL3], [1], [Define to 1 if the _syscall3 macro works]) - AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no])]) - - # Check for kerrighed, but don't abort if not found. It's illegal - # to pass in an empty 3rd argument, but we trust the output of - # pkg-config, so just give it a value that will always work: - # printf. - HWLOC_PKG_CHECK_MODULES([KERRIGHED], [kerrighed >= 2.0], [printf], [], [:]) - - AC_PATH_PROGS([HWLOC_MS_LIB], [lib]) - AC_ARG_VAR([HWLOC_MS_LIB], [Path to Microsoft's Visual Studio `lib' tool]) - - AC_PATH_PROG([BASH], [bash]) - - AC_CHECK_FUNCS([ffs], [ - _HWLOC_CHECK_DECL([ffs],[ - AC_DEFINE([HWLOC_HAVE_DECL_FFS], [1], [Define to 1 if function `ffs' is declared by system headers]) - ]) - AC_DEFINE([HWLOC_HAVE_FFS], [1], [Define to 1 if you have the `ffs' function.]) - ]) - 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.]) - ]) - - 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]) - - # set_mempolicy and mbind support - AC_CHECK_HEADERS([numaif.h], [ - AC_CHECK_LIB([numa], [set_mempolicy], [ - enable_set_mempolicy=yes - AC_SUBST([HWLOC_LINUX_LIBNUMA_LIBS], ["-lnuma"]) - AC_DEFINE([HWLOC_HAVE_SET_MEMPOLICY], [1], [Define to 1 if set_mempolicy is available.]) - ]) - AC_CHECK_LIB([numa], [mbind], [ - enable_mbind=yes - AC_SUBST([HWLOC_LINUX_LIBNUMA_LIBS], ["-lnuma"]) - AC_DEFINE([HWLOC_HAVE_MBIND], [1], [Define to 1 if mbind is available.]) - ]) - AC_CHECK_LIB([numa], [migrate_pages], [ - enable_migrate_pages=yes - AC_SUBST([HWLOC_LINUX_LIBNUMA_LIBS], ["-lnuma"]) - AC_DEFINE([HWLOC_HAVE_MIGRATE_PAGES], [1], [Define to 1 if migrate_pages is available.]) - ]) - ]) - - AC_CHECK_HEADERS([pthread_np.h]) - AC_CHECK_DECLS([pthread_setaffinity_np],,[:],[[ - #include <pthread.h> - #ifdef HAVE_PTHREAD_NP_H - # include <pthread_np.h> - #endif - ]]) - AC_CHECK_DECLS([pthread_getaffinity_np],,[:],[[ - #include <pthread.h> - #ifdef HAVE_PTHREAD_NP_H - # include <pthread_np.h> - #endif - ]]) - AC_CHECK_FUNC([sched_setaffinity], [hwloc_have_sched_setaffinity=yes]) - AC_CHECK_HEADERS([sys/cpuset.h],,,[[#include <sys/param.h>]]) - AC_SEARCH_LIBS([pthread_getthrds_np], [pthread], - AC_DEFINE([HWLOC_HAVE_PTHREAD_GETTHRDS_NP], 1, `Define to 1 if you have pthread_getthrds_np') - ) - - # XML support - hwloc_xml_happy= - if test "x$enable_xml" != "xno"; then - HWLOC_PKG_CHECK_MODULES([XML], [libxml-2.0], [xmlNewDoc], - [hwloc_xml_happy=yes], - [hwloc_xml_happy=no]) - fi - if test "x$hwloc_xml_happy" = "xyes"; then - HWLOC_REQUIRES="libxml-2.0 $HWLOC_REQUIRES" - AC_DEFINE([HWLOC_HAVE_XML], [1], [Define to 1 if you have the `xml' library.]) - AC_SUBST([HWLOC_HAVE_XML], [1]) - else - AC_SUBST([HWLOC_HAVE_XML], [0]) - AS_IF([test "$enable_xml" = "yes"], - [AC_MSG_WARN([--enable-xml requested, but XML support was not found]) - AC_MSG_ERROR([Cannot continue])]) - fi - HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_XML_CFLAGS" - - # Setup HWLOC's C, CPP, and LD flags, and LIBS - AC_SUBST(HWLOC_REQUIRES) - AC_SUBST(HWLOC_CFLAGS) - HWLOC_CPPFLAGS='-I$(HWLOC_top_srcdir)/include -I$(HWLOC_top_builddir)/include' - AC_SUBST(HWLOC_CPPFLAGS) - HWLOC_LDFLAGS='-L$(HWLOC_top_builddir)/src' - AC_SUBST(HWLOC_LDFLAGS) - AC_SUBST(HWLOC_LIBS) - - # 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. - HWLOC_EMBEDDED_CFLAGS=$HWLOC_CFLAGS - AC_SUBST(HWLOC_EMBEDDED_CFLAGS) - HWLOC_EMBEDDED_CPPFLAGS=$HWLOC_CPPFLAGS - AC_SUBST(HWLOC_EMBEDDED_CPPFLAGS) - HWLOC_EMBEDDED_LDADD='$(HWLOC_top_builddir)/src/libhwloc_embedded.la' - AC_SUBST(HWLOC_EMBEDDED_LDADD) - HWLOC_EMBEDDED_LIBS=$HWLOC_LIBS - AC_SUBST(HWLOC_EMBEDDED_LIBS) - - # Try to compile the cpuid inlines - AC_MSG_CHECKING([for cpuid]) - old_CPPFLAGS="$CPPFLAGS" - CFLAGS="$CFLAGS -I$HWLOC_top_srcdir/include" - AC_LINK_IFELSE([AC_LANG_PROGRAM([[ - #include <stdio.h> - #include <private/cpuid.h> - ]], [[ - if (hwloc_have_cpuid()) { - unsigned eax = 0, ebx, ecx = 0, edx; - hwloc_cpuid(&eax, &ebx, &ecx, &edx); - printf("highest cpuid %x\n", eax); - return 0; - } - ]])], - [AC_MSG_RESULT([yes]) - AC_DEFINE(HWLOC_HAVE_CPUID, 1, [Define to 1 if you have cpuid]) - hwloc_have_cpuid=yes], - [AC_MSG_RESULT([no])]) - CPPFLAGS="$old_CPPFLAGS" - - # Always generate these files - AC_CONFIG_FILES( - hwloc_config_prefix[Makefile] - hwloc_config_prefix[include/Makefile] - hwloc_config_prefix[src/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_LINUX_LIBNUMA], - [test "x$hwloc_have_linux_libnuma" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_SCHED_SETAFFINITY], - [test "x$hwloc_have_sched_setaffinity" = "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_MYRIEXPRESS], - [test "x$hwloc_have_myriexpress" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_CUDART], - [test "x$hwloc_have_cudart" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_CAIRO], [test "x$enable_cairo" != "xno"]) - AM_CONDITIONAL([HWLOC_HAVE_XML], [test "$hwloc_xml_happy" = "yes"]) - AM_CONDITIONAL([HWLOC_HAVE_SET_MEMPOLICY], [test "x$enable_set_mempolicy" != "xno"]) - AM_CONDITIONAL([HWLOC_HAVE_MBIND], [test "x$enable_mbind" != "xno"]) - AM_CONDITIONAL([HWLOC_HAVE_BUNZIPP], [test "x$BUNZIPP" != "xfalse"]) - - 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_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_SOLARIS], [test "x$hwloc_solaris" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_AIX], [test "x$hwloc_aix" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_OSF], [test "x$hwloc_osf" = "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_32], [test "x$hwloc_x86_32" = "xyes"]) - AM_CONDITIONAL([HWLOC_HAVE_X86_64], [test "x$hwloc_x86_64" = "xyes"]) - AM_CONDITIONAL([HWLOC_DOXYGEN_BROKEN_SHORT_NAMES], [test "$HWLOC_DOXYGEN_VERSION" = "1.6.2"]) - AM_CONDITIONAL([HWLOC_HAVE_CPUID], [test "x$hwloc_have_cpuid" = "xyes"]) - AM_CONDITIONAL([HWLOC_BUILD_UTILS], [test "$hwloc_build_utils" = "yes"]) - AM_CONDITIONAL([HWLOC_BUILD_TESTS], [test "$hwloc_build_tests" = "yes"]) - ]) - hwloc_did_am_conditionals=yes -])dnl - -#----------------------------------------------------------------------- - -AC_DEFUN([_HWLOC_CHECK_DIFF_U], [ - AC_MSG_CHECKING([whether diff accepts -u]) - if diff -u /dev/null /dev/null 2> /dev/null - then - HWLOC_DIFF_U="-u" - else - HWLOC_DIFF_U="" - fi - AC_SUBST([HWLOC_DIFF_U]) - AC_MSG_RESULT([$HWLOC_DIFF_U]) -]) - -#----------------------------------------------------------------------- - -dnl HWLOC_CHECK_DECL -dnl -dnl Check declaration of given function by trying to call it with an insane -dnl number of arguments (10). Success means the compiler couldn't really check. -AC_DEFUN([_HWLOC_CHECK_DECL], [ - AC_MSG_CHECKING([whether function $1 is declared]) - 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] - ) -]) - -#----------------------------------------------------------------------- - -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]) -]) - diff --git a/hwloc-1.2.1/config/hwloc_check_attributes.m4 b/hwloc-1.2.1/config/hwloc_check_attributes.m4 deleted file mode 100644 index 92dc6aec..00000000 --- a/hwloc-1.2.1/config/hwloc_check_attributes.m4 +++ /dev/null @@ -1,533 +0,0 @@ -# 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. All rights reserved. -# Copyright (c) 2009 Université Bordeaux 1 -# Copyright (c) 2010 Cisco Systems, Inc. All rights reserved. -# See COPYING in top-level directory. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# - Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# - Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer listed -# in this license in the documentation and/or other materials -# provided with the distribution. -# -# - Neither the name of the copyright holders nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# The copyright holders provide no reassurances that the source code -# provided does not infringe any patent, copyright, or any other -# intellectual property rights of third parties. The copyright holders -# disclaim any liability to any recipient for claims brought against -# recipient by any third party for infringement of that parties -# intellectual property rights. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -# -# Search the generated warnings for -# keywords regarding skipping or ignoring certain attributes -# Intel: ignore -# Sun C++: skip -# -AC_DEFUN([_HWLOC_ATTRIBUTE_FAIL_SEARCH],[ - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - m4_ifdef([AC_PROG_GREP], - [AC_REQUIRE([AC_PROG_GREP])], - [GREP=grep]) - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__[$1]=0 - break; - fi - done - fi -]) - -# -# HWLOC: Remove C++ compiler check. It can result in a circular -# dependency in embedded situations. -# -# Check for one specific attribute by compiling with C -# and possibly using a cross-check. -# -# If the cross-check is defined, a static function "usage" should be -# defined, which is to be called from main (to circumvent warnings -# regarding unused function in main file) -# static int usage (int * argument); -# -# The last argument is for specific CFLAGS, that need to be set -# for the compiler to generate a warning on the cross-check. -# This may need adaption for future compilers / CFLAG-settings. -# -AC_DEFUN([_HWLOC_CHECK_SPECIFIC_ATTRIBUTE], [ - AC_MSG_CHECKING([for __attribute__([$1])]) - AC_CACHE_VAL(hwloc_cv___attribute__[$1], [ - # - # Try to compile using the C compiler - # - AC_TRY_COMPILE([$2],[], - [ - # - # In case we did succeed: Fine, but was this due to the - # attribute being ignored/skipped? Grep for IgNoRe/skip in conftest.err - # and if found, reset the hwloc_cv__attribute__var=0 - # - hwloc_cv___attribute__[$1]=1 - _HWLOC_ATTRIBUTE_FAIL_SEARCH([$1]) - ], - [hwloc_cv___attribute__[$1]=0]) - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__[$1]" = "1" -a "[$3]" != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS [$4]" - - AC_TRY_COMPILE([$3], - [ - int i=4711; - i=usage(&i); - ], - [hwloc_cv___attribute__[$1]=0], - [ - # - # In case we did NOT succeed: Fine, but was this due to the - # attribute being ignored? Grep for IgNoRe in conftest.err - # and if found, reset the hwloc_cv__attribute__var=0 - # - hwloc_cv___attribute__[$1]=1 - _HWLOC_ATTRIBUTE_FAIL_SEARCH([$1]) - ]) - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - ]) - - if test "$hwloc_cv___attribute__[$1]" = "1" ; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi -]) - - -# -# Test the availability of __attribute__ and with the help -# of _HWLOC_CHECK_SPECIFIC_ATTRIBUTE for the support of -# particular attributes. Compilers, that do not support an -# attribute most often fail with a warning (when the warning -# level is set). -# The compilers output is parsed in _HWLOC_ATTRIBUTE_FAIL_SEARCH -# -# To add a new attributes __NAME__ add the -# hwloc_cv___attribute__NAME -# add a new check with _HWLOC_CHECK_SPECIFIC_ATTRIBUTE (possibly with a cross-check) -# _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([name], [int foo (int arg) __attribute__ ((__name__));], [], []) -# and define the corresponding -# AC_DEFINE_UNQUOTED(_HWLOC_HAVE_ATTRIBUTE_NAME, [$hwloc_cv___attribute__NAME], -# [Whether your compiler has __attribute__ NAME or not]) -# and decide on a correct macro (in opal/include/opal_config_bottom.h): -# # define __opal_attribute_NAME(x) __attribute__(__NAME__) -# -# Please use the "__"-notation of the attribute in order not to -# clash with predefined names or macros (e.g. const, which some compilers -# do not like..) -# - - -AC_DEFUN([_HWLOC_CHECK_ATTRIBUTES], [ - AC_MSG_CHECKING(for __attribute__) - - AC_CACHE_VAL(hwloc_cv___attribute__, [ - AC_TRY_COMPILE( - [#include <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__));], - [], - []) - - - # - # 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 <unistd.h> -#endif -#ifdef HAVE_STDLIB_H -# include <stdlib.h> -#endif - void fatal(int arg1) __attribute__ ((__noreturn__)); - void fatal(int arg1) { exit(arg1); } - ], - [], - []) - - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([packed], - [ - struct foo { - char a; - int x[2] __attribute__ ((__packed__)); - }; - ], - [], - []) - - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([pure], - [ - int square(int arg) __attribute__ ((__pure__)); - int square(int arg) { return arg * arg; } - ], - [], - []) - - # - # Attribute sentinel: - # Ignored by the intel-9.1.045 -- recognized by cross-check - # intel-10.0beta works fine - # Ignored by PGI-6.2.5 (pgCC) -- recognized by output-parser and cross-check - # Ignored by pathcc-2.2.1 -- recognized by cross-check (through grep ignore) - # - HWLOC_ATTRIBUTE_CFLAGS= - case "$hwloc_c_vendor" in - gnu) - HWLOC_ATTRIBUTE_CFLAGS="-Wall" - ;; - intel) - # we do not want to get ignored attributes warnings - HWLOC_ATTRIBUTE_CFLAGS="-wd1292" - ;; - esac - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([sentinel], - [ - int my_execlp(const char * file, const char *arg, ...) __attribute__ ((__sentinel__)); - ], - [ - static int usage(int * argument); - int my_execlp(const char * file, const char *arg, ...) __attribute__ ((__sentinel__)); - - static int usage(int * argument) { - void * last_arg_should_be_null = argument; - return my_execlp ("lala", "/home/there", last_arg_should_be_null); /* This should produce a warning */ - } - /* The autoconf-generated main-function is int main(), which produces a warning by itself */ - int main(void); - ], - [$HWLOC_ATTRIBUTE_CFLAGS]) - - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([unused], - [ - int square(int arg1 __attribute__ ((__unused__)), int arg2); - int square(int arg1, int arg2) { return arg2; } - ], - [], - []) - - - # - # Attribute warn_unused_result: - # Ignored by the intel-compiler 9.1.045 -- recognized by cross-check - # Ignored by pathcc-2.2.1 -- recognized by cross-check (through grep ignore) - # - HWLOC_ATTRIBUTE_CFLAGS= - case "$hwloc_c_vendor" in - gnu) - HWLOC_ATTRIBUTE_CFLAGS="-Wall" - ;; - intel) - # we do not want to get ignored attributes warnings - HWLOC_ATTRIBUTE_CFLAGS="-wd1292" - ;; - esac - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([warn_unused_result], - [ - int foo(int arg) __attribute__ ((__warn_unused_result__)); - int foo(int arg) { return arg + 3; } - ], - [ - static int usage(int * argument); - int foo(int arg) __attribute__ ((__warn_unused_result__)); - - int foo(int arg) { return arg + 3; } - static int usage(int * argument) { - foo (*argument); /* Should produce an unused result warning */ - return 0; - } - - /* The autoconf-generated main-function is int main(), which produces a warning by itself */ - int main(void); - ], - [$HWLOC_ATTRIBUTE_CFLAGS]) - - - _HWLOC_CHECK_SPECIFIC_ATTRIBUTE([weak_alias], - [ - int foo(int arg); - int foo(int arg) { return arg + 3; } - int foo2(int arg) __attribute__ ((__weak__, __alias__("foo"))); - ], - [], - []) - - fi - - # Now that all the values are set, define them - - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_ALIGNED, [$hwloc_cv___attribute__aligned], - [Whether your compiler has __attribute__ aligned or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_ALWAYS_INLINE, [$hwloc_cv___attribute__always_inline], - [Whether your compiler has __attribute__ always_inline or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_COLD, [$hwloc_cv___attribute__cold], - [Whether your compiler has __attribute__ cold or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_CONST, [$hwloc_cv___attribute__const], - [Whether your compiler has __attribute__ const or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_DEPRECATED, [$hwloc_cv___attribute__deprecated], - [Whether your compiler has __attribute__ deprecated or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_FORMAT, [$hwloc_cv___attribute__format], - [Whether your compiler has __attribute__ format or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_HOT, [$hwloc_cv___attribute__hot], - [Whether your compiler has __attribute__ hot or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_MALLOC, [$hwloc_cv___attribute__malloc], - [Whether your compiler has __attribute__ malloc or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_MAY_ALIAS, [$hwloc_cv___attribute__may_alias], - [Whether your compiler has __attribute__ may_alias or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_NO_INSTRUMENT_FUNCTION, [$hwloc_cv___attribute__no_instrument_function], - [Whether your compiler has __attribute__ no_instrument_function or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_NONNULL, [$hwloc_cv___attribute__nonnull], - [Whether your compiler has __attribute__ nonnull or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_NORETURN, [$hwloc_cv___attribute__noreturn], - [Whether your compiler has __attribute__ noreturn or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_PACKED, [$hwloc_cv___attribute__packed], - [Whether your compiler has __attribute__ packed or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_PURE, [$hwloc_cv___attribute__pure], - [Whether your compiler has __attribute__ pure or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_SENTINEL, [$hwloc_cv___attribute__sentinel], - [Whether your compiler has __attribute__ sentinel or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_UNUSED, [$hwloc_cv___attribute__unused], - [Whether your compiler has __attribute__ unused or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_WARN_UNUSED_RESULT, [$hwloc_cv___attribute__warn_unused_result], - [Whether your compiler has __attribute__ warn unused result or not]) - AC_DEFINE_UNQUOTED(HWLOC_HAVE_ATTRIBUTE_WEAK_ALIAS, [$hwloc_cv___attribute__weak_alias], - [Whether your compiler has __attribute__ weak alias or not]) -]) - diff --git a/hwloc-1.2.1/config/hwloc_check_visibility.m4 b/hwloc-1.2.1/config/hwloc_check_visibility.m4 deleted file mode 100644 index 151c0f8f..00000000 --- a/hwloc-1.2.1/config/hwloc_check_visibility.m4 +++ /dev/null @@ -1,122 +0,0 @@ -# This macro set originally copied from Open MPI: -# Copyright (c) 2004-2005 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. -# Copyright (c) 2006-2007 Cisco Systems, Inc. All rights reserved. -# and renamed for hwloc: -# Copyright (c) 2009 INRIA. All rights reserved. -# Copyright (c) 2009-2010 Université Bordeaux 1 -# Copyright (c) 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. -# - -# _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]) - - msg="whether to enable visibility" - # Check if the compiler has support for visibility, like some - # versions of gcc, icc. - AC_ARG_ENABLE(visibility, - AC_HELP_STRING([--enable-visibility], - [enable visibility feature of certain compilers/linkers (default: enabled)])) - - case ${target} in - *-*-aix*|*-*-mingw*|*-*-cygwin*|*-*-hpux*) - enable_visibility=no - ;; - esac - - if test "$enable_visibility" = "no"; then - AC_MSG_CHECKING([$msg]) - AC_MSG_RESULT([no (disabled)]) - have_visibility=0 - else - CFLAGS_orig="$CFLAGS" - CFLAGS="$CFLAGS_orig -fvisibility=hidden" - hwloc_add= - AC_CACHE_CHECK([if $CC supports -fvisibility], - [hwloc_cv_cc_fvisibility], - [AC_LINK_IFELSE([AC_LANG_PROGRAM([[ - __attribute__((visibility("default"))) int foo; - ]],[[int i;]])], - [hwloc_cv_cc_fvisibility=yes], - [if test -s conftest.err ; then - $GREP -iq "visibility" conftest.err - if test "$?" = "0" ; then - hwloc_cv_cc_fvisibility=no - else - hwloc_cv_cc_fvisibility=yes - fi - else - hwloc_cv_cc_fvisibility=yes - fi], - [hwloc_cv_cc_fvisibility=no]) - ]) - - if test "$hwloc_cv_cc_fvisibility" = "yes" ; then - hwloc_add=" -fvisibility=hidden" - have_visibility=1 - AC_MSG_CHECKING([$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([$msg]) - AC_MSG_RESULT([no (unsupported)]) - have_visibility=0 - fi - CFLAGS=$CFLAGS_orig - HWLOC_VISIBILITY_CFLAGS=$hwloc_add - unset hwloc_add - fi - - AC_DEFINE_UNQUOTED([HWLOC_C_HAVE_VISIBILITY], [$have_visibility], - [Whether C compiler supports -fvisibility]) -]) diff --git a/hwloc-1.2.1/config/hwloc_get_version.sh b/hwloc-1.2.1/config/hwloc_get_version.sh deleted file mode 100755 index bff4b63d..00000000 --- a/hwloc-1.2.1/config/hwloc_get_version.sh +++ /dev/null @@ -1,173 +0,0 @@ -#!/bin/sh -# -# hwloc_get_version is created from hwloc_get_version.m4 and hwloc_get_version.m4sh. -# -# Copyright (c) 2004-2006 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-2005 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. -# Copyright © 2008-2010 Cisco Systems, Inc. All rights reserved. -# $COPYRIGHT$ -# -# Additional copyrights may follow -# -# $HEADER$ -# - -# 11 September 2009: this file was copied from PLPA's SVN trunk as of -# r251 on 11 September 2009. The only change made to it was -# s/PLPA/hwloc/ig. - - -# HWLOC_GET_VERSION(version_file, variable_prefix) -# ----------------------------------------------- -# parse version_file for version information, setting -# the following shell variables: -# -# prefix_VERSION -# prefix_BASE_VERSION -# prefix_MAJOR_VERSION -# prefix_MINOR_VERSION -# prefix_RELEASE_VERSION -# prefix_GREEK_VERSION -# prefix_WANT_REPO_REV -# prefix_REPO_REV -# prefix_RELEASE_DATE - - - -srcfile="$1" -option="$2" - -case "$option" in - # svnversion can take a while to run. If we don't need it, don't run it. - --major|--minor|--release|--greek|--base|--help) - ompi_ver_need_repo_rev=0 - ;; - *) - ompi_ver_need_repo_rev=1 -esac - - -if test -z "$srcfile"; then - option="--help" -else - - : ${ompi_ver_need_repo_rev=1} - : ${srcdir=.} - : ${svnversion_result=-1} - - 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/^want_repo_rev/HWLOC_WANT_REPO_REV/ - s/^repo_rev/HWLOC_REPO_REV/ - s/^date/HWLOC_RELEASE_DATE/ - t print - b - : print - p" < "$srcfile"` - eval "$ompi_vers" - - # Only print release version if it isn't 0 - if test $HWLOC_RELEASE_VERSION -ne 0 ; then - HWLOC_VERSION="$HWLOC_MAJOR_VERSION.$HWLOC_MINOR_VERSION.$HWLOC_RELEASE_VERSION" - else - HWLOC_VERSION="$HWLOC_MAJOR_VERSION.$HWLOC_MINOR_VERSION" - fi - HWLOC_VERSION="${HWLOC_VERSION}${HWLOC_GREEK_VERSION}" - HWLOC_BASE_VERSION=$HWLOC_VERSION - - if test $HWLOC_WANT_REPO_REV -eq 1 && test $ompi_ver_need_repo_rev -eq 1 ; then - if test "$svnversion_result" != "-1" ; then - HWLOC_REPO_REV=$svnversion_result - fi - if test "$HWLOC_REPO_REV" = "-1" ; then - - if test -d "$srcdir/.svn" ; then - HWLOC_REPO_REV=r`svnversion "$srcdir"` - elif test -d "$srcdir/.hg" ; then - HWLOC_REPO_REV=hg`hg -v -R "$srcdir" tip | grep changeset | cut -d: -f3` - elif test -d "$srcdir/.git" ; then - HWLOC_REPO_REV=git`git log -1 "$srcdir" | grep commit | awk '{ print $2 }'` - fi - if test "HWLOC_REPO_REV" = ""; then - HWLOC_REPO_REV=date`date '+%m%d%Y'` - fi - - fi - HWLOC_VERSION="${HWLOC_VERSION}${HWLOC_REPO_REV}" - fi - fi - - - if test "$option" = ""; then - option="--full" - fi -fi - -case "$option" in - --full|-v|--version) - echo $HWLOC_VERSION - ;; - --major) - echo $HWLOC_MAJOR_VERSION - ;; - --minor) - echo $HWLOC_MINOR_VERSION - ;; - --release) - echo $HWLOC_RELEASE_VERSION - ;; - --greek) - echo $HWLOC_GREEK_VERSION - ;; - --repo-rev) - echo $HWLOC_REPO_REV - ;; - --base) - echo $HWLOC_BASE_VERSION - ;; - --release-date) - echo $HWLOC_RELEASE_DATE - ;; - --all) - echo ${HWLOC_VERSION} ${HWLOC_MAJOR_VERSION} ${HWLOC_MINOR_VERSION} ${HWLOC_RELEASE_VERSION} ${HWLOC_GREEK_VERSION} ${HWLOC_REPO_REV} - ;; - -h|--help) - cat <<EOF -$0 <srcfile> <option> - -<srcfile> - Text version file -<option> - One of: - --full - Full version number - --major - Major version number - --minor - Minor version number - --release - Release version number - --greek - Greek (alpha, beta, etc) version number - --repo-rev - Repository version number - --all - Show all version numbers, separated by : - --base - Show base version number (no repo version number) - --release-date - Show the release date - --help - This message -EOF - ;; - *) - echo "Unrecognized option $option. Run $0 --help for options" - ;; -esac - -# All done - -exit 0 diff --git a/hwloc-1.2.1/config/hwloc_internal.m4 b/hwloc-1.2.1/config/hwloc_internal.m4 deleted file mode 100644 index 64a5322b..00000000 --- a/hwloc-1.2.1/config/hwloc_internal.m4 +++ /dev/null @@ -1,408 +0,0 @@ -dnl -*- Autoconf -*- -dnl -dnl Copyright (c) 2009 INRIA. All rights reserved. -dnl Copyright (c) 2009, 2011 Université Bordeaux 1 -dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana -dnl University Research and Technology -dnl Corporation. All rights reserved. -dnl Copyright (c) 2004-2005 The Regents of the University of California. -dnl All rights reserved. -dnl Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, -dnl University of Stuttgart. All rights reserved. -dnl Copyright © 2010 INRIA. All rights reserved. -dnl Copyright © 2006-2011 Cisco Systems, Inc. All rights reserved. -dnl -dnl See COPYING in top-level directory. - -#----------------------------------------------------------------------- - -# Probably only ever invoked by hwloc's configure.ac -AC_DEFUN([HWLOC_BUILD_STANDALONE],[ - hwloc_mode=standalone -])dnl - -#----------------------------------------------------------------------- - -# Probably only ever invoked by hwloc's configure.ac -AC_DEFUN([HWLOC_DEFINE_ARGS],[ - # Embedded mode, or standalone? - AC_ARG_ENABLE([embedded-mode], - AC_HELP_STRING([--enable-embedded-mode], - [Using --enable-embedded-mode puts the HWLOC into "embedded" mode. The default is --disable-embedded-mode, meaning that the HWLOC is in "standalone" mode.])) - - # Change the symbol prefix? - AC_ARG_WITH([hwloc-symbol-prefix], - AC_HELP_STRING([--with-hwloc-symbol-prefix=STRING], - [STRING can be any valid C symbol name. It will be prefixed to all public HWLOC symbols. Default: "hwloc_"])) - - # Debug mode? - AC_ARG_ENABLE([debug], - AC_HELP_STRING([--enable-debug], - [Using --enable-debug enables various hwloc maintainer-level debugging controls. This option is not recomended for end users.])) - - # Doxygen? - AC_ARG_ENABLE([doxygen], - [AC_HELP_STRING([--enable-doxygen], - [enable support for building Doxygen documentation (note that this option is ONLY relevant in developer builds; Doxygen documentation is pre-built for tarball builds and this option is therefore ignored)])]) - - # Picky? - AC_ARG_ENABLE(picky, - AC_HELP_STRING([--disable-picky], - [When in developer checkouts of hwloc and compiling with gcc, the default is to enable maximum compiler pickyness. Using --disable-picky or --enable-picky overrides any default setting])) - - # Cairo? - AC_ARG_ENABLE([cairo], - AS_HELP_STRING([--disable-cairo], - [Disable the Cairo back-end of hwloc's lstopo command])) - - # XML? - AC_ARG_ENABLE([xml], - AS_HELP_STRING([--disable-xml], - [Disable the XML back-end of hwloc's lstopo command])) -])dnl - -#----------------------------------------------------------------------- - -dnl We only build documentation if this is a developer checkout. -dnl Distribution tarballs just install pre-built docuemntation that was -dnl included in the tarball. - -# Probably only ever invoked by hwloc's configure.ac -AC_DEFUN([HWLOC_SETUP_DOCS],[ - cat <<EOF - -### -### Configuring hwloc documentation -### -EOF - - AC_MSG_CHECKING([if this is a developer build]) - AS_IF([test ! -d "$srcdir/.svn" -a ! -d "$srcdir/.hg" -a ! -d "$srcdir/.git"], - [AC_MSG_RESULT([no (doxygen generation is optional)])], - [AC_MSG_RESULT([yes])]) - - # Generating the doxygen output requires a few tools. If we - # don't have all of them, refuse the build the docs. - AC_ARG_VAR([DOXYGEN], [Location of the doxygen program (required for building the hwloc doxygen documentation)]) - AC_PATH_TOOL([DOXYGEN], [doxygen]) - HWLOC_DOXYGEN_VERSION=`doxygen --version 2> /dev/null` - - AC_ARG_VAR([PDFLATEX], [Location of the pdflatex program (required for building the hwloc doxygen documentation)]) - AC_PATH_TOOL([PDFLATEX], [pdflatex]) - - AC_ARG_VAR([MAKEINDEX], [Location of the makeindex program (required for building the hwloc doxygen documentation)]) - AC_PATH_TOOL([MAKEINDEX], [makeindex]) - - AC_ARG_VAR([FIG2DEV], [Location of the fig2dev program (required for building the hwloc doxygen documentation)]) - AC_PATH_TOOL([FIG2DEV], [fig2dev]) - - AC_ARG_VAR([GS], [Location of the gs program (required for building the hwloc doxygen documentation)]) - AC_PATH_TOOL([GS], [gs]) - - AC_ARG_VAR([EPSTOPDF], [Location of the epstopdf program (required for building the hwloc doxygen documentation)]) - AC_PATH_TOOL([EPSTOPDF], [epstopdf]) - - AC_MSG_CHECKING([if can build doxygen docs]) - AS_IF([test "x$DOXYGEN" != "x" -a "x$PDFLATEX" != "x" -a "x$MAKEINDEX" != "x" -a "x$FIG2DEV" != "x" -a "x$GS" != "x" -a "x$EPSTOPDF" != "x"], - [hwloc_generate_doxs=yes], [hwloc_generate_doxs=no]) - AC_MSG_RESULT([$hwloc_generate_doxs]) - - # Linux and OS X take different sed arguments. - AC_PROG_SED - AC_MSG_CHECKING([if the sed -i option requires an argument]) - rm -f conftest - cat > conftest <<EOF -hello -EOF - $SED -i -e s/hello/goodbye/ conftest 2> /dev/null - AS_IF([test -f conftest-e], - [SED_I="$SED -i ''" - AC_MSG_RESULT([yes])], - [SED_I="$SED -i" - AC_MSG_RESULT([no])]) - rm -f conftest conftest-e - AC_SUBST([SED_I]) - - # Making the top-level README requires w3m or lynx. - AC_ARG_VAR([W3M], [Location of the w3m program (required to building the top-level hwloc README file)]) - AC_PATH_TOOL([W3M], [w3m]) - AC_ARG_VAR([LYNX], [Location of the lynx program (required to building the top-level hwloc README file)]) - AC_PATH_TOOL([LYNX], [lynx]) - - AC_MSG_CHECKING([if can build top-level README]) - AS_IF([test "x$W3M" != "x"], - [hwloc_generate_readme=yes - HWLOC_W3_GENERATOR=$W3M], - [AS_IF([test "x$LYNX" != "x"], - [hwloc_generate_readme=yes - HWLOC_W3_GENERATOR="$LYNX -dump -nolist"], - [hwloc_generate_readme=no])]) - AC_SUBST(HWLOC_W3_GENERATOR) - AC_MSG_RESULT([$hwloc_generate_readme]) - - # If any one of the above tools is missing, we will refuse to make dist. - AC_MSG_CHECKING([if will build doxygen docs]) - AS_IF([test "x$hwloc_generate_doxs" = "xyes" -a "x$enable_doxygen" != "xno"], - [], [hwloc_generate_doxs=no]) - AC_MSG_RESULT([$hwloc_generate_doxs]) - - # See if we want to install the doxygen docs - AC_MSG_CHECKING([if will install doxygen docs]) - AS_IF([test "x$hwloc_generate_doxs" = "xyes" -o \ - -f "$srcdir/doc/doxygen-doc/man/man3/hwloc_distribute.3" -a \ - -f "$srcdir/doc/doxygen-doc/hwloc-a4.pdf" -a \ - -f "$srcdir/doc/doxygen-doc/hwloc-letter.pdf"], - [hwloc_install_doxs=yes], - [hwloc_install_doxs=no]) - AC_MSG_RESULT([$hwloc_install_doxs]) - - # 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 "$GCC" = "yes"], - [AS_IF([test -d "$srcdir/.svn" -o -d "$srcdir/.hg" -o -d "$srcdir/.git"], - [hwloc_want_picky=1])]) - if test "$enable_picky" = "yes"; then - if test "$GCC" = "yes"; 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 -Wunused-parameter -Wundef -Wno-long-long -Wsign-compare" - add="$add -Wmissing-prototypes -Wstrict-prototypes" - add="$add -Wcomment -pedantic" - - CFLAGS="$CFLAGS $add" - fi - - # Generate some files for the docs - AC_CONFIG_FILES( - hwloc_config_prefix[doc/Makefile] - hwloc_config_prefix[doc/doxygen-config.cfg]) -]) - -#----------------------------------------------------------------------- - -# Probably only ever invoked by hwloc's configure.ac -AC_DEFUN([HWLOC_SETUP_UTILS],[ - cat <<EOF - -### -### Configuring hwloc command line utilities -### -EOF - - hwloc_build_utils=yes - - # Cairo support - hwloc_cairo_happy= - if test "x$enable_cairo" != "xno"; then - HWLOC_PKG_CHECK_MODULES([CAIRO], [cairo], [cairo_fill], - [hwloc_cairo_happy=yes], - [hwloc_cairo_happy=no]) - if test "x$hwloc_cairo_happy" = "xyes"; then - AC_PATH_XTRA - CFLAGS_save=$CFLAGS - LIBS_save=$LIBS - - CFLAGS="$CFLAGS $X_CFLAGS" - LIBS="$LIBS $X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS" - AC_CHECK_HEADERS([X11/Xlib.h], [ - AC_CHECK_HEADERS([X11/Xutil.h X11/keysym.h], [ - AC_CHECK_LIB([X11], [XOpenDisplay], [ - enable_X11=yes - AC_SUBST([HWLOC_X11_LIBS], ["-lX11"]) - AC_DEFINE([HWLOC_HAVE_X11], [1], [Define to 1 if X11 libraries are available.]) - ])] - )],, - [[#include <X11/Xlib.h>]] - ) - if test "x$enable_X11" != "xyes"; then - AC_MSG_WARN([X11 headers not found, Cairo/X11 back-end disabled]) - hwloc_cairo_happy=no - fi - - CFLAGS=$CFLAGS_save - LIBS=$LIBS_save - fi - fi - - if test "x$hwloc_cairo_happy" = "xyes"; then - AC_DEFINE([HWLOC_HAVE_CAIRO], [1], [Define to 1 if you have the `cairo' library.]) - else - AS_IF([test "$enable_cairo" = "yes"], - [AC_MSG_WARN([--enable-cairo requested, but Cairo/X11 support was not found]) - AC_MSG_ERROR([Cannot continue])]) - fi - - AC_CHECK_TYPES([wchar_t], [ - AC_CHECK_FUNCS([putwc]) - ], [], [[#include <wchar.h>]]) - - AC_CHECK_HEADERS([locale.h], [ - AC_CHECK_FUNCS([setlocale]) - ]) - AC_CHECK_HEADERS([langinfo.h], [ - AC_CHECK_FUNCS([nl_langinfo]) - ]) - hwloc_old_LIBS="$LIBS" - chosen_curses="" - for curses in ncurses curses - do - for lib in "" -ltermcap -l${curses}w -l$curses - do - AC_MSG_CHECKING(termcap support using $curses and $lib) - LIBS="$hwloc_old_LIBS $lib" - AC_LINK_IFELSE([AC_LANG_PROGRAM([[ -#include <$curses.h> -#include <term.h> -]], [[tparm(NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0)]])], [ - AC_MSG_RESULT(yes) - AC_SUBST([HWLOC_TERMCAP_LIBS], ["$LIBS"]) - AC_DEFINE([HWLOC_HAVE_LIBTERMCAP], [1], - [Define to 1 if you have a library providing the termcap interface]) - chosen_curses=$curses - ], [ - AC_MSG_RESULT(no) - ]) - test "x$chosen_curses" != "x" && break - done - test "x$chosen_curses" != "x" && break - done - if test "$chosen_curses" = ncurses - then - AC_DEFINE([HWLOC_USE_NCURSES], [1], [Define to 1 if ncurses works, preferred over curses]) - fi - LIBS="$hwloc_old_LIBS" - unset hwloc_old_LIBS - - _HWLOC_CHECK_DIFF_U - - # Only generate this if we're building the utilities - AC_CONFIG_FILES( - hwloc_config_prefix[utils/Makefile] - hwloc_config_prefix[hwloc.pc]) -])dnl - -#----------------------------------------------------------------------- - -# Probably only ever invoked by hwloc's configure.ac -AC_DEFUN([HWLOC_SETUP_TESTS],[ - cat <<EOF - -### -### Configuring hwloc tests -### -EOF - - hwloc_build_tests=yes - - # linux-libnuma.h testing requires libnuma with numa_bitmask_alloc() - AC_CHECK_DECL([numa_bitmask_alloc], [hwloc_have_linux_libnuma=yes], [], - [#include <numa.h>]) - - AC_CHECK_HEADERS([infiniband/verbs.h], [ - AC_CHECK_LIB([ibverbs], [ibv_open_device], - [AC_DEFINE([HAVE_LIBIBVERBS], 1, [Define to 1 if we have -libverbs]) - hwloc_have_libibverbs=yes]) - ]) - - AC_CHECK_HEADERS([myriexpress.h], [ - AC_MSG_CHECKING(if MX_NUMA_NODE exists) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <myriexpress.h>]], - [[int a = MX_NUMA_NODE;]], - [AC_MSG_RESULT(yes) - AC_CHECK_LIB([myriexpress], [mx_get_info], - [AC_DEFINE([HAVE_MYRIEXPRESS], 1, [Define to 1 if we have -lmyriexpress]) - hwloc_have_myriexpress=yes])], - [AC_MSG_RESULT(no)])])]) - - AC_CHECK_HEADERS([cuda.h], [ - AC_MSG_CHECKING(if CUDA_VERSION >= 3020) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ -#include <cuda.h> -#ifndef CUDA_VERSION -#error CUDA_VERSION undefined -#elif CUDA_VERSION < 3020 -#error CUDA_VERSION too old -#endif]], [[int i = 3;]])], - [AC_MSG_RESULT(yes) - AC_CHECK_LIB([cuda], [cuInit], - [AC_DEFINE([HAVE_CUDA], 1, [Define to 1 if we have -lcuda]) - hwloc_have_cuda=yes])], - [AC_MSG_RESULT(no)])]) - - AC_CHECK_HEADERS([cuda_runtime_api.h], [ - AC_MSG_CHECKING(if CUDART_VERSION >= 3020) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ -#include <cuda_runtime_api.h> -#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], [cudaGetDeviceCount], - [AC_DEFINE([HAVE_CUDART], 1, [Define to 1 if we have -lcudart]) - hwloc_have_cudart=yes])], - [AC_MSG_RESULT(no)])]) - - if test "x$enable_xml" != "xno"; then - AC_CHECK_PROGS(XMLLINT, [xmllint]) - fi - - AC_CHECK_PROGS(BUNZIPP, bunzip2, false) - - _HWLOC_CHECK_DIFF_U - - # Only generate these files if we're making the tests - AC_CONFIG_FILES( - hwloc_config_prefix[tests/Makefile] - hwloc_config_prefix[tests/linux/Makefile] - hwloc_config_prefix[tests/linux/gather/Makefile] - hwloc_config_prefix[tests/xml/Makefile] - hwloc_config_prefix[tests/ports/Makefile] - hwloc_config_prefix[tests/linux/hwloc-gather-topology] - hwloc_config_prefix[tests/linux/gather/test-gather-topology.sh] - hwloc_config_prefix[tests/linux/test-topology.sh] - hwloc_config_prefix[tests/xml/test-topology.sh] - hwloc_config_prefix[utils/test-hwloc-calc.sh] - hwloc_config_prefix[utils/test-hwloc-distrib.sh]) - - AC_CONFIG_COMMANDS([chmoding-scripts], [chmod +x ]hwloc_config_prefix[tests/linux/test-topology.sh ]hwloc_config_prefix[tests/xml/test-topology.sh ]hwloc_config_prefix[tests/linux/hwloc-gather-topology ]hwloc_config_prefix[tests/linux/gather/test-gather-topology.sh ]hwloc_config_prefix[utils/test-hwloc-calc.sh ]hwloc_config_prefix[utils/test-hwloc-distrib.sh]) - - # These links are only needed in standalone mode. It would - # be nice to m4 foreach this somehow, but whenever I tried - # it, I got obscure "invalid tag" errors from - # AC_CONFIG_LINKS. :-\ Since these tests are only run when - # built in standalone mode, only generate them in - # standalone mode. - AC_CONFIG_LINKS( - hwloc_config_prefix[tests/ports/topology.c]:hwloc_config_prefix[src/topology.c] - hwloc_config_prefix[tests/ports/traversal.c]:hwloc_config_prefix[src/traversal.c] - hwloc_config_prefix[tests/ports/topology-synthetic.c]:hwloc_config_prefix[src/topology-synthetic.c] - hwloc_config_prefix[tests/ports/topology-solaris.c]:hwloc_config_prefix[src/topology-solaris.c] - hwloc_config_prefix[tests/ports/topology-aix.c]:hwloc_config_prefix[src/topology-aix.c] - hwloc_config_prefix[tests/ports/topology-osf.c]:hwloc_config_prefix[src/topology-osf.c] - hwloc_config_prefix[tests/ports/topology-windows.c]:hwloc_config_prefix[src/topology-windows.c] - hwloc_config_prefix[tests/ports/topology-darwin.c]:hwloc_config_prefix[src/topology-darwin.c] - hwloc_config_prefix[tests/ports/topology-freebsd.c]:hwloc_config_prefix[src/topology-freebsd.c] - hwloc_config_prefix[tests/ports/topology-hpux.c]:hwloc_config_prefix[src/topology-hpux.c]) - ]) -])dnl diff --git a/hwloc-1.2.1/config/hwloc_pkg.m4 b/hwloc-1.2.1/config/hwloc_pkg.m4 deleted file mode 100644 index 9f040bd1..00000000 --- a/hwloc-1.2.1/config/hwloc_pkg.m4 +++ /dev/null @@ -1,187 +0,0 @@ -# Copyright (c) 2010 Cisco Systems, Inc. All rights reserved. -# See COPYING in top-level directory. -# -# hwloc modification to the following PKG_* macros -- add HWLOC_ -# prefix to make it "safe" to embed these macros in other packages. -# Originally copied from the pkg-config package; see copyright and -# license below. - -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# -# Copyright © 2004 Scott James Remnant <scott@netsplit.com>. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# HWLOC_PKG_PROG_PKG_CONFIG([MIN-VERSION]) -# ---------------------------------- -AC_DEFUN([HWLOC_PKG_PROG_PKG_CONFIG], -[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) -m4_pattern_allow([^HWLOC_PKG_CONFIG(_PATH)?$]) -AC_ARG_VAR([HWLOC_PKG_CONFIG], [path to pkg-config utility])dnl -if test "x$ac_cv_env_HWLOC_PKG_CONFIG_set" != "xset"; then - AC_PATH_TOOL([HWLOC_PKG_CONFIG], [pkg-config]) -fi -if test -n "$HWLOC_PKG_CONFIG"; then - HWLOC_pkg_min_version=m4_default([$1], [0.9.0]) - AC_MSG_CHECKING([pkg-config is at least version $HWLOC_pkg_min_version]) - if $HWLOC_PKG_CONFIG --atleast-pkgconfig-version $HWLOC_pkg_min_version; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - HWLOC_PKG_CONFIG="" - fi - -fi[]dnl -])# HWLOC_PKG_PROG_PKG_CONFIG - -# HWLOC_PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# -# Check to see whether a particular set of modules exists. Similar -# to HWLOC_PKG_CHECK_MODULES(), but does not set variables or print errors. -# -# -# Similar to HWLOC_PKG_CHECK_MODULES, make sure that the first instance of -# this or HWLOC_PKG_CHECK_MODULES is called, or make sure to call -# HWLOC_PKG_CHECK_EXISTS manually -# -------------------------------------------------------------- -AC_DEFUN([HWLOC_PKG_CHECK_EXISTS], -[AC_REQUIRE([HWLOC_PKG_PROG_PKG_CONFIG])dnl -if test -n "$HWLOC_PKG_CONFIG" && \ - AC_RUN_LOG([$HWLOC_PKG_CONFIG --exists --silence-errors "$1"]); then - m4_ifval([$2], [$2], [:]) - m4_ifvaln([$3], [else - $3])dnl -fi]) - - -# _HWLOC_PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) -# --------------------------------------------- -m4_define([_HWLOC_PKG_CONFIG], -[if test -n "$HWLOC_PKG_CONFIG"; then - if test -n "$$1"; then - HWLOC_pkg_cv_[]$1="$$1" - else - HWLOC_PKG_CHECK_EXISTS([$3], - [HWLOC_pkg_cv_[]$1=`$HWLOC_PKG_CONFIG --[]$2 "$3" 2>/dev/null`], - [HWLOC_pkg_failed=yes]) - fi -else - HWLOC_pkg_failed=untried -fi[] -])# _HWLOC_PKG_CONFIG - -# _HWLOC_PKG_SHORT_ERRORS_SUPPORTED -# ----------------------------- -AC_DEFUN([_HWLOC_PKG_SHORT_ERRORS_SUPPORTED], -[AC_REQUIRE([HWLOC_PKG_PROG_PKG_CONFIG]) -if $HWLOC_PKG_CONFIG --atleast-pkgconfig-version 0.20; then - HWLOC_pkg_short_errors_supported=yes -else - HWLOC_pkg_short_errors_supported=no -fi[]dnl -])# _HWLOC_PKG_SHORT_ERRORS_SUPPORTED - - -# HWLOC_PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -# [ACTION-IF-NOT-FOUND]) -# -# -# Note that if there is a possibility the first call to -# HWLOC_PKG_CHECK_MODULES might not happen, you should be sure to include an -# explicit call to HWLOC_PKG_PROG_PKG_CONFIG in your configure.ac -# -# -# -------------------------------------------------------------- -AC_DEFUN([HWLOC_PKG_CHECK_MODULES],[ - AC_REQUIRE([HWLOC_PKG_PROG_PKG_CONFIG])dnl - AC_ARG_VAR([HWLOC_]$1[_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl - AC_ARG_VAR([HWLOC_]$1[_LIBS], [linker flags for $1, overriding pkg-config])dnl - - HWLOC_pkg_failed=no - AC_MSG_CHECKING([for $1]) - - _HWLOC_PKG_CONFIG([HWLOC_][$1][_CFLAGS], [cflags], [$2]) - _HWLOC_PKG_CONFIG([HWLOC_][$1][_LIBS], [libs], [$2]) - - m4_define([_HWLOC_PKG_TEXT], [Alternatively, you may set the environment variables HWLOC_[]$1[]_CFLAGS -and HWLOC_[]$1[]_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details.]) - - # Check for failure of pkg-config - if test $HWLOC_pkg_failed = yes; then - _HWLOC_PKG_SHORT_ERRORS_SUPPORTED - if test $HWLOC_pkg_short_errors_supported = yes; then - HWLOC_[]$1[]_PKG_ERRORS=`$HWLOC_PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2" 2>&1` - else - HWLOC_[]$1[]_PKG_ERRORS=`$HWLOC_PKG_CONFIG --errors-to-stdout --print-errors "$2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$HWLOC_[]$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD - - ifelse([$5], , [AC_MSG_ERROR(dnl -[Package requirements ($2) were not met: - -$HWLOCC_$1_PKG_ERRORS - -Consider adjusting the HWLOC_PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -_HWLOC_PKG_TEXT -])], - [AC_MSG_RESULT([no]) - $5]) - elif test $HWLOC_pkg_failed = untried; then - ifelse([$5], , [AC_MSG_FAILURE(dnl -[The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the HWLOC_PKG_CONFIG environment variable to the full -path to pkg-config. - -_HWLOC_PKG_TEXT - -To get pkg-config, see <http://pkg-config.freedesktop.org/>.])], - [$5]) - else - AC_MSG_RESULT([yes]) - - # If we got good results from pkg-config, check that they - # actually work (i.e., that we can link against the resulting - # $LIBS). The canonical example why we do this is if - # pkg-config returns 64 bit libraries but ./configure was run - # with CFLAGS=-m32 LDFLAGS=-m32. pkg-config gave us valid - # results, but we'll fail if we try to link. So detect that - # failure now. - hwloc_cflags_save=$CFLAGS - hwloc_libs_save=$LIBS - CFLAGS="$CFLAGS $HWLOC_pkg_cv_HWLOC_[]$1[]_CFLAGS" - LIBS="$LIBS $HWLOC_pkg_cv_HWLOC_[]$1[]_LIBS" - AC_CHECK_FUNC([$3], [hwloc_result=yes], [hwloc_result=no]) - CFLAGS=$hwloc_cflags_save - LIBS=$hwloc_libs_save - - AC_MSG_CHECKING([for final $1 support]) - AS_IF([test "$hwloc_result" = "yes"], - [HWLOC_[]$1[]_CFLAGS=$HWLOC_pkg_cv_HWLOC_[]$1[]_CFLAGS - HWLOC_[]$1[]_LIBS=$HWLOC_pkg_cv_HWLOC_[]$1[]_LIBS - AC_MSG_RESULT([yes]) - ifelse([$4], , :, [$4])], - [AC_MSG_RESULT([no]) - ifelse([$5], , :, [$5])]) - fi[]dnl -])# HWLOC_PKG_CHECK_MODULES diff --git a/hwloc-1.2.1/config/install-sh b/hwloc-1.2.1/config/install-sh deleted file mode 100755 index 6781b987..00000000 --- a/hwloc-1.2.1/config/install-sh +++ /dev/null @@ -1,520 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2009-04-28.21; # UTC - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. - -nl=' -' -IFS=" "" $nl" - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi - -# Put in absolute file names if you don't have them in your path; -# or use environment vars. - -chgrpprog=${CHGRPPROG-chgrp} -chmodprog=${CHMODPROG-chmod} -chownprog=${CHOWNPROG-chown} -cmpprog=${CMPPROG-cmp} -cpprog=${CPPROG-cp} -mkdirprog=${MKDIRPROG-mkdir} -mvprog=${MVPROG-mv} -rmprog=${RMPROG-rm} -stripprog=${STRIPPROG-strip} - -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chgrpcmd= -chmodcmd=$chmodprog -chowncmd= -mvcmd=$mvprog -rmcmd="$rmprog -f" -stripcmd= - -src= -dst= -dir_arg= -dst_arg= - -copy_on_change=false -no_target_directory= - -usage="\ -Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: - --help display this help and exit. - --version display version info and exit. - - -c (ignored) - -C install only if different (preserve the last data modification time) - -d create directories instead of installing files. - -g GROUP $chgrpprog installed files to GROUP. - -m MODE $chmodprog installed files to MODE. - -o USER $chownprog installed files to USER. - -s $stripprog installed files. - -t DIRECTORY install into DIRECTORY. - -T report an error if DSTFILE is a directory. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG - RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) ;; - - -C) copy_on_change=true;; - - -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" - shift;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; - - -o) chowncmd="$chownprog $2" - shift;; - - -s) stripcmd=$stripprog;; - - -t) dst_arg=$2 - shift;; - - -T) no_target_directory=true;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac - shift -done - -if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then - # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dst_arg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dst_arg" - shift # fnord - fi - shift # arg - dst_arg=$arg - done -fi - -if test $# -eq 0; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call `install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -if test -z "$dir_arg"; then - trap '(exit $?); exit' 1 2 13 15 - - # Set umask so as not to create temps with too-generous modes. - # However, 'strip' requires both read and write access to temps. - case $mode in - # Optimize common cases. - *644) cp_umask=133;; - *755) cp_umask=22;; - - *[0-7]) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw='% 200' - fi - cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; - *) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw=,u+rw - fi - cp_umask=$mode$u_plus_rw;; - esac -fi - -for src -do - # Protect names starting with `-'. - case $src in - -*) src=./$src;; - esac - - if test -n "$dir_arg"; then - dst=$src - dstdir=$dst - test -d "$dstdir" - dstdir_status=$? - else - - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - - dst=$dst_arg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst;; - esac - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 - fi - dstdir=$dst - dst=$dstdir/`basename "$src"` - dstdir_status=0 - else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - - test -d "$dstdir" - dstdir_status=$? - fi - fi - - obsolete_mkdir_used=false - - if test $dstdir_status != 0; then - case $posix_mkdir in - '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writeable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; - esac - - if - $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" - ) - then : - else - - # The umask is ridiculous, or mkdir does not conform to POSIX, - # or it failed possibly due to a race condition. Create the - # directory the slow way, step by step, checking for races as we go. - - case $dstdir in - /*) prefix='/';; - -*) prefix='./';; - *) prefix='';; - esac - - eval "$initialize_posix_glob" - - oIFS=$IFS - IFS=/ - $posix_glob set -f - set fnord $dstdir - shift - $posix_glob set +f - IFS=$oIFS - - prefixes= - - for d - do - test -z "$d" && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ - done - - if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true - fi - fi - fi - - if test -n "$dir_arg"; then - { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && - { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || - test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - - # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && - { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && - { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && - - # If -C, don't bother to copy if it wouldn't change the file. - if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && - set X $old && old=:$2:$4:$5:$6 && - set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - - test "$old" = "$new" && - $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 - then - rm -f "$dsttmp" - else - # Rename the file to the real destination. - $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || - - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - fi || exit 1 - - trap '' 0 - fi -done - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/hwloc-1.2.1/config/libtool.m4 b/hwloc-1.2.1/config/libtool.m4 deleted file mode 100644 index d8125842..00000000 --- a/hwloc-1.2.1/config/libtool.m4 +++ /dev/null @@ -1,7831 +0,0 @@ -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -]) - -# serial 57 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_WITH_SYSROOT])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from `configure', and `config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN - - -## ------------------------------------- ## -## Accumulate code for creating libtool. ## -## ------------------------------------- ## - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - -## ------------------------ ## -## FIXME: Eliminate VARNAME ## -## ------------------------ ## - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test $lt_write_fail = 0 && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to <bug-libtool@gnu.org>." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test $[#] != 0 -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING -_LT_LIBTOOL_TAGS - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - _LT_PROG_REPLACE_SHELLFNS - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" - ]) - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES -# -------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -# ---------------------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -# Store the results from the different compilers for each TAGNAME. -# Allow to override them for all tags through lt_cv_aix_libpath. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], - [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ - lt_aix_libpath_sed='[ - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }]' - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi],[]) - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" - fi - ]) - aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case "$ECHO" in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_WITH_SYSROOT -# ---------------- -AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([sysroot], -[ --with-sysroot[=DIR] Search for dependent libraries within DIR - (or the compiler's sysroot if not specified).], -[], [with_sysroot=no]) - -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - AC_MSG_RESULT([${with_sysroot}]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac - - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and in which our libraries should be installed.])]) - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" -])# _LT_ENABLE_LOCK - - -# _LT_PROG_AR -# ----------- -m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) -: ${AR=ar} -: ${AR_FLAGS=cru} -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) - -AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], - [lt_cv_ar_at_file=no - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - ]) - ]) - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi -_LT_DECL([], [archiver_list_spec], [1], - [How to feed a file listing to the archiver]) -])# _LT_PROG_AR - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test x"[$]$2" = xyes; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - 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 - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[[4-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib<name>.so - # instead of lib<name>.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[123]]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program which can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program which can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break - ;; - *) - test "$with_gnu_ld" != yes && break - ;; - esac - fi - done - IFS="$lt_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$lt_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT($LD) -else - AC_MSG_RESULT(no) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -_LT_PATH_LD_GNU -AC_SUBST([LD]) - -_LT_TAGDECL([], [LD], [1], [The linker used to build libraries]) -])# LT_PATH_LD - -# Old names: -AU_ALIAS([AM_PROG_LD], [LT_PATH_LD]) -AU_ALIAS([AC_PROG_LD], [LT_PATH_LD]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_LD], []) -dnl AC_DEFUN([AC_PROG_LD], []) - - -# _LT_PATH_LD_GNU -#- -------------- -m4_defun([_LT_PATH_LD_GNU], -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 </dev/null` in -*GNU* | *'with BFD'*) - lt_cv_prog_gnu_ld=yes - ;; -*) - lt_cv_prog_gnu_ld=no - ;; -esac]) -with_gnu_ld=$lt_cv_prog_gnu_ld -])# _LT_PATH_LD_GNU - - -# _LT_CMD_RELOAD -# -------------- -# find reload flag for linker -# -- PORTME Some linkers may need a different reload flag. -m4_defun([_LT_CMD_RELOAD], -[AC_CACHE_CHECK([for $LD option to reload object files], - lt_cv_ld_reload_flag, - [lt_cv_ld_reload_flag='-r']) -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test "$GCC" != yes; then - reload_cmds=false - fi - ;; - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac -_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl -_LT_TAGDECL([], [reload_cmds], [2])dnl -])# _LT_CMD_RELOAD - - -# _LT_CHECK_MAGIC_METHOD -# ---------------------- -# how to check for library dependencies -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_MAGIC_METHOD], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -AC_CACHE_CHECK([how to recognize dependent libraries], -lt_cv_deplibs_check_method, -[lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[[4-9]]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[[45]]*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method = "file_magic"]) -_LT_DECL([], [file_magic_glob], [1], - [How to find potential files when deplibs_check_method = "file_magic"]) -_LT_DECL([], [want_nocaseglob], [1], - [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - -# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -# -------------------------------- -# how to determine the name of the shared library -# associated with a specific link library. -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -m4_require([_LT_DECL_DLLTOOL]) -AC_CACHE_CHECK([how to associate runtime and link libraries], -lt_cv_sharedlib_from_linklib_cmd, -[lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac -]) -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - -_LT_DECL([], [sharedlib_from_linklib_cmd], [1], - [Command to associate shared and link libraries]) -])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB - - -# _LT_PATH_MANIFEST_TOOL -# ---------------------- -# locate the manifest tool -m4_defun([_LT_PATH_MANIFEST_TOOL], -[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&AS_MESSAGE_LOG_FD - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest*]) -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi -_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -])# _LT_PATH_MANIFEST_TOOL - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([], [nm_file_list_spec], [1], - [Specify filename containing input files for $NM]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac - -AC_CACHE_CHECK([for $compiler option to produce PIC], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - ;; - esac - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach <jrb3@best.com> says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - esac - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - freebsd1*) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) - ;; - esac - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], - [lt_cv_irix_exported_symbol], - [save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE( - [AC_LANG_SOURCE( - [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], - [C++], [[int foo (void) { return 0; }]], - [Fortran 77], [[ - subroutine foo - end]], - [Fortran], [[ - subroutine foo - end]])])], - [lt_cv_irix_exported_symbol=yes], - [lt_cv_irix_exported_symbol=no]) - LDFLAGS="$save_LDFLAGS"]) - if test "$lt_cv_irix_exported_symbol" = yes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], - [[If ld is used when linking, flag to hardcode $libdir into a binary - during linking. This must work even if $libdir does not exist]]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [postlink_cmds], [2], - [Commands necessary for finishing linking programs]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report which library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach <jrb3@best.com> says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd[[12]]*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - gnu*) - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_FUNC_STRIPNAME_CNF -# ---------------------- -# func_stripname_cnf prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# -# This function is identical to the (non-XSI) version of func_stripname, -# except this one can be used by m4 code that may be executed by configure, -# rather than the libtool script. -m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -AC_REQUIRE([_LT_DECL_SED]) -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf -])# _LT_FUNC_STRIPNAME_CNF - -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -]) - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -esac - -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" - CFLAGS="$lt_save_CFLAGS" -fi # test "$_lt_disable_F77" != yes - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test "$_lt_disable_FC" != yes - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - -# _LT_DECL_DLLTOOL -# ---------------- -# Ensure DLLTOOL variable is set. -m4_defun([_LT_DECL_DLLTOOL], -[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -AC_SUBST([DLLTOOL]) -]) - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -# ------------------------------------------------------ -# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. -m4_defun([_LT_PROG_FUNCTION_REPLACE], -[dnl { -sed -e '/^$1 ()$/,/^} # $1 /c\ -$1 ()\ -{\ -m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) -} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: -]) - - -# _LT_PROG_REPLACE_SHELLFNS -# ------------------------- -# Replace existing portable implementations of several shell functions with -# equivalent extended shell implementations where those features are available.. -m4_defun([_LT_PROG_REPLACE_SHELLFNS], -[if test x"$xsi_shell" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl - func_split_long_opt_name=${1%%=*} - func_split_long_opt_arg=${1#*=}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) - - _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) - - _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) - - _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -fi - -if test x"$lt_shell_append" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) - - _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl - func_quote_for_eval "${2}" -dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ - eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -fi -]) - -# _LT_PATH_CONVERSION_FUNCTIONS -# ----------------------------- -# Determine which file name conversion functions should be used by -# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -# for certain cross-compile configurations and native mingw. -m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_MSG_CHECKING([how to convert $build file names to $host format]) -AC_CACHE_VAL(lt_cv_to_host_file_cmd, -[case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac -]) -to_host_file_cmd=$lt_cv_to_host_file_cmd -AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], - [0], [convert $build file names to $host format])dnl - -AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -[#assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac -]) -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/hwloc-1.2.1/config/ltmain.sh b/hwloc-1.2.1/config/ltmain.sh deleted file mode 100755 index 3061e3c5..00000000 --- a/hwloc-1.2.1/config/ltmain.sh +++ /dev/null @@ -1,9636 +0,0 @@ - -# libtool (GNU libtool) 2.4 -# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -# 2007, 2008, 2009, 2010 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, -# or obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# Usage: $progname [OPTION]... [MODE-ARG]... -# -# Provide generalized library-building support services. -# -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --no-quiet, --no-silent -# print informational messages (default) -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print more informational messages than default -# --no-verbose don't print the extra informational messages -# --version print version information -# -h, --help, --help-all print short, long, or detailed help message -# -# MODE must be one of the following: -# -# clean remove files from the build directory -# compile compile a source file into a libtool object -# execute automatically set library path, then run a program -# finish complete the installation of libtool libraries -# install install libraries or executables -# link create a library or an executable -# uninstall remove libraries from an installed directory -# -# MODE-ARGS vary depending on the MODE. When passed as first option, -# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. -# Try `$progname --help --mode=MODE' for a more detailed description of MODE. -# -# When reporting a bug, please describe a test case to reproduce it and -# include the following information: -# -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.4 -# automake: $automake_version -# autoconf: $autoconf_version -# -# Report bugs to <bug-libtool@gnu.org>. -# GNU libtool home page: <http://www.gnu.org/software/libtool/>. -# General help using GNU software: <http://www.gnu.org/gethelp/>. - -PROGRAM=libtool -PACKAGE=libtool -VERSION=2.4 -TIMESTAMP="" -package_revision=1.3293 - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - -# NLS nuisances: We save the old values to restore during execute mode. -lt_user_locale= -lt_safe_locale= -for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" - lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" - fi" -done -LC_ALL=C -LANGUAGE=C -export LANGUAGE LC_ALL - -$lt_unset CDPATH - - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" - - - -: ${CP="cp -f"} -test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} -: ${EGREP="grep -E"} -: ${FGREP="grep -F"} -: ${GREP="grep"} -: ${LN_S="ln -s"} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SED="sed"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} -: ${Xsed="$SED -e 1s/^X//"} - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -exit_status=$EXIT_SUCCESS - -# Make sure IFS has a sensible default -lt_nl=' -' -IFS=" $lt_nl" - -dirname="s,/[^/]*$,," -basename="s,^.*/,," - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} # func_dirname may be replaced by extended shell implementation - - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} # func_basename may be replaced by extended shell implementation - - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi - func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` -} # func_dirname_and_basename may be replaced by extended shell implementation - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname may be replaced by extended shell implementation - - -# These SED scripts presuppose an absolute path with a trailing slash. -pathcar='s,^/\([^/]*\).*$,\1,' -pathcdr='s,^/[^/]*,,' -removedotparts=':dotsl - s@/\./@/@g - t dotsl - s,/\.$,/,' -collapseslashes='s@/\{1,\}@/@g' -finalslash='s,/*$,/,' - -# func_normal_abspath PATH -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -# value returned in "$func_normal_abspath_result" -func_normal_abspath () -{ - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` - while :; do - # Processed it all yet? - if test "$func_normal_abspath_tpath" = / ; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result" ; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} - -# func_relative_path SRCDIR DSTDIR -# generates a relative path from SRCDIR to DSTDIR, with a trailing -# slash if non-empty, suitable for immediately appending a filename -# without needing to append a separator. -# value returned in "$func_relative_path_result" -func_relative_path () -{ - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=${func_dirname_result} - if test "x$func_relative_path_tlibdir" = x ; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done - - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test "x$func_stripname_result" != x ; then - func_relative_path_result=${func_relative_path_result}/${func_stripname_result} - fi - - # Normalisation. If bindir is libdir, return empty string, - # else relative path ending with a slash; either way, target - # file name can be directly appended. - if test ! -z "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result/" - func_relative_path_result=$func_stripname_result - fi -} - -# The name of this program: -func_dirname_and_basename "$progpath" -progname=$func_basename_result - -# Make sure we have an absolute path for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=$func_dirname_result - progdir=`cd "$progdir" && pwd` - progpath="$progdir/$progname" - ;; - *) - save_IFS="$IFS" - IFS=: - for progdir in $PATH; do - IFS="$save_IFS" - test -x "$progdir/$progname" && break - done - IFS="$save_IFS" - test -n "$progdir" || progdir=`pwd` - progpath="$progdir/$progname" - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed="${SED}"' -e 1s/^X//' -sed_quote_subst='s/\([`"$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution that turns a string into a regex matching for the -# string literally. -sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' - -# Sed substitution that converts a w32 file name or path -# which contains forward slashes, into one that contains -# (escaped) backslashes. A very naive implementation. -lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - -# Re-`\' parameter expansions in output of double_quote_subst that were -# `\'-ed in input to the same. If an odd number of `\' preceded a '$' -# in input to double_quote_subst, that '$' was protected from expansion. -# Since each input `\' is now two `\'s, look for any number of runs of -# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -bs='\\' -bs2='\\\\' -bs4='\\\\\\\\' -dollar='\$' -sed_double_backslash="\ - s/$bs4/&\\ -/g - s/^$bs2$dollar/$bs&/ - s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g - s/\n//g" - -# Standard options: -opt_dry_run=false -opt_help=false -opt_quiet=false -opt_verbose=false -opt_warning=: - -# func_echo arg... -# Echo program name prefixed message, along with the current mode -# name if it has been set yet. -func_echo () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }$*" -} - -# func_verbose arg... -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $opt_verbose && func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -# func_error arg... -# Echo program name prefixed message to standard error. -func_error () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 -} - -# func_warning arg... -# Echo program name prefixed warning message to standard error. -func_warning () -{ - $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 - - # bash bug again: - : -} - -# func_fatal_error arg... -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - -# func_fatal_help arg... -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - func_error ${1+"$@"} - func_fatal_error "$help" -} -help="Try \`$progname --help' for more information." ## default - - -# func_grep expression filename -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_mkdir_p directory-path -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - my_directory_path="$1" - my_dir_list= - - if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then - - # Protect directory names starting with `-' - case $my_directory_path in - -*) my_directory_path="./$my_directory_path" ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$my_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - my_dir_list="$my_directory_path:$my_dir_list" - - # If the last portion added has no slash in it, the list is done - case $my_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` - done - my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` - - save_mkdir_p_IFS="$IFS"; IFS=':' - for my_dir in $my_dir_list; do - IFS="$save_mkdir_p_IFS" - # mkdir can fail with a `File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$my_dir" 2>/dev/null || : - done - IFS="$save_mkdir_p_IFS" - - # Bail out if we (or some other process) failed to create a directory. - test -d "$my_directory_path" || \ - func_fatal_error "Failed to create \`$1'" - fi -} - - -# func_mktempdir [string] -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, STRING is the basename for that directory. -func_mktempdir () -{ - my_template="${TMPDIR-/tmp}/${1-$progname}" - - if test "$opt_dry_run" = ":"; then - # Return a directory name, but don't create it in dry-run mode - my_tmpdir="${my_template}-$$" - else - - # If mktemp works, use that first and foremost - my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` - - if test ! -d "$my_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" - - save_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$my_tmpdir" - umask $save_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || \ - func_fatal_error "cannot create temporary directory \`$my_tmpdir'" - fi - - $ECHO "$my_tmpdir" -} - - -# func_quote_for_eval arg -# Aesthetically quote ARG to be evaled later. -# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -# is double-quoted, suitable for a subsequent eval, whereas -# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -# which are still active within double quotes backslashified. -func_quote_for_eval () -{ - case $1 in - *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; - *) - func_quote_for_eval_unquoted_result="$1" ;; - esac - - case $func_quote_for_eval_unquoted_result in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and and variable - # expansion for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" - ;; - *) - func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" - esac -} - - -# func_quote_for_expand arg -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - case $1 in - *[\\\`\"]*) - my_arg=`$ECHO "$1" | $SED \ - -e "$double_quote_subst" -e "$sed_double_backslash"` ;; - *) - my_arg="$1" ;; - esac - - case $my_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - my_arg="\"$my_arg\"" - ;; - esac - - func_quote_for_expand_result="$my_arg" -} - - -# func_show_eval cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$my_cmd" - my_status=$? - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - -# func_show_eval_locale cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$lt_user_locale - $my_cmd" - my_status=$? - eval "$lt_safe_locale" - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - -# func_tr_sh -# Turn $1 into a string suitable for a shell variable name. -# Result is stored in $func_tr_sh_result. All characters -# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -# if $1 begins with a digit, a '_' is prepended as well. -func_tr_sh () -{ - case $1 in - [0-9]* | *[!a-zA-Z0-9_]*) - func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` - ;; - * ) - func_tr_sh_result=$1 - ;; - esac -} - - -# func_version -# Echo version message to standard output and exit. -func_version () -{ - $opt_debug - - $SED -n '/(C)/!b go - :more - /\./!{ - N - s/\n# / / - b more - } - :go - /^# '$PROGRAM' (GNU /,/# warranty; / { - s/^# // - s/^# *$// - s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ - p - }' < "$progpath" - exit $? -} - -# func_usage -# Echo short help message to standard output and exit. -func_usage () -{ - $opt_debug - - $SED -n '/^# Usage:/,/^# *.*--help/ { - s/^# // - s/^# *$// - s/\$progname/'$progname'/ - p - }' < "$progpath" - echo - $ECHO "run \`$progname --help | more' for full usage" - exit $? -} - -# func_help [NOEXIT] -# Echo long help message to standard output and exit, -# unless 'noexit' is passed as argument. -func_help () -{ - $opt_debug - - $SED -n '/^# Usage:/,/# Report bugs to/ { - :print - s/^# // - s/^# *$// - s*\$progname*'$progname'* - s*\$host*'"$host"'* - s*\$SHELL*'"$SHELL"'* - s*\$LTCC*'"$LTCC"'* - s*\$LTCFLAGS*'"$LTCFLAGS"'* - s*\$LD*'"$LD"'* - s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ - p - d - } - /^# .* home page:/b print - /^# General help using/b print - ' < "$progpath" - ret=$? - if test -z "$1"; then - exit $ret - fi -} - -# func_missing_arg argname -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - $opt_debug - - func_error "missing argument for $1." - exit_cmd=exit -} - - -# func_split_short_opt shortopt -# Set func_split_short_opt_name and func_split_short_opt_arg shell -# variables after splitting SHORTOPT after the 2nd character. -func_split_short_opt () -{ - my_sed_short_opt='1s/^\(..\).*$/\1/;q' - my_sed_short_rest='1s/^..\(.*\)$/\1/;q' - - func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` - func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` -} # func_split_short_opt may be replaced by extended shell implementation - - -# func_split_long_opt longopt -# Set func_split_long_opt_name and func_split_long_opt_arg shell -# variables after splitting LONGOPT at the `=' sign. -func_split_long_opt () -{ - my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' - my_sed_long_arg='1s/^--[^=]*=//' - - func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` - func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` -} # func_split_long_opt may be replaced by extended shell implementation - -exit_cmd=: - - - - - -magic="%%%MAGIC variable%%%" -magic_exe="%%%MAGIC EXE variable%%%" - -# Global variables. -nonopt= -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "${1}=\$${1}\${2}" -} # func_append may be replaced by extended shell implementation - -# func_append_quoted var value -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -func_append_quoted () -{ - func_quote_for_eval "${2}" - eval "${1}=\$${1}\\ \$func_quote_for_eval_result" -} # func_append_quoted may be replaced by extended shell implementation - - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "${@}"` -} # func_arith may be replaced by extended shell implementation - - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` -} # func_len may be replaced by extended shell implementation - - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} # func_lo2o may be replaced by extended shell implementation - - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -} # func_xform may be replaced by extended shell implementation - - -# func_fatal_configuration arg... -# Echo program name prefixed message to standard error, followed by -# a configuration failure hint, and exit. -func_fatal_configuration () -{ - func_error ${1+"$@"} - func_error "See the $PACKAGE documentation for more information." - func_fatal_error "Fatal configuration error." -} - - -# func_config -# Display the configuration for all the tags in this script. -func_config () -{ - re_begincf='^# ### BEGIN LIBTOOL' - re_endcf='^# ### END LIBTOOL' - - # Default configuration. - $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" - - # Now print the configurations for the tags. - for tagname in $taglist; do - $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" - done - - exit $? -} - -# func_features -# Display the features supported by this script. -func_features () -{ - echo "host: $host" - if test "$build_libtool_libs" = yes; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - - exit $? -} - -# func_enable_tag tagname -# Verify that TAGNAME is valid, and either flag an error and exit, or -# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -# variable here. -func_enable_tag () -{ - # Global variable: - tagname="$1" - - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf="/$re_begincf/,/$re_endcf/p" - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac - - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; - *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - -# func_check_version_match -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - fi - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF - fi - - exit $EXIT_MISMATCH - fi -} - - -# Shorthand for --mode=foo, only valid as the first argument -case $1 in -clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; -compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; -execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; -finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; -install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; -link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; -uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; -esac - - - -# Option defaults: -opt_debug=: -opt_dry_run=false -opt_config=false -opt_preserve_dup_deps=false -opt_features=false -opt_finish=false -opt_help=false -opt_help_all=false -opt_silent=: -opt_verbose=: -opt_silent=false -opt_verbose=false - - -# Parse options once, thoroughly. This comes as soon as possible in the -# script to make things like `--version' happen as quickly as we can. -{ - # this just eases exit handling - while test $# -gt 0; do - opt="$1" - shift - case $opt in - --debug|-x) opt_debug='set -x' - func_echo "enabling shell trace mode" - $opt_debug - ;; - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - --config) - opt_config=: -func_config - ;; - --dlopen|-dlopen) - optarg="$1" - opt_dlopen="${opt_dlopen+$opt_dlopen -}$optarg" - shift - ;; - --preserve-dup-deps) - opt_preserve_dup_deps=: - ;; - --features) - opt_features=: -func_features - ;; - --finish) - opt_finish=: -set dummy --mode finish ${1+"$@"}; shift - ;; - --help) - opt_help=: - ;; - --help-all) - opt_help_all=: -opt_help=': help-all' - ;; - --mode) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_mode="$optarg" -case $optarg in - # Valid mode arguments: - clean|compile|execute|finish|install|link|relink|uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $opt" - exit_cmd=exit - break - ;; -esac - shift - ;; - --no-silent|--no-quiet) - opt_silent=false -func_append preserve_args " $opt" - ;; - --no-verbose) - opt_verbose=false -func_append preserve_args " $opt" - ;; - --silent|--quiet) - opt_silent=: -func_append preserve_args " $opt" - opt_verbose=false - ;; - --verbose|-v) - opt_verbose=: -func_append preserve_args " $opt" -opt_silent=false - ;; - --tag) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_tag="$optarg" -func_append preserve_args " $opt $optarg" -func_enable_tag "$optarg" - shift - ;; - - -\?|-h) func_usage ;; - --help) func_help ;; - --version) func_version ;; - - # Separate optargs to long options: - --*=*) - func_split_long_opt "$opt" - set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-n*|-v*) - func_split_short_opt "$opt" - set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) break ;; - -*) func_fatal_help "unrecognized option \`$opt'" ;; - *) set dummy "$opt" ${1+"$@"}; shift; break ;; - esac - done - - # Validate options: - - # save first non-option argument - if test "$#" -gt 0; then - nonopt="$opt" - shift - fi - - # preserve --debug - test "$opt_debug" = : || func_append preserve_args " --debug" - - case $host in - *cygwin* | *mingw* | *pw32* | *cegcc*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - - $opt_help || { - # Sanity checks first: - func_check_version_match - - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$opt_dlopen" && test "$opt_mode" != execute; then - func_error "unrecognized option \`-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$opt_mode' for more information." - } - - - # Bail if the options were screwed - $exit_cmd $EXIT_FAILURE -} - - - - -## ----------- ## -## Main. ## -## ----------- ## - -# func_lalib_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if `file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case "$lalib_p_line" in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test "$lalib_p" = yes -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - func_lalib_p "$1" -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" -} - -# func_ltwrapper_p file -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $opt_debug - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$save_ifs - eval cmd=\"$cmd\" - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -# behavior happens only for exec(3), not for open(2)! Also, sourcing -# `FILE.' does not work on cygwin managed mounts. -func_source () -{ - $opt_debug - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# func_resolve_sysroot PATH -# Replace a leading = in PATH with a sysroot. Store the result into -# func_resolve_sysroot_result -func_resolve_sysroot () -{ - func_resolve_sysroot_result=$1 - case $func_resolve_sysroot_result in - =*) - func_stripname '=' '' "$func_resolve_sysroot_result" - func_resolve_sysroot_result=$lt_sysroot$func_stripname_result - ;; - esac -} - -# func_replace_sysroot PATH -# If PATH begins with the sysroot, replace it with = and -# store the result into func_replace_sysroot_result. -func_replace_sysroot () -{ - case "$lt_sysroot:$1" in - ?*:"$lt_sysroot"*) - func_stripname "$lt_sysroot" '' "$1" - func_replace_sysroot_result="=$func_stripname_result" - ;; - *) - # Including no sysroot. - func_replace_sysroot_result=$1 - ;; - esac -} - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - $opt_debug - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case "$@ " in - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with \`--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' - else - write_lobj=none - fi - - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T <<EOF -# $write_libobj - a libtool object file -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -pic_object=$write_lobj - -# Name of the non-PIC object -non_pic_object=$write_oldobj - -EOF - $MV "${write_libobj}T" "${write_libobj}" - } -} - - -################################################## -# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # -################################################## - -# func_convert_core_file_wine_to_w32 ARG -# Helper function used by file name conversion functions when $build is *nix, -# and $host is mingw, cygwin, or some other w32 environment. Relies on a -# correctly configured wine environment available, with the winepath program -# in $build's $PATH. -# -# ARG is the $build file name to be converted to w32 format. -# Result is available in $func_convert_core_file_wine_to_w32_result, and will -# be empty on error (or when ARG is empty) -func_convert_core_file_wine_to_w32 () -{ - $opt_debug - func_convert_core_file_wine_to_w32_result="$1" - if test -n "$1"; then - # Unfortunately, winepath does not exit with a non-zero error code, so we - # are forced to check the contents of stdout. On the other hand, if the - # command is not found, the shell will set an exit code of 127 and print - # *an error message* to stdout. So we must check for both error code of - # zero AND non-empty stdout, which explains the odd construction: - func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` - if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then - func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | - $SED -e "$lt_sed_naive_backslashify"` - else - func_convert_core_file_wine_to_w32_result= - fi - fi -} -# end: func_convert_core_file_wine_to_w32 - - -# func_convert_core_path_wine_to_w32 ARG -# Helper function used by path conversion functions when $build is *nix, and -# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly -# configured wine environment available, with the winepath program in $build's -# $PATH. Assumes ARG has no leading or trailing path separator characters. -# -# ARG is path to be converted from $build format to win32. -# Result is available in $func_convert_core_path_wine_to_w32_result. -# Unconvertible file (directory) names in ARG are skipped; if no directory names -# are convertible, then the result may be empty. -func_convert_core_path_wine_to_w32 () -{ - $opt_debug - # unfortunately, winepath doesn't convert paths, only file names - func_convert_core_path_wine_to_w32_result="" - if test -n "$1"; then - oldIFS=$IFS - IFS=: - for func_convert_core_path_wine_to_w32_f in $1; do - IFS=$oldIFS - func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" - if test -n "$func_convert_core_file_wine_to_w32_result" ; then - if test -z "$func_convert_core_path_wine_to_w32_result"; then - func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" - else - func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" - fi - fi - done - IFS=$oldIFS - fi -} -# end: func_convert_core_path_wine_to_w32 - - -# func_cygpath ARGS... -# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when -# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) -# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or -# (2), returns the Cygwin file name or path in func_cygpath_result (input -# file name or path is assumed to be in w32 format, as previously converted -# from $build's *nix or MSYS format). In case (3), returns the w32 file name -# or path in func_cygpath_result (input file name or path is assumed to be in -# Cygwin format). Returns an empty string on error. -# -# ARGS are passed to cygpath, with the last one being the file name or path to -# be converted. -# -# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH -# environment variable; do not put it in $PATH. -func_cygpath () -{ - $opt_debug - if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then - func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` - if test "$?" -ne 0; then - # on failure, ensure result is empty - func_cygpath_result= - fi - else - func_cygpath_result= - func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" - fi -} -#end: func_cygpath - - -# func_convert_core_msys_to_w32 ARG -# Convert file name or path ARG from MSYS format to w32 format. Return -# result in func_convert_core_msys_to_w32_result. -func_convert_core_msys_to_w32 () -{ - $opt_debug - # awkward: cmd appends spaces to result - func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` -} -#end: func_convert_core_msys_to_w32 - - -# func_convert_file_check ARG1 ARG2 -# Verify that ARG1 (a file name in $build format) was converted to $host -# format in ARG2. Otherwise, emit an error message, but continue (resetting -# func_to_host_file_result to ARG1). -func_convert_file_check () -{ - $opt_debug - if test -z "$2" && test -n "$1" ; then - func_error "Could not determine host file name corresponding to" - func_error " \`$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback: - func_to_host_file_result="$1" - fi -} -# end func_convert_file_check - - -# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH -# Verify that FROM_PATH (a path in $build format) was converted to $host -# format in TO_PATH. Otherwise, emit an error message, but continue, resetting -# func_to_host_file_result to a simplistic fallback value (see below). -func_convert_path_check () -{ - $opt_debug - if test -z "$4" && test -n "$3"; then - func_error "Could not determine the host path corresponding to" - func_error " \`$3'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This is a deliberately simplistic "conversion" and - # should not be "improved". See libtool.info. - if test "x$1" != "x$2"; then - lt_replace_pathsep_chars="s|$1|$2|g" - func_to_host_path_result=`echo "$3" | - $SED -e "$lt_replace_pathsep_chars"` - else - func_to_host_path_result="$3" - fi - fi -} -# end func_convert_path_check - - -# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG -# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT -# and appending REPL if ORIG matches BACKPAT. -func_convert_path_front_back_pathsep () -{ - $opt_debug - case $4 in - $1 ) func_to_host_path_result="$3$func_to_host_path_result" - ;; - esac - case $4 in - $2 ) func_append func_to_host_path_result "$3" - ;; - esac -} -# end func_convert_path_front_back_pathsep - - -################################################## -# $build to $host FILE NAME CONVERSION FUNCTIONS # -################################################## -# invoked via `$to_host_file_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# Result will be available in $func_to_host_file_result. - - -# func_to_host_file ARG -# Converts the file name ARG from $build format to $host format. Return result -# in func_to_host_file_result. -func_to_host_file () -{ - $opt_debug - $to_host_file_cmd "$1" -} -# end func_to_host_file - - -# func_to_tool_file ARG LAZY -# converts the file name ARG from $build format to toolchain format. Return -# result in func_to_tool_file_result. If the conversion in use is listed -# in (the comma separated) LAZY, no conversion takes place. -func_to_tool_file () -{ - $opt_debug - case ,$2, in - *,"$to_tool_file_cmd",*) - func_to_tool_file_result=$1 - ;; - *) - $to_tool_file_cmd "$1" - func_to_tool_file_result=$func_to_host_file_result - ;; - esac -} -# end func_to_tool_file - - -# func_convert_file_noop ARG -# Copy ARG to func_to_host_file_result. -func_convert_file_noop () -{ - func_to_host_file_result="$1" -} -# end func_convert_file_noop - - -# func_convert_file_msys_to_w32 ARG -# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_file_result. -func_convert_file_msys_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_to_host_file_result="$func_convert_core_msys_to_w32_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_w32 - - -# func_convert_file_cygwin_to_w32 ARG -# Convert file name ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_file_cygwin_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - # because $build is cygwin, we call "the" cygpath in $PATH; no need to use - # LT_CYGPATH in this case. - func_to_host_file_result=`cygpath -m "$1"` - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_cygwin_to_w32 - - -# func_convert_file_nix_to_w32 ARG -# Convert file name ARG from *nix to w32 format. Requires a wine environment -# and a working winepath. Returns result in func_to_host_file_result. -func_convert_file_nix_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_file_wine_to_w32 "$1" - func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_w32 - - -# func_convert_file_msys_to_cygwin ARG -# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_file_msys_to_cygwin () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_cygpath -u "$func_convert_core_msys_to_w32_result" - func_to_host_file_result="$func_cygpath_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_cygwin - - -# func_convert_file_nix_to_cygwin ARG -# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed -# in a wine environment, working winepath, and LT_CYGPATH set. Returns result -# in func_to_host_file_result. -func_convert_file_nix_to_cygwin () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. - func_convert_core_file_wine_to_w32 "$1" - func_cygpath -u "$func_convert_core_file_wine_to_w32_result" - func_to_host_file_result="$func_cygpath_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_cygwin - - -############################################# -# $build to $host PATH CONVERSION FUNCTIONS # -############################################# -# invoked via `$to_host_path_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# The result will be available in $func_to_host_path_result. -# -# Path separators are also converted from $build format to $host format. If -# ARG begins or ends with a path separator character, it is preserved (but -# converted to $host format) on output. -# -# All path conversion functions are named using the following convention: -# file name conversion function : func_convert_file_X_to_Y () -# path conversion function : func_convert_path_X_to_Y () -# where, for any given $build/$host combination the 'X_to_Y' value is the -# same. If conversion functions are added for new $build/$host combinations, -# the two new functions must follow this pattern, or func_init_to_host_path_cmd -# will break. - - -# func_init_to_host_path_cmd -# Ensures that function "pointer" variable $to_host_path_cmd is set to the -# appropriate value, based on the value of $to_host_file_cmd. -to_host_path_cmd= -func_init_to_host_path_cmd () -{ - $opt_debug - if test -z "$to_host_path_cmd"; then - func_stripname 'func_convert_file_' '' "$to_host_file_cmd" - to_host_path_cmd="func_convert_path_${func_stripname_result}" - fi -} - - -# func_to_host_path ARG -# Converts the path ARG from $build format to $host format. Return result -# in func_to_host_path_result. -func_to_host_path () -{ - $opt_debug - func_init_to_host_path_cmd - $to_host_path_cmd "$1" -} -# end func_to_host_path - - -# func_convert_path_noop ARG -# Copy ARG to func_to_host_path_result. -func_convert_path_noop () -{ - func_to_host_path_result="$1" -} -# end func_convert_path_noop - - -# func_convert_path_msys_to_w32 ARG -# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_path_result. -func_convert_path_msys_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # Remove leading and trailing path separator characters from ARG. MSYS - # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; - # and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_msys_to_w32_result" - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_msys_to_w32 - - -# func_convert_path_cygwin_to_w32 ARG -# Convert path ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_path_cygwin_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_cygwin_to_w32 - - -# func_convert_path_nix_to_w32 ARG -# Convert path ARG from *nix to w32 format. Requires a wine environment and -# a working winepath. Returns result in func_to_host_file_result. -func_convert_path_nix_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_nix_to_w32 - - -# func_convert_path_msys_to_cygwin ARG -# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_path_msys_to_cygwin () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_msys_to_w32_result" - func_to_host_path_result="$func_cygpath_result" - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_msys_to_cygwin - - -# func_convert_path_nix_to_cygwin ARG -# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a -# a wine environment, working winepath, and LT_CYGPATH set. Returns result in -# func_to_host_file_result. -func_convert_path_nix_to_cygwin () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # Remove leading and trailing path separator characters from - # ARG. msys behavior is inconsistent here, cygpath turns them - # into '.;' and ';.', and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" - func_to_host_path_result="$func_cygpath_result" - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_nix_to_cygwin - - -# func_mode_compile arg... -func_mode_compile () -{ - $opt_debug - # Get the compilation command and the source file. - base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - pie_flag= - - for arg - do - case $arg_mode in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg="$arg" - arg_mode=normal - ;; - - target ) - libobj="$arg" - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - test -n "$libobj" && \ - func_fatal_error "you cannot specify \`-o' more than once" - arg_mode=target - continue - ;; - - -pie | -fpie | -fPIE) - func_append pie_flag " $arg" - continue - ;; - - -shared | -static | -prefer-pic | -prefer-non-pic) - func_append later " $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - lastarg= - save_ifs="$IFS"; IFS=',' - for arg in $args; do - IFS="$save_ifs" - func_append_quoted lastarg "$arg" - done - IFS="$save_ifs" - func_stripname ' ' '' "$lastarg" - lastarg=$func_stripname_result - - # Add the arguments to base_compile. - func_append base_compile " $lastarg" - continue - ;; - - *) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg="$srcfile" - srcfile="$arg" - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - func_append_quoted base_compile "$lastarg" - done # for arg - - case $arg_mode in - arg) - func_fatal_error "you must specify an argument for -Xcompile" - ;; - target) - func_fatal_error "you must specify a target with \`-o'" - ;; - *) - # Get the name of the library object. - test -z "$libobj" && { - func_basename "$srcfile" - libobj="$func_basename_result" - } - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - case $libobj in - *.[cCFSifmso] | \ - *.ada | *.adb | *.ads | *.asm | \ - *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ - *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup) - func_xform "$libobj" - libobj=$func_xform_result - ;; - esac - - case $libobj in - *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; - *) - func_fatal_error "cannot determine name of library object from \`$libobj'" - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - continue - ;; - - -static) - build_libtool_libs=no - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - func_quote_for_eval "$libobj" - test "X$libobj" != "X$func_quote_for_eval_result" \ - && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name \`$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname="$func_basename_result" - xdir="$func_dirname_result" - lobj=${xdir}$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) - pic_mode=default - ;; - esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - $ECHO "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - func_append removelist " $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - func_append removelist " $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 - srcfile=$func_to_tool_file_result - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test "$pic_mode" != no; then - command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - func_append command " -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test "$suppress_opt" = yes; then - suppress_output=' >/dev/null 2>&1' - fi - fi - - # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test "$compiler_c_o" = yes; then - func_append command " -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - func_append command "$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { - test "$opt_mode" = compile && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $opt_mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - - compile) - $ECHO \ -"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to build PIC objects only - -prefer-non-pic try to build non-PIC objects only - -shared do not build a \`.o' file suitable for static linking - -static only build a \`.o' file suitable for static linking - -Wc,FLAG pass FLAG directly to the compiler - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - - execute) - $ECHO \ -"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - - finish) - $ECHO \ -"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - - install) - $ECHO \ -"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The following components of INSTALL-COMMAND are treated specially: - - -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - - link) - $ECHO \ -"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -bindir BINDIR specify path to binaries directory (for systems where - libraries must be found in the PATH setting at runtime) - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -weak LIBNAME declare that the target provides the LIBNAME interface - -Wc,FLAG - -Xcompiler FLAG pass linker-specific FLAG directly to the compiler - -Wl,FLAG - -Xlinker FLAG pass linker-specific FLAG directly to the linker - -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - - uninstall) - $ECHO \ -"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - - *) - func_fatal_help "invalid operation mode \`$opt_mode'" - ;; - esac - - echo - $ECHO "Try \`$progname --help' for more information about other modes." -} - -# Now that we've collected a possible --mode arg, show help if necessary -if $opt_help; then - if test "$opt_help" = :; then - func_mode_help - else - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - func_mode_help - done - } | sed -n '1p; 2,$s/^Usage:/ or: /p' - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - echo - func_mode_help - done - } | - sed '1d - /^When reporting/,/^Report/{ - H - d - } - $x - /information about other modes/d - /more detailed .*MODE/d - s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' - fi - exit $? -fi - - -# func_mode_execute arg... -func_mode_execute () -{ - $opt_debug - # The first argument is the command name. - cmd="$nonopt" - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - for file in $opt_dlopen; do - test -f "$file" \ - || func_fatal_help "\`$file' is not a file" - - dir= - case $file in - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$lib' is not a valid libtool archive" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "\`$file' was not linked with \`-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir="$func_dirname_result" - - if test -f "$dir/$objdir/$dlname"; then - func_append dir "/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir="$func_dirname_result" - ;; - - *) - func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file="$progdir/$program" - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_append_quoted args "$file" - done - - if test "X$opt_dry_run" = Xfalse; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - fi -} - -test "$opt_mode" = execute && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $opt_debug - libs= - libdirs= - admincmds= - - for opt in "$nonopt" ${1+"$@"} - do - if test -d "$opt"; then - func_append libdirs " $opt" - - elif test -f "$opt"; then - if func_lalib_unsafe_p "$opt"; then - func_append libs " $opt" - else - func_warning "\`$opt' is not a valid libtool archive" - fi - - else - func_fatal_error "invalid argument \`$opt'" - fi - done - - if test -n "$libs"; then - if test -n "$lt_sysroot"; then - sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` - sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" - else - sysroot_cmd= - fi - - # Remove sysroot references - if $opt_dry_run; then - for lib in $libs; do - echo "removing references to $lt_sysroot and \`=' prefixes from $lib" - done - else - tmpdir=`func_mktempdir` - for lib in $libs; do - sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ - > $tmpdir/tmp-la - mv -f $tmpdir/tmp-la $lib - done - ${RM}r "$tmpdir" - fi - fi - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || func_append admincmds " - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_silent && exit $EXIT_SUCCESS - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - echo "----------------------------------------------------------------------" - echo "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - echo - echo "If you ever happen to want to link against installed libraries" - echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the \`-LLIBDIR'" - echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - echo " during execution" - fi - if test -n "$runpath_var"; then - echo " - add LIBDIR to the \`$runpath_var' environment variable" - echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $ECHO " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - echo - - echo "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" - echo "pages." - ;; - *) - echo "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - echo "----------------------------------------------------------------------" - fi - exit $EXIT_SUCCESS -} - -test "$opt_mode" = finish && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $opt_debug - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac; then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - func_append install_prog "$func_quote_for_eval_result" - install_shared_prog=$install_prog - case " $install_prog " in - *[\\\ /]cp\ *) install_cp=: ;; - *) install_cp=false ;; - esac - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - no_mode=: - for arg - do - arg2= - if test -n "$dest"; then - func_append files " $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) - if $install_cp; then :; else - prev=$arg - fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - if test "x$prev" = x-m && test -n "$install_override_mode"; then - arg2=$install_override_mode - no_mode=false - fi - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - func_append install_prog " $func_quote_for_eval_result" - if test -n "$arg2"; then - func_quote_for_eval "$arg2" - fi - func_append install_shared_prog " $func_quote_for_eval_result" - done - - test -z "$install_prog" && \ - func_fatal_help "you must specify an install program" - - test -n "$prev" && \ - func_fatal_help "the \`$prev' option requires an argument" - - if test -n "$install_override_mode" && $no_mode; then - if $install_cp; then :; else - func_quote_for_eval "$install_override_mode" - func_append install_shared_prog " -m $func_quote_for_eval_result" - fi - fi - - if test -z "$files"; then - if test -z "$dest"; then - func_fatal_help "no file or destination specified" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir="$func_dirname_result" - destname="$func_basename_result" - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "\`$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "\`$destdir' must be an absolute directory name" - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - func_append staticlibs " $file" - ;; - - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$file' is not a valid libtool archive" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) func_append current_libdirs " $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) func_append future_libdirs " $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir="$func_dirname_result" - func_append dir "$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking \`$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname="$1" - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme="$stripme" - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme="" - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_eval "$striplib $destdir/$realname" 'exit $?' - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name="$func_basename_result" - instname="$dir/$name"i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && func_append staticlibs " $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to \`$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script \`$wrapper'" - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "\`$lib' has not been installed in \`$libdir'" - finalize=no - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - $opt_dry_run || { - if test "$finalize" = yes; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file="$func_basename_result" - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_silent || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink \`$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file="$outputname" - else - func_warning "cannot relink \`$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name="$func_basename_result" - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - - func_show_eval "$install_prog \$file \$oldlib" 'exit $?' - - if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run \`$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test "$opt_mode" = install && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $opt_debug - my_outputname="$1" - my_originator="$2" - my_pic_p="${3-no}" - my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms="${my_outputname}S.c" - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${my_outputname}.nm" - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) -#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" -#endif - -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - func_verbose "generating symbol list for \`$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do - func_to_tool_file "$progfile" func_convert_file_msys_to_w32 - func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" - $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" - $opt_dry_run || { - $RM $export_symbols - eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from \`$dlprefile'" - func_basename "$dlprefile" - name="$func_basename_result" - case $host in - *cygwin* | *mingw* | *cegcc* ) - # if an import library, we need to obtain dlname - if func_win32_import_lib_p "$dlprefile"; then - func_tr_sh "$dlprefile" - eval "curr_lafile=\$libfile_$func_tr_sh_result" - dlprefile_dlbasename="" - if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then - # Use subshell, to avoid clobbering current variable values - dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` - if test -n "$dlprefile_dlname" ; then - func_basename "$dlprefile_dlname" - dlprefile_dlbasename="$func_basename_result" - else - # no lafile. user explicitly requested -dlpreopen <import library>. - $sharedlib_from_linklib_cmd "$dlprefile" - dlprefile_dlbasename=$sharedlib_from_linklib_result - fi - fi - $opt_dry_run || { - if test -n "$dlprefile_dlbasename" ; then - eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' - else - func_warning "Could not compute DLL name from $name" - eval '$ECHO ": $name " >> "$nlist"' - fi - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | - $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" - } - else # not an import lib - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - fi - ;; - *) - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - ;; - esac - done - - $opt_dry_run || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $MV "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if $GREP -v "^: " < "$nlist" | - if sort -k 3 </dev/null >/dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - echo >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[]; -LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{\ - { \"$my_originator\", (void *) 0 }," - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - if test "X$my_pic_p" != Xno; then - pic_flag_for_symtable=" $pic_flag" - fi - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) func_append symtab_cflags " $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' - - # Transform the symbol file into the correct name. - symfileobj="$output_objdir/${my_outputname}S.$objext" - case $host in - *cygwin* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - else - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for \`$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi -} - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -# Despite the name, also deal with 64 bit binaries. -func_win32_libid () -{ - $opt_debug - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - func_to_tool_file "$1" func_convert_file_msys_to_w32 - win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | - $SED -n -e ' - 1,100{ - / I /{ - s,.*,import, - p - q - } - }'` - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" -} - -# func_cygming_dll_for_implib ARG -# -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib () -{ - $opt_debug - sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` -} - -# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs -# -# The is the core of a fallback implementation of a -# platform-specific function to extract the name of the -# DLL associated with the specified import library LIBNAME. -# -# SECTION_NAME is either .idata$6 or .idata$7, depending -# on the platform and compiler that created the implib. -# -# Echos the name of the DLL associated with the -# specified import library. -func_cygming_dll_for_implib_fallback_core () -{ - $opt_debug - match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` - $OBJDUMP -s --section "$1" "$2" 2>/dev/null | - $SED '/^Contents of section '"$match_literal"':/{ - # Place marker at beginning of archive member dllname section - s/.*/====MARK====/ - p - d - } - # These lines can sometimes be longer than 43 characters, but - # are always uninteresting - /:[ ]*file format pe[i]\{,1\}-/d - /^In archive [^:]*:/d - # Ensure marker is printed - /^====MARK====/p - # Remove all lines with less than 43 characters - /^.\{43\}/!d - # From remaining lines, remove first 43 characters - s/^.\{43\}//' | - $SED -n ' - # Join marker and all lines until next marker into a single line - /^====MARK====/ b para - H - $ b para - b - :para - x - s/\n//g - # Remove the marker - s/^====MARK====// - # Remove trailing dots and whitespace - s/[\. \t]*$// - # Print - /./p' | - # we now have a list, one entry per line, of the stringified - # contents of the appropriate section of all members of the - # archive which possess that section. Heuristic: eliminate - # all those which have a first or second character that is - # a '.' (that is, objdump's representation of an unprintable - # character.) This should work for all archives with less than - # 0x302f exports -- but will fail for DLLs whose name actually - # begins with a literal '.' or a single character followed by - # a '.'. - # - # Of those that remain, print the first one. - $SED -e '/^\./d;/^.\./d;q' -} - -# func_cygming_gnu_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is a GNU/binutils-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_gnu_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` - test -n "$func_cygming_gnu_implib_tmp" -} - -# func_cygming_ms_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is an MS-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_ms_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` - test -n "$func_cygming_ms_implib_tmp" -} - -# func_cygming_dll_for_implib_fallback ARG -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# -# This fallback implementation is for use when $DLLTOOL -# does not support the --identify-strict option. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib_fallback () -{ - $opt_debug - if func_cygming_gnu_implib_p "$1" ; then - # binutils import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` - elif func_cygming_ms_implib_p "$1" ; then - # ms-generated import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` - else - # unknown - sharedlib_from_linklib_result="" - fi -} - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - $opt_debug - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - if test "$lock_old_archive_extraction" = yes; then - lockfile=$f_ex_an_ar_oldlib.lock - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - fi - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ - 'stat=$?; rm -f "$lockfile"; exit $stat' - if test "$lock_old_archive_extraction" = yes; then - $opt_dry_run || rm -f "$lockfile" - fi - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $opt_debug - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - func_basename "$my_xlib" - my_xlib="$func_basename_result" - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - darwin_base_archive=`basename "$darwin_archive"` - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" - cd "$darwin_curdir" - $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` - done - - func_extract_archives_result="$my_oldobjs" -} - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory in which it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=${1-no} - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - generated_by_libtool_version='$macro_version' - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$ECHO are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - file=\"\$0\"" - - qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` - $ECHO "\ - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - ECHO=\"$qECHO\" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ which is used only on -# windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options which match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's $0 value, followed by "$@". -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=\$0 - shift - for lt_opt - do - case \"\$lt_opt\" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` - test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. - lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` - cat \"\$lt_dump_D/\$lt_dump_F\" - exit 0 - ;; - --lt-*) - \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n \"\$lt_option_debug\"; then - echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" - lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from \$@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - for lt_wr_arg - do - case \$lt_wr_arg in - --lt-*) ;; - *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; - esac - shift - done - func_exec_program_core \${1+\"\$@\"} -} - - # Parse options - func_parse_lt_options \"\$0\" \${1+\"\$@\"} - - # Find the directory that this script lives in. - thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 - if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then - # special case for '.' - if test \"\$thisdir\" = \".\"; then - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $ECHO "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $MKDIR \"\$progdir\" - else - $RM \"\$progdir/\$file\" - fi" - - $ECHO "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $ECHO \"\$relink_command_output\" >&2 - $RM \"\$progdir/\$file\" - exit 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - if test -f \"\$progdir/\$program\"; then" - - # fixup the dll searchpath if we need to. - # - # Fix the DLL searchpath if we need to. Do this before prepending - # to shlibpath, because on Windows, both are PATH and uninstalled - # libraries must come first. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $ECHO "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` - - export $shlibpath_var -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - func_exec_program \${1+\"\$@\"} - fi - else - # The program doesn't exist. - \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 - \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" -} - - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat <<EOF - -/* $cwrappersource - temporary wrapper executable for $objdir/$outputname - Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION - - The $output program cannot be directly executed until all the libtool - libraries that it depends on are installed. - - This wrapper executable should never be moved out of the build directory. - If it is, it will not operate correctly. -*/ -EOF - cat <<"EOF" -#ifdef _MSC_VER -# define _CRT_SECURE_NO_DEPRECATE 1 -#endif -#include <stdio.h> -#include <stdlib.h> -#ifdef _MSC_VER -# include <direct.h> -# include <process.h> -# include <io.h> -#else -# include <unistd.h> -# include <stdint.h> -# ifdef __CYGWIN__ -# include <io.h> -# endif -#endif -#include <malloc.h> -#include <stdarg.h> -#include <assert.h> -#include <string.h> -#include <ctype.h> -#include <errno.h> -#include <fcntl.h> -#include <sys/stat.h> - -/* declarations of non-ANSI functions */ -#if defined(__MINGW32__) -# ifdef __STRICT_ANSI__ -int _putenv (const char *); -# endif -#elif defined(__CYGWIN__) -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined (other platforms) ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined(_MSC_VER) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -# ifndef _INTPTR_T_DEFINED -# define _INTPTR_T_DEFINED -# define intptr_t int -# endif -#elif defined(__MINGW32__) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined(__CYGWIN__) -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined (other platforms) ... */ -#endif - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -#if defined(LT_DEBUGWRAPPER) -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -EOF - - cat <<EOF -volatile const char * MAGIC_EXE = "$magic_exe"; -const char * LIB_PATH_VARNAME = "$shlibpath_var"; -EOF - - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - func_to_host_path "$temp_rpath" - cat <<EOF -const char * LIB_PATH_VALUE = "$func_to_host_path_result"; -EOF - else - cat <<"EOF" -const char * LIB_PATH_VALUE = ""; -EOF - fi - - if test -n "$dllsearchpath"; then - func_to_host_path "$dllsearchpath:" - cat <<EOF -const char * EXE_PATH_VARNAME = "PATH"; -const char * EXE_PATH_VALUE = "$func_to_host_path_result"; -EOF - else - cat <<"EOF" -const char * EXE_PATH_VARNAME = ""; -const char * EXE_PATH_VALUE = ""; -EOF - fi - - if test "$fast_install" = yes; then - cat <<EOF -const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ -EOF - else - cat <<EOF -const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ -EOF - fi - - - cat <<"EOF" - -#define LTWRAPPER_OPTION_PREFIX "--lt-" - -static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; -static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; -static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; - -int -main (int argc, char *argv[]) -{ - char **newargz; - int newargc; - char *tmp_pathspec; - char *actual_cwrapper_path; - char *actual_cwrapper_name; - char *target_name; - char *lt_argv_zero; - intptr_t rval = 127; - - int i; - - program_name = (char *) xstrdup (base_name (argv[0])); - newargz = XMALLOC (char *, argc + 1); - - /* very simple arg parsing; don't want to rely on getopt - * also, copy all non cwrapper options to newargz, except - * argz[0], which is handled differently - */ - newargc=0; - for (i = 1; i < argc; i++) - { - if (strcmp (argv[i], dumpscript_opt) == 0) - { -EOF - case "$host" in - *mingw* | *cygwin* ) - # make stdout use "unix" line endings - echo " setmode(1,_O_BINARY);" - ;; - esac - - cat <<"EOF" - lt_dump_script (stdout); - return 0; - } - if (strcmp (argv[i], debug_opt) == 0) - { - lt_debug = 1; - continue; - } - if (strcmp (argv[i], ltwrapper_option_prefix) == 0) - { - /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX - namespace, but it is not one of the ones we know about and - have already dealt with, above (inluding dump-script), then - report an error. Otherwise, targets might begin to believe - they are allowed to use options in the LTWRAPPER_OPTION_PREFIX - namespace. The first time any user complains about this, we'll - need to make LTWRAPPER_OPTION_PREFIX a configure-time option - or a configure.ac-settable value. - */ - lt_fatal (__FILE__, __LINE__, - "unrecognized %s option: '%s'", - ltwrapper_option_prefix, argv[i]); - } - /* otherwise ... */ - newargz[++newargc] = xstrdup (argv[i]); - } - newargz[++newargc] = NULL; - -EOF - cat <<EOF - /* The GNU banner must be the first non-error debug message */ - lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); -EOF - cat <<"EOF" - lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); - lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); - - tmp_pathspec = find_executable (argv[0]); - if (tmp_pathspec == NULL) - lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); - lt_debugprintf (__FILE__, __LINE__, - "(main) found exe (before symlink chase) at: %s\n", - tmp_pathspec); - - actual_cwrapper_path = chase_symlinks (tmp_pathspec); - lt_debugprintf (__FILE__, __LINE__, - "(main) found exe (after symlink chase) at: %s\n", - actual_cwrapper_path); - XFREE (tmp_pathspec); - - actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); - strendzap (actual_cwrapper_path, actual_cwrapper_name); - - /* wrapper name transforms */ - strendzap (actual_cwrapper_name, ".exe"); - tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); - XFREE (actual_cwrapper_name); - actual_cwrapper_name = tmp_pathspec; - tmp_pathspec = 0; - - /* target_name transforms -- use actual target program name; might have lt- prefix */ - target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); - strendzap (target_name, ".exe"); - tmp_pathspec = lt_extend_str (target_name, ".exe", 1); - XFREE (target_name); - target_name = tmp_pathspec; - tmp_pathspec = 0; - - lt_debugprintf (__FILE__, __LINE__, - "(main) libtool target name: %s\n", - target_name); -EOF - - cat <<EOF - newargz[0] = - XMALLOC (char, (strlen (actual_cwrapper_path) + - strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); - strcpy (newargz[0], actual_cwrapper_path); - strcat (newargz[0], "$objdir"); - strcat (newargz[0], "/"); -EOF - - cat <<"EOF" - /* stop here, and copy so we don't have to do this twice */ - tmp_pathspec = xstrdup (newargz[0]); - - /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ - strcat (newargz[0], actual_cwrapper_name); - - /* DO want the lt- prefix here if it exists, so use target_name */ - lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); - XFREE (tmp_pathspec); - tmp_pathspec = NULL; -EOF - - case $host_os in - mingw*) - cat <<"EOF" - { - char* p; - while ((p = strchr (newargz[0], '\\')) != NULL) - { - *p = '/'; - } - while ((p = strchr (lt_argv_zero, '\\')) != NULL) - { - *p = '/'; - } - } -EOF - ;; - esac - - cat <<"EOF" - XFREE (target_name); - XFREE (actual_cwrapper_path); - XFREE (actual_cwrapper_name); - - lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ - lt_setenv ("DUALCASE", "1"); /* for MSK sh */ - /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must - be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) - because on Windows, both *_VARNAMEs are PATH but uninstalled - libraries must come first. */ - lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); - lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); - - lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", - nonnull (lt_argv_zero)); - for (i = 0; i < newargc; i++) - { - lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", - i, nonnull (newargz[i])); - } - -EOF - - case $host_os in - mingw*) - cat <<"EOF" - /* execv doesn't actually work on mingw as expected on unix */ - newargz = prepare_spawn (newargz); - rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); - if (rval == -1) - { - /* failed to start process */ - lt_debugprintf (__FILE__, __LINE__, - "(main) failed to launch target \"%s\": %s\n", - lt_argv_zero, nonnull (strerror (errno))); - return 127; - } - return rval; -EOF - ;; - *) - cat <<"EOF" - execv (lt_argv_zero, newargz); - return rval; /* =127, but avoids unused variable warning */ -EOF - ;; - esac - - cat <<"EOF" -} - -void * -xmalloc (size_t num) -{ - void *p = (void *) malloc (num); - if (!p) - lt_fatal (__FILE__, __LINE__, "memory exhausted"); - - return p; -} - -char * -xstrdup (const char *string) -{ - return string ? strcpy ((char *) xmalloc (strlen (string) + 1), - string) : NULL; -} - -const char * -base_name (const char *name) -{ - const char *base; - -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - /* Skip over the disk name in MSDOS pathnames. */ - if (isalpha ((unsigned char) name[0]) && name[1] == ':') - name += 2; -#endif - - for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) - base = name + 1; - return base; -} - -int -check_executable (const char *path) -{ - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if ((stat (path, &st) >= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - int tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = q - p; - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp (str, pat) == 0) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - int len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - int orig_value_len = strlen (orig_value); - int add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - int len = strlen (new_value); - while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[len-1] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -EOF - case $host_os in - mingw*) - cat <<"EOF" - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -EOF - ;; - esac - - cat <<"EOF" -void lt_dump_script (FILE* f) -{ -EOF - func_emit_wrapper yes | - $SED -e 's/\([\\"]\)/\\\1/g' \ - -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' - - cat <<"EOF" -} -EOF -} -# end: func_emit_cwrapperexe_src - -# func_win32_import_lib_p ARG -# True if ARG is an import lib, as indicated by $file_magic_cmd -func_win32_import_lib_p () -{ - $opt_debug - case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in - *import*) : ;; - *) false ;; - esac -} - -# func_mode_link arg... -func_mode_link () -{ - $opt_debug - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args=$nonopt - base_compile="$nonopt $@" - compile_command=$nonopt - finalize_command=$nonopt - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no - bindir= - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=no - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - weak_libs= - single_module="${wl}-single_module" - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - bindir) - bindir="$arg" - prev= - continue - ;; - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - func_append dlfiles " $arg" - else - func_append dlprefiles " $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - test -f "$arg" \ - || func_fatal_error "symbol file \`$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) func_append deplibs " $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# func_append moreargs " $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file \`$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) func_append rpath " $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) func_append xrpath " $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - weak) - func_append weak_libs " $arg" - prev= - continue - ;; - xcclinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg="$arg" - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "\`-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -bindir) - prev=bindir - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - func_stripname "-L" '' "$arg" - if test -z "$func_stripname_result"; then - if test "$#" -gt 0; then - func_fatal_error "require no space between \`-L' and \`$1'" - else - func_fatal_error "need path for \`-L' option" - fi - fi - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of \`$dir'" - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "* | *" $arg "*) - # Will only happen for absolute or sysroot arguments - ;; - *) - # Preserve sysroot, but never include relative directories - case $dir in - [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; - *) func_append deplibs " -L$dir" ;; - esac - func_append lib_search_path " $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) func_append dllsearchpath ":$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - func_append deplibs " System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test "X$arg" = "X-lc" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test "X$arg" = "X-lc" && continue - ;; - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - func_append deplibs " $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot|--sysroot) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case "$new_inherited_linker_flags " in - *" $arg "*) ;; - * ) func_append new_inherited_linker_flags " $arg" ;; - esac - continue - ;; - - -multi_module) - single_module="${wl}-multi_module" - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "\`-no-install' is ignored for $host" - func_warning "assuming \`-no-fast-install' instead" - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - =*) - func_stripname '=' '' "$dir" - dir=$lt_sysroot$func_stripname_result - ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - func_append arg " $func_quote_for_eval_result" - func_append compiler_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - func_append arg " $wl$func_quote_for_eval_result" - func_append compiler_flags " $wl$func_quote_for_eval_result" - func_append linker_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - # Flags to be passed through unchanged, with rationale: - # -64, -mips[0-9] enable 64-bit mode for the SGI compiler - # -r[0-9][0-9]* specify processor for the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler - # +DA*, +DD* enable 64-bit mode for the HP compiler - # -q* compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* architecture-specific flags for GCC - # -F/path path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* profiling flags for GCC - # @file GCC response files - # -tp=* Portland pgcc target processor selection - # --sysroot=* for sysroot support - # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-flto*|-fwhopr*|-fuse-linker-plugin) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - func_append compile_command " $arg" - func_append finalize_command " $arg" - func_append compiler_flags " $arg" - continue - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - *.$objext) - # A standard object. - func_append objs " $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - func_append deplibs " $arg" - func_append old_deplibs " $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - func_resolve_sysroot "$arg" - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. - func_append dlfiles " $func_resolve_sysroot_result" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - func_append dlprefiles " $func_resolve_sysroot_result" - prev= - else - func_append deplibs " $func_resolve_sysroot_result" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the \`$prevarg' option requires an argument" - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname="$func_basename_result" - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - func_dirname "$output" "/" "" - output_objdir="$func_dirname_result$objdir" - func_to_tool_file "$output_objdir/" - tool_output_objdir=$func_to_tool_file_result - # Create the object directory. - func_mkdir_p "$output_objdir" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if $opt_preserve_dup_deps ; then - case "$libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append libs " $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; - esac - func_append pre_post_deps " $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - - case $linkmode in - lib) - passes="conv dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - - for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test "$linkmode,$pass" = "lib,link"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs="$tmp_deplibs" - fi - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test "$linkmode,$pass" = "lib,dlpreopen"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - func_resolve_sysroot "$lib" - case $lib in - *.la) func_source "$func_resolve_sysroot_result" ;; - esac - - # Collect preopened libtool deplibs, except any this library - # has declared as weak libs - for deplib in $dependency_libs; do - func_basename "$deplib" - deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; - *) func_append deplibs " $deplib" ;; - esac - done - done - libs="$dlprefiles" - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - - for deplib in $libs; do - lib= - found=no - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append compiler_flags " $deplib" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - func_warning "\`-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - if test "$linkmode" = lib; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes - else - found=no - fi - break 2 - fi - done - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - fi - ;; # -l - *.ltframework) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - *) - func_warning "\`-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - func_stripname '-R' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) - func_resolve_sysroot "$deplib" - lib=$func_resolve_sysroot_result - ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules into shared libraries is allowed, - # but linking other static libraries is non-portable. - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi - ;; - pass_all) - valid_a_lib=yes - ;; - esac - if test "$valid_a_lib" != yes; then - echo - $ECHO "*** Warning: Trying to link with static lib archive $deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because the file extensions .$libext of this argument makes me believe" - echo "*** that it is just a static archive that I should not use here." - else - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - ;; - esac - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - func_append newdlprefiles " $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append newdlfiles " $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - - if test "$found" = yes || test -f "$lib"; then : - else - func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" - fi - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "\`$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` - for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do - case " $new_inherited_linker_flags " in - *" $tmp_inherited_linker_flag "*) ;; - *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; - esac - done - fi - dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && func_append dlfiles " $dlopen" - test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - # It is a libtool convenience library, so add in its objects. - func_append convenience " $ladir/$objdir/$old_library" - func_append old_convenience " $ladir/$objdir/$old_library" - elif test "$linkmode" != prog && test "$linkmode" != lib; then - func_fatal_error "\`$lib' is not a convenience library" - fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - if test -n "$old_library" && - { test "$prefer_static_libs" = yes || - test "$prefer_static_libs,$installed" = "built,no"; }; then - linklib=$old_library - else - for l in $old_library $library_names; do - linklib="$l" - done - fi - if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - func_fatal_error "cannot -dlopen a convenience library: \`$lib'" - fi - if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - func_append dlprefiles " $lib $dependency_libs" - else - func_append newdlfiles " $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of \`$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir="$ladir" - fi - ;; - esac - func_basename "$lib" - laname="$func_basename_result" - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then - if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library \`$lib' was moved." - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else - dir="$lt_sysroot$libdir" - absdir="$lt_sysroot$libdir" - fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" - # Remove this search path later - func_append notinst_path " $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - func_append notinst_path " $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir" && test "$linkmode" = prog; then - func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" - fi - case "$host" in - # special handling for platforms with PE-DLLs. - *cygwin* | *mingw* | *cegcc* ) - # Linker will automatically link against shared library if both - # static and shared are present. Therefore, ensure we extract - # symbols from the import library if a shared library is present - # (otherwise, the dlopen module name will be incorrect). We do - # this by putting the import library name into $newdlprefiles. - # We recover the dlopen module name by 'saving' the la file - # name in a special purpose variable, and (later) extracting the - # dlname from the la file. - if test -n "$dlname"; then - func_tr_sh "$dir/$linklib" - eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" - func_append newdlprefiles " $dir/$linklib" - else - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - fi - ;; - * ) - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - func_append newdlprefiles " $dir/$dlname" - else - func_append newdlprefiles " $dir/$linklib" - fi - ;; - esac - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then - func_append newlib_search_path " $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath:" in - *"$absdir:"*) ;; - *) func_append temp_rpath "$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes; then - use_static_libs=no - fi - if test -n "$library_names" && - { test "$use_static_libs" = no || test -z "$old_library"; }; then - case $host in - *cygwin* | *mingw* | *cegcc*) - # No point in relinking DLLs because paths are not encoded - func_append notinst_deplibs " $lib" - need_relink=no - ;; - *) - if test "$installed" = no; then - func_append notinst_deplibs " $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule="" - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule="$dlpremoduletest" - break - fi - done - if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then - echo - if test "$linkmode" = prog; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname="$1" - shift - libname=`eval "\\$ECHO \"$libname_spec\""` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw* | *cegcc*) - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - func_basename "$soroot" - soname="$func_basename_result" - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from \`$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for \`$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test "$linkmode" = prog || test "$opt_mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; - *-*-sysv4*uw2*) add_dir="-L$dir" ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we can not - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null ; then - if test "X$dlopenmodule" != "X$lib"; then - $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - echo - echo "*** And there doesn't seem to be a static archive available" - echo "*** The link will probably fail, sorry" - else - add="$dir/$old_library" - fi - elif test -n "$old_library"; then - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test "$lib_linked" != yes; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) func_append compile_shlibpath "$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && - test "$hardcode_minus_L" != yes && - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$opt_mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - echo - $ECHO "*** Warning: This system can not link to static lib archive $lib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - echo "*** But as you try to build a module library, libtool will still create " - echo "*** a static module, that should work as long as the dlopening application" - echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) func_append xrpath " $temp_xrpath";; - esac;; - *) func_append temp_deplibs " $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - func_append newlib_search_path " $absdir" - # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result";; - *) func_resolve_sysroot "$deplib" ;; - esac - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $func_resolve_sysroot_result "*) - func_append specialdeplibs " $func_resolve_sysroot_result" ;; - esac - fi - func_append tmp_libs " $func_resolve_sysroot_result" - done - - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - path= - case $deplib in - -L*) path="$deplib" ;; - *.la) - func_resolve_sysroot "$deplib" - deplib=$func_resolve_sysroot_result - func_dirname "$deplib" "" "." - dir=$func_dirname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of \`$dir'" - absdir="$dir" - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl" ; then - depdepl="$absdir/$objdir/$depdepl" - darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" - func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" - path= - fi - fi - ;; - *) - path="-L$absdir/$objdir" - ;; - esac - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - test "$absdir" != "$libdir" && \ - func_warning "\`$deplib' seems to be moved" - - path="-L$absdir" - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test "$pass" = link; then - if test "$linkmode" = "prog"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) func_append lib_search_path " $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) func_append tmp_libs " $deplib" ;; - esac - ;; - *) func_append tmp_libs " $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then - func_append tmp_libs " $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - fi - if test "$linkmode" = prog || test "$linkmode" = lib; then - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "\`-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "\`-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - func_append objs "$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test "$module" = no && \ - func_fatal_help "libtool library \`$output' must begin with \`lib'" - - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" - else - echo - $ECHO "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - func_append libobjs " $objs" - fi - fi - - test "$dlself" != no && \ - func_warning "\`-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test "$#" -gt 1 && \ - func_warning "ignoring multiple \`-rpath's for a libtool library" - - install_libdir="$1" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "\`-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - shift - IFS="$save_ifs" - - test -n "$7" && \ - func_fatal_help "too many parameters to \`-version-info'" - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major="$1" - number_minor="$2" - number_revision="$3" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - darwin|linux|osf|windows|none) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_revision" - ;; - freebsd-aout|freebsd-elf|qnx|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_minor" - lt_irix_increment=no - ;; - esac - ;; - no) - current="$1" - revision="$2" - age="$3" - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "CURRENT \`$current' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "REVISION \`$revision' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "AGE \`$age' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE \`$age' is greater than the current interface number \`$current'" - func_fatal_error "\`$vinfo' is not valid version information" - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current" - ;; - - irix | nonstopux) - if test "X$lt_irix_increment" = "Xno"; then - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - func_append verstring ":${current}.0" - ;; - - qnx) - major=".$current" - versuffix=".$current" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - - *) - func_fatal_configuration "unknown library version type \`$version_type'" - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - func_warning "undefined symbols not allowed in $host shared libraries" - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - - fi - - func_generate_dlsyms "$libname" "$libname" "yes" - func_append libobjs " $symfileobj" - test "X$libobjs" = "X " && libobjs= - - if test "$opt_mode" != relink; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - func_append removelist " $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - func_append oldlibs " $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - #for path in $notinst_path; do - # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` - # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` - # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` - #done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - func_replace_sysroot "$libdir" - func_append temp_xrpath " -R$func_replace_sysroot_result" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) func_append dlfiles " $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) func_append dlprefiles " $lib" ;; - esac - done - - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - func_append deplibs " System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - func_append deplibs " -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $opt_dry_run || $RM conftest.c - cat > conftest.c <<EOF - int main() { return 0; } -EOF - $opt_dry_run || $RM conftest - if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then - ldd_output=`ldd conftest` - for i in $deplibs; do - case $i in - -l*) - func_stripname -l '' "$i" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $i "*) - func_append newdeplibs " $i" - i="" - ;; - esac - fi - if test -n "$i" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` - set dummy $deplib_matches; shift - deplib_match=$1 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then - func_append newdeplibs " $i" - else - droppeddeps=yes - echo - $ECHO "*** Warning: dynamic linker does not accept needed library $i." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which I believe you do not have" - echo "*** because a test_compile did reveal that the linker did not use it for" - echo "*** its dynamic dependency list that programs get resolved with at runtime." - fi - fi - ;; - *) - func_append newdeplibs " $i" - ;; - esac - done - else - # Error occurred in the first compile. Let's try to salvage - # the situation: Compile a separate program for each library. - for i in $deplibs; do - case $i in - -l*) - func_stripname -l '' "$i" - name=$func_stripname_result - $opt_dry_run || $RM conftest - if $LTCC $LTCFLAGS -o conftest conftest.c $i; then - ldd_output=`ldd conftest` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $i "*) - func_append newdeplibs " $i" - i="" - ;; - esac - fi - if test -n "$i" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` - set dummy $deplib_matches; shift - deplib_match=$1 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then - func_append newdeplibs " $i" - else - droppeddeps=yes - echo - $ECHO "*** Warning: dynamic linker does not accept needed library $i." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because a test_compile did reveal that the linker did not use this one" - echo "*** as a dynamic dependency that programs can get resolved with at runtime." - fi - fi - else - droppeddeps=yes - echo - $ECHO "*** Warning! Library $i is needed by this library but I was not able to" - echo "*** make it link in! You will probably need to install it or some" - echo "*** library that it depends on before this library will be fully" - echo "*** functional. Installing it before continuing would be even better." - fi - ;; - *) - func_append newdeplibs " $i" - ;; - esac - done - fi - ;; - file_magic*) - set dummy $deplibs_check_method; shift - file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - func_append newdeplibs " $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - if test -n "$file_magic_glob"; then - libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` - else - libnameglob=$libname - fi - test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - if test "$want_nocaseglob" = yes; then - shopt -s nocaseglob - potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` - $nocaseglob - else - potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` - fi - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | - $SED -e 10q | - $EGREP "$file_magic_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - func_append newdeplibs " $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` - done - fi - case $tmp_deplibs in - *[!\ \ ]*) - echo - if test "X$deplibs_check_method" = "Xnone"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - ;; - esac - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - echo - echo "*** Warning: libtool could not satisfy all declared inter-library" - $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then - echo - echo "*** Since this library must not contain undefined symbols," - echo "*** because either the platform does not support them or" - echo "*** it was explicitly requested with -no-undefined," - echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - deplibs="$new_libs" - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" - test "$opt_mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - func_replace_sysroot "$libdir" - libdir=$func_replace_sysroot_result - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append dep_rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_apped perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - shift - realname="$1" - shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - linknames= - for link - do - func_append linknames " $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` - test "X$libobjs" = "X " && libobjs= - - delfiles= - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols="$output_objdir/$libname.uexp" - func_append delfiles " $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - if test "x`$SED 1q $export_symbols`" != xEXPORTS; then - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols="$export_symbols" - export_symbols= - always_export_symbols=yes - fi - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd1 in $cmds; do - IFS="$save_ifs" - # Take the normal branch if the nm_file_list_spec branch - # doesn't work or if tool conversion is not needed. - case $nm_file_list_spec~$to_tool_file_cmd in - *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) - try_normal_branch=yes - eval cmd=\"$cmd1\" - func_len " $cmd" - len=$func_len_result - ;; - *) - try_normal_branch=no - ;; - esac - if test "$try_normal_branch" = yes \ - && { test "$len" -lt "$max_cmd_len" \ - || test "$max_cmd_len" -le -1; } - then - func_show_eval "$cmd" 'exit $?' - skipped_export=false - elif test -n "$nm_file_list_spec"; then - func_basename "$output" - output_la=$func_basename_result - save_libobjs=$libobjs - save_output=$output - output=${output_objdir}/${output_la}.nm - func_to_tool_file "$output" - libobjs=$nm_file_list_spec$func_to_tool_file_result - func_append delfiles " $output" - func_verbose "creating $NM input file list: $output" - for obj in $save_libobjs; do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > "$output" - eval cmd=\"$cmd1\" - func_show_eval "$cmd" 'exit $?' - output=$save_output - libobjs=$save_libobjs - skipped_export=false - else - # The command line is too long to execute in one step. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - func_append tmp_deplibs " $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test "$compiler_needs_object" = yes && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - func_append linker_flags " $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$opt_mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test "X$skipped_export" != "X:" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - func_basename "$output" - output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then - output=${output_objdir}/${output_la}.lnkscript - func_verbose "creating GNU ld script: $output" - echo 'INPUT (' > $output - for obj in $save_libobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - echo ')' >> $output - func_append delfiles " $output" - func_to_tool_file "$output" - output=$func_to_tool_file_result - elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then - output=${output_objdir}/${output_la}.lnk - func_verbose "creating linker input file list: $output" - : > $output - set x $save_libobjs - shift - firstobj= - if test "$compiler_needs_object" = yes; then - firstobj="$1 " - shift - fi - for obj - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - func_append delfiles " $output" - func_to_tool_file "$output" - output=$firstobj\"$file_list_spec$func_to_tool_file_result\" - else - if test -n "$save_libobjs"; then - func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-${k}.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test "X$objlist" = X || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - reload_objs=$objlist - eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" - fi - last_robj=$output_objdir/$output_la-${k}.$objext - func_arith $k + 1 - k=$func_arith_result - output=$output_objdir/$output_la-${k}.$objext - objlist=" $obj" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\${concat_cmds}$reload_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" - fi - func_append delfiles " $output" - - else - output= - fi - - if ${skipped_export-false}; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - fi - - test -n "$save_libobjs" && - func_verbose "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - if ${skipped_export-false}; then - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - fi - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - obj) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "\`-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object \`$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $opt_dry_run || $RM $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` - else - gentop="$output_objdir/${obj}x" - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # If we're not building shared, we need to use non_pic_objs - test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" - - # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - func_execute_cmds "$reload_cmds" 'exit $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "\`-release' is ignored for programs" - - test "$preload" = yes \ - && test "$dlopen_support" = unknown \ - && test "$dlopen_self" = unknown \ - && test "$dlopen_self_static" = unknown && \ - func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test "$tagname" = CXX ; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - func_append compile_command " ${wl}-bind_at_load" - func_append finalize_command " ${wl}-bind_at_load" - ;; - esac - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - compile_deplibs="$new_libs" - - - func_append compile_command " $compile_deplibs" - func_append finalize_command " $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) func_append dllsearchpath ":$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) func_append finalize_perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" "no" - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - wrappers_required=yes - case $host in - *cegcc* | *mingw32ce*) - # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=no - ;; - *cygwin* | *mingw* ) - if test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - *) - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - esac - if test "$wrappers_required" = no; then - # Replace the output file specification. - compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - exit_status=0 - func_show_eval "$link_command" 'exit_status=$?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Delete the generated files. - if test -f "$output_objdir/${outputname}S.${objext}"; then - func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' - fi - - exit $exit_status - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - func_append rpath "$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $opt_dry_run || $RM $output - # Link the executable and exit - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - exit $EXIT_SUCCESS - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "\`$output' will be relinked during installation" - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output_objdir/$outputname" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Now create the wrapper script. - func_verbose "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" - $RM $cwrappersource $cwrapper - trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host" ; then - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save $symfileobj" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - if test "$preload" = yes && test -f "$symfileobj"; then - func_append oldobjs " $symfileobj" - fi - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $addlibs - func_append oldobjs " $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append oldobjs " $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - echo "copying selected object files to avoid basename conflicts..." - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase="$func_basename_result" - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - func_append oldobjs " $gentop/$newobj" - ;; - *) func_append oldobjs " $obj" ;; - esac - done - fi - eval cmds=\"$old_archive_cmds\" - - func_len " $cmds" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - elif test -n "$archiver_list_spec"; then - func_verbose "using command file archive linking..." - for obj in $oldobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > $output_objdir/$libname.libcmd - func_to_tool_file "$output_objdir/$libname.libcmd" - oldobjs=" $archiver_list_spec$func_to_tool_file_result" - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - func_verbose "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - oldobjs= - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= - len=$len0 - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - func_verbose "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" - ;; - -L*) - func_stripname -L '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -L$func_replace_sysroot_result" - ;; - -R*) - func_stripname -R '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -R$func_replace_sysroot_result" - ;; - *) func_append newdependency_libs " $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" - ;; - *) func_append newdlfiles " $lib" ;; - esac - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" - ;; - esac - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlfiles " $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlprefiles " $abs" - done - dlprefiles="$newdlprefiles" - fi - $RM $output - # place dlname in correct position for cygwin - # In fact, it would be nice if we could use this code for all target - # systems that can't hard-code library paths into their executables - # and that have no shared library path variable independent of PATH, - # but it turns out we can't easily determine that from inspecting - # libtool variables, so we have to hard-code the OSs to which it - # applies here; at the moment, that means platforms that use the PE - # object format with DLL files. See the long comment at the top of - # tests/bindir.at for full details. - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) - # If a -bindir argument was supplied, place the dll there. - if test "x$bindir" != x ; - then - func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result$dlname - else - # Otherwise fall back on heuristic. - tdlname=../bin/$dlname - fi - ;; - esac - $ECHO > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Linker flags that can not go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $ECHO >> $output "\ -relink_command=\"$relink_command\"" - fi - done - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -{ test "$opt_mode" = link || test "$opt_mode" = relink; } && - func_mode_link ${1+"$@"} - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $opt_debug - RM="$nonopt" - files= - rmforce= - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in - -f) func_append RM " $arg"; rmforce=yes ;; - -*) func_append RM " $arg" ;; - *) func_append files " $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - for file in $files; do - func_dirname "$file" "" "." - dir="$func_dirname_result" - if test "X$dir" = X.; then - odir="$objdir" - else - odir="$dir/$objdir" - fi - func_basename "$file" - name="$func_basename_result" - test "$opt_mode" = uninstall && odir="$dir" - - # Remember odir for removal later, being careful to avoid duplicates - if test "$opt_mode" = clean; then - case " $rmdirs " in - *" $odir "*) ;; - *) func_append rmdirs " $odir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif test "$rmforce" = yes; then - continue - fi - - rmfiles="$file" - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - func_append rmfiles " $odir/$n" - done - test -n "$old_library" && func_append rmfiles " $odir/$old_library" - - case "$opt_mode" in - clean) - case " $library_names " in - *" $dlname "*) ;; - *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; - esac - test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && - test "$pic_object" != none; then - func_append rmfiles " $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && - test "$non_pic_object" != none; then - func_append rmfiles " $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$opt_mode" = clean ; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - func_append rmfiles " $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - func_append rmfiles " $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - func_append rmfiles " $odir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - func_append rmfiles " $odir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && - func_mode_uninstall ${1+"$@"} - -test -z "$opt_mode" && { - help="$generic_help" - func_fatal_help "you must specify a MODE" -} - -test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode \`$opt_mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: -# vi:sw=2 - diff --git a/hwloc-1.2.1/config/ltoptions.m4 b/hwloc-1.2.1/config/ltoptions.m4 deleted file mode 100644 index 17cfd51c..00000000 --- a/hwloc-1.2.1/config/ltoptions.m4 +++ /dev/null @@ -1,369 +0,0 @@ -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 7 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS - - -## --------------------------------- ## -## Macros to handle LT_INIT options. ## -## --------------------------------- ## - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], - [pic_mode=default]) - -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - -## ----------------- ## -## LTDL_INIT Options ## -## ----------------- ## - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/hwloc-1.2.1/config/ltsugar.m4 b/hwloc-1.2.1/config/ltsugar.m4 deleted file mode 100644 index 9000a057..00000000 --- a/hwloc-1.2.1/config/ltsugar.m4 +++ /dev/null @@ -1,123 +0,0 @@ -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) diff --git a/hwloc-1.2.1/config/ltversion.m4 b/hwloc-1.2.1/config/ltversion.m4 deleted file mode 100644 index 9c7b5d41..00000000 --- a/hwloc-1.2.1/config/ltversion.m4 +++ /dev/null @@ -1,23 +0,0 @@ -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# @configure_input@ - -# serial 3293 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4]) -m4_define([LT_PACKAGE_REVISION], [1.3293]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4' -macro_revision='1.3293' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) diff --git a/hwloc-1.2.1/config/lt~obsolete.m4 b/hwloc-1.2.1/config/lt~obsolete.m4 deleted file mode 100644 index c573da90..00000000 --- a/hwloc-1.2.1/config/lt~obsolete.m4 +++ /dev/null @@ -1,98 +0,0 @@ -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/hwloc-1.2.1/config/missing b/hwloc-1.2.1/config/missing deleted file mode 100755 index 28055d2a..00000000 --- a/hwloc-1.2.1/config/missing +++ /dev/null @@ -1,376 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. - -scriptversion=2009-04-28.21; # UTC - -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -msg="missing on your system" - -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - autom4te touch the output file, or create a stub one - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch] - -Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and -\`g' are ignored when checking the name. - -Send bug reports to <bug-automake@gnu.org>." - exit $? - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit $? - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - -esac - -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). This is about non-GNU programs, so use $1 not -# $program. -case $1 in - lex*|yacc*) - # Not GNU programs, they don't have --version. - ;; - - tar*) - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - exit 1 - fi - ;; - - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $program in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case $f in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te*) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison*|yacc*) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex*|flex*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit $? - fi - ;; - - makeinfo*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - tar*) - shift - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case $firstarg in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case $firstarg in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/hwloc-1.2.1/configure b/hwloc-1.2.1/configure deleted file mode 100755 index 07d68017..00000000 --- a/hwloc-1.2.1/configure +++ /dev/null @@ -1,22809 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for hwloc 1.2.1. -# -# Report bugs to <http://www.open-mpi.org/community/help/>. -# -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software -# Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - # Preserve -v and -x to the replacement shell. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; - esac - exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org and -$0: http://www.open-mpi.org/community/help/ about your -$0: system, including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 </dev/null -exec 6>&1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='hwloc' -PACKAGE_TARNAME='hwloc' -PACKAGE_VERSION='1.2.1' -PACKAGE_STRING='hwloc 1.2.1' -PACKAGE_BUGREPORT='http://www.open-mpi.org/community/help/' -PACKAGE_URL='' - -# Factoring default headers for most tests. -ac_includes_default="\ -#include <stdio.h> -#ifdef HAVE_SYS_TYPES_H -# include <sys/types.h> -#endif -#ifdef HAVE_SYS_STAT_H -# include <sys/stat.h> -#endif -#ifdef STDC_HEADERS -# include <stdlib.h> -# include <stddef.h> -#else -# ifdef HAVE_STDLIB_H -# include <stdlib.h> -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include <memory.h> -# endif -# include <string.h> -#endif -#ifdef HAVE_STRINGS_H -# include <strings.h> -#endif -#ifdef HAVE_INTTYPES_H -# include <inttypes.h> -#endif -#ifdef HAVE_STDINT_H -# include <stdint.h> -#endif -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -RANLIB -ac_ct_AR -AR -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -LIBTOOL -OBJDUMP -DLLTOOL -AS -HWLOC_BUILD_TESTS_FALSE -HWLOC_BUILD_TESTS_TRUE -HWLOC_BUILD_UTILS_FALSE -HWLOC_BUILD_UTILS_TRUE -HWLOC_HAVE_CPUID_FALSE -HWLOC_HAVE_CPUID_TRUE -HWLOC_DOXYGEN_BROKEN_SHORT_NAMES_FALSE -HWLOC_DOXYGEN_BROKEN_SHORT_NAMES_TRUE -HWLOC_HAVE_X86_64_FALSE -HWLOC_HAVE_X86_64_TRUE -HWLOC_HAVE_X86_32_FALSE -HWLOC_HAVE_X86_32_TRUE -HWLOC_HAVE_MINGW32_FALSE -HWLOC_HAVE_MINGW32_TRUE -HWLOC_HAVE_WINDOWS_FALSE -HWLOC_HAVE_WINDOWS_TRUE -HWLOC_HAVE_HPUX_FALSE -HWLOC_HAVE_HPUX_TRUE -HWLOC_HAVE_OSF_FALSE -HWLOC_HAVE_OSF_TRUE -HWLOC_HAVE_AIX_FALSE -HWLOC_HAVE_AIX_TRUE -HWLOC_HAVE_SOLARIS_FALSE -HWLOC_HAVE_SOLARIS_TRUE -HWLOC_HAVE_FREEBSD_FALSE -HWLOC_HAVE_FREEBSD_TRUE -HWLOC_HAVE_DARWIN_FALSE -HWLOC_HAVE_DARWIN_TRUE -HWLOC_HAVE_IRIX_FALSE -HWLOC_HAVE_IRIX_TRUE -HWLOC_HAVE_LINUX_FALSE -HWLOC_HAVE_LINUX_TRUE -HWLOC_INSTALL_DOXYGEN_FALSE -HWLOC_INSTALL_DOXYGEN_TRUE -HWLOC_BUILD_README_FALSE -HWLOC_BUILD_README_TRUE -HWLOC_BUILD_DOXYGEN_FALSE -HWLOC_BUILD_DOXYGEN_TRUE -HWLOC_HAVE_BUNZIPP_FALSE -HWLOC_HAVE_BUNZIPP_TRUE -HWLOC_HAVE_MBIND_FALSE -HWLOC_HAVE_MBIND_TRUE -HWLOC_HAVE_SET_MEMPOLICY_FALSE -HWLOC_HAVE_SET_MEMPOLICY_TRUE -HWLOC_HAVE_XML_FALSE -HWLOC_HAVE_XML_TRUE -HWLOC_HAVE_CAIRO_FALSE -HWLOC_HAVE_CAIRO_TRUE -HWLOC_HAVE_CUDART_FALSE -HWLOC_HAVE_CUDART_TRUE -HWLOC_HAVE_MYRIEXPRESS_FALSE -HWLOC_HAVE_MYRIEXPRESS_TRUE -HWLOC_HAVE_CUDA_FALSE -HWLOC_HAVE_CUDA_TRUE -HWLOC_HAVE_LIBIBVERBS_FALSE -HWLOC_HAVE_LIBIBVERBS_TRUE -HWLOC_HAVE_SCHED_SETAFFINITY_FALSE -HWLOC_HAVE_SCHED_SETAFFINITY_TRUE -HWLOC_HAVE_LINUX_LIBNUMA_FALSE -HWLOC_HAVE_LINUX_LIBNUMA_TRUE -HWLOC_HAVE_OPENAT_FALSE -HWLOC_HAVE_OPENAT_TRUE -HWLOC_HAVE_MS_LIB_FALSE -HWLOC_HAVE_MS_LIB_TRUE -HWLOC_HAVE_GCC_FALSE -HWLOC_HAVE_GCC_TRUE -HWLOC_BUILD_STANDALONE_FALSE -HWLOC_BUILD_STANDALONE_TRUE -BUNZIPP -XMLLINT -HWLOC_DIFF_U -HWLOC_TERMCAP_LIBS -HWLOC_X11_LIBS -X_EXTRA_LIBS -X_LIBS -X_PRE_LIBS -X_CFLAGS -XMKMF -HWLOC_CAIRO_LIBS -HWLOC_CAIRO_CFLAGS -HWLOC_W3_GENERATOR -LYNX -W3M -SED_I -SED -EPSTOPDF -GS -FIG2DEV -MAKEINDEX -PDFLATEX -DOXYGEN -HWLOC_EMBEDDED_LIBS -HWLOC_EMBEDDED_LDADD -HWLOC_EMBEDDED_CPPFLAGS -HWLOC_EMBEDDED_CFLAGS -HWLOC_LIBS -HWLOC_LDFLAGS -HWLOC_CPPFLAGS -HWLOC_CFLAGS -HWLOC_REQUIRES -HWLOC_HAVE_XML -HWLOC_XML_LIBS -HWLOC_XML_CFLAGS -HWLOC_LINUX_LIBNUMA_LIBS -BASH -HWLOC_MS_LIB -HWLOC_KERRIGHED_LIBS -HWLOC_KERRIGHED_CFLAGS -HWLOC_PKG_CONFIG -EGREP -GREP -CPP -HWLOC_top_srcdir -HWLOC_top_builddir -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -libhwloc_so_version -HWLOC_RELEASE_DATE -HWLOC_SVN_R -HWLOC_VERSION -CONFIGURE_DEPENDENCIES -AM_BACKSLASH -AM_DEFAULT_VERBOSITY -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_os -target_vendor -target_cpu -target -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_silent_rules -enable_dependency_tracking -enable_embedded_mode -with_hwloc_symbol_prefix -enable_debug -enable_doxygen -enable_picky -enable_cairo -enable_xml -enable_visibility -with_x -enable_shared -enable_static -with_pic -enable_fast_install -with_gnu_ld -with_sysroot -enable_libtool_lock -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP -HWLOC_PKG_CONFIG -HWLOC_KERRIGHED_CFLAGS -HWLOC_KERRIGHED_LIBS -HWLOC_MS_LIB -HWLOC_XML_CFLAGS -HWLOC_XML_LIBS -DOXYGEN -PDFLATEX -MAKEINDEX -FIG2DEV -GS -EPSTOPDF -W3M -LYNX -HWLOC_CAIRO_CFLAGS -HWLOC_CAIRO_LIBS -XMKMF' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used" >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures hwloc 1.2.1 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/hwloc] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -X features: - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] - --target=TARGET configure for building compilers for TARGET [HOST] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of hwloc 1.2.1:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-silent-rules less verbose build output (undo: `make V=1') - --disable-silent-rules verbose build output (undo: `make V=0') - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --enable-embedded-mode Using --enable-embedded-mode puts the HWLOC into - "embedded" mode. The default is - --disable-embedded-mode, meaning that the HWLOC is - in "standalone" mode. - --enable-debug Using --enable-debug enables various hwloc - maintainer-level debugging controls. This option is - not recomended for end users. - --enable-doxygen enable support for building Doxygen documentation - (note that this option is ONLY relevant in developer - builds; Doxygen documentation is pre-built for - tarball builds and this option is therefore ignored) - --disable-picky When in developer checkouts of hwloc and compiling - with gcc, the default is to enable maximum compiler - pickyness. Using --disable-picky or --enable-picky - overrides any default setting - --disable-cairo Disable the Cairo back-end of hwloc's lstopo command - --disable-xml Disable the XML back-end of hwloc's lstopo command - --enable-visibility enable visibility feature of certain - compilers/linkers (default: enabled) - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=no] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-hwloc-symbol-prefix=STRING - STRING can be any valid C symbol name. It will be - prefixed to all public HWLOC symbols. Default: - "hwloc_" - --with-x use the X Window System - --with-pic try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot=DIR Search for dependent libraries within DIR - (or the compiler's sysroot if not specified). - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a - nonstandard directory <lib dir> - LIBS libraries to pass to the linker, e.g. -l<library> - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if - you have headers in a nonstandard directory <include dir> - CPP C preprocessor - HWLOC_PKG_CONFIG - path to pkg-config utility - HWLOC_KERRIGHED_CFLAGS - C compiler flags for KERRIGHED, overriding pkg-config - HWLOC_KERRIGHED_LIBS - linker flags for KERRIGHED, overriding pkg-config - HWLOC_MS_LIB - Path to Microsoft's Visual Studio `lib' tool - HWLOC_XML_CFLAGS - C compiler flags for XML, overriding pkg-config - HWLOC_XML_LIBS - linker flags for XML, overriding pkg-config - DOXYGEN Location of the doxygen program (required for building the hwloc - doxygen documentation) - PDFLATEX Location of the pdflatex program (required for building the - hwloc doxygen documentation) - MAKEINDEX Location of the makeindex program (required for building the - hwloc doxygen documentation) - FIG2DEV Location of the fig2dev program (required for building the hwloc - doxygen documentation) - GS Location of the gs program (required for building the hwloc - doxygen documentation) - EPSTOPDF Location of the epstopdf program (required for building the - hwloc doxygen documentation) - W3M Location of the w3m program (required to building the top-level - hwloc README file) - LYNX Location of the lynx program (required to building the top-level - hwloc README file) - HWLOC_CAIRO_CFLAGS - C compiler flags for CAIRO, overriding pkg-config - HWLOC_CAIRO_LIBS - linker flags for CAIRO, overriding pkg-config - XMKMF Path to xmkmf, Makefile generator for X Window System - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to <http://www.open-mpi.org/community/help/>. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -hwloc configure 1.2.1 -generated by GNU Autoconf 2.68 - -Copyright (C) 2010 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ------------------------------------------------------ ## -## Report this to http://www.open-mpi.org/community/help/ ## -## ------------------------------------------------------ ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES -# -------------------------------------------- -# Tries to find the compile-time value of EXPR in a program that includes -# INCLUDES, setting VAR accordingly. Returns whether the value could be -# computed -ac_fn_c_compute_int () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=0 ac_mid=0 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid; break -else - as_fn_arith $ac_mid + 1 && ac_lo=$as_val - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) < 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=-1 ac_mid=-1 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=$ac_mid; break -else - as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - ac_lo= ac_hi= -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid -else - as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in #(( -?*) eval "$3=\$ac_lo"; ac_retval=0 ;; -'') ac_retval=1 ;; -esac - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -static long int longval () { return $2; } -static unsigned long int ulongval () { return $2; } -#include <stdio.h> -#include <stdlib.h> -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (($2) < 0) - { - long int i = longval (); - if (i != ($2)) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ($2)) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - echo >>conftest.val; read $3 <conftest.val; ac_retval=0 -else - ac_retval=1 -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -rm -f conftest.val - - fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_compute_int - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case <limits.h> declares $2. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_c_check_type LINENO TYPE VAR INCLUDES -# ------------------------------------------- -# Tests whether TYPE exists after having included INCLUDES, setting cache -# variable VAR accordingly. -ac_fn_c_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_type - -# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES -# --------------------------------------------- -# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR -# accordingly. -ac_fn_c_check_decl () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - as_decl_name=`echo $2|sed 's/ *(.*//'` - as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 -$as_echo_n "checking whether $as_decl_name is declared... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -#ifndef $as_decl_name -#ifdef __cplusplus - (void) $as_decl_use; -#else - (void) $as_decl_name; -#endif -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_decl -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by hwloc $as_me 1.2.1, which was -generated by GNU Autoconf 2.68. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -ac_aux_dir= -for ac_dir in ./config "$srcdir"/./config; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in ./config \"$srcdir\"/./config" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Note that this directory must *exactly* match what was specified via -# -I in ACLOCAL_AMFLAGS in the top-level Makefile.am. - - -cat <<EOF - -### -### Configuring hwloc distribution tarball -### Startup tests -### -EOF - -# This must be before AM_INIT_AUTOMAKE -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 -$as_echo_n "checking target system type... " >&6; } -if ${ac_cv_target+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$target_alias" = x; then - ac_cv_target=$ac_cv_host -else - ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 -$as_echo "$ac_cv_target" >&6; } -case $ac_cv_target in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; -esac -target=$ac_cv_target -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_target -shift -target_cpu=$1 -target_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -target_os=$* -IFS=$ac_save_IFS -case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac - - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - -# Init automake -am__api_version='1.11' - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='hwloc' - VERSION='1.2.1' - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. - -AMTAR=${AMTAR-"${am_missing_run}tar"} - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 -$as_echo_n "checking how to create a ustar tar archive... " >&6; } -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar plaintar pax cpio none' -_am_tools=${am_cv_prog_tar_ustar-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - { echo "$as_me:$LINENO: $_am_tar --version" >&5 - ($_am_tar --version) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && break - done - am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x ustar -w "$$tardir"' - am__tar_='pax -L -x ustar -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H ustar -L' - am__tar_='find "$tardir" -print | cpio -o -H ustar -L' - am__untar='cpio -i -H ustar -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_ustar}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 - (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - rm -rf conftest.dir - if test -s conftest.tar; then - { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5 - ($am__untar <conftest.tar) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - grep GrepMe conftest.dir/file >/dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -if ${am_cv_prog_tar_ustar+:} false; then : - $as_echo_n "(cached) " >&6 -else - am_cv_prog_tar_ustar=$_am_tool -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 -$as_echo "$am_cv_prog_tar_ustar" >&6; } - - - - - -# Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : - enableval=$enable_silent_rules; -fi - -case $enable_silent_rules in -yes) AM_DEFAULT_VERBOSITY=0;; -no) AM_DEFAULT_VERBOSITY=1;; -*) AM_DEFAULT_VERBOSITY=0;; -esac -AM_BACKSLASH='\' - - -# We want new Libtool. None of that old stuff. Pfft. - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Make configure depend on the VERSION file, since it's used in AC_INIT -CONFIGURE_DEPENDENCIES='$(top_srcdir)/VERSION' - - -# Get the version of hwloc that we are installing -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for hwloc version" >&5 -$as_echo_n "checking for hwloc version... " >&6; } -HWLOC_VERSION="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION`" -HWLOC_MAJOR_VERSION="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION --major`" -HWLOC_MINOR_VERSION="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION --minor`" -HWLOC_RELEASE_VERSION="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION --release`" -HWLOC_REPO_REV="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION --repo-rev`" -HWLOC_RELEASE_DATE="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION --release-date`" - - - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_MAJOR_VERSION $HWLOC_MAJOR_VERSION -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_MINOR_VERSION $HWLOC_MINOR_VERSION -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_RELEASE_VERSION $HWLOC_RELEASE_VERSION -_ACEOF - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $HWLOC_VERSION" >&5 -$as_echo "$HWLOC_VERSION" >&6; } - -# Override/fixup the version numbers set by AC_INIT, since on -# developer builds, there's no good way to know what the version is -# before running configure :(. We only use the base version number -# (ie, no svn r numbers) for the version set in AC_INIT. This will -# always match reality because we add the VERSION file (the only way -# to change the major.minor.release{greek}) into the configure -# dependencies. - -PACKAGE_VERSION="$HWLOC_VERSION" -PACKAGE_STRING="${PACKAGE_NAME} ${PACKAGE_VERSION}" -VERSION="${PACKAGE_VERSION}" - -# For standalone configurations, we also include a .so version number. - -. $srcdir/VERSION - - -# Setup the header file - - - -# Setup C compiler - -CFLAGS_save="$CFLAGS" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdio.h> -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdarg.h> -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -if test "x$CC" != xcc; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 -$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 -$as_echo_n "checking whether cc understands -c and -o together... " >&6; } -fi -set dummy $CC; ac_cc=`$as_echo "$2" | - sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -# Make sure it works both with $CC and with simple cc. -# We do the test twice because some compilers refuse to overwrite an -# existing .o file with -o, though they will create one. -ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' -rm -f conftest2.* -if { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && - test -f conftest2.$ac_objext && { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; -then - eval ac_cv_prog_cc_${ac_cc}_c_o=yes - if test "x$CC" != xcc; then - # Test first that cc exists at all. - if { ac_try='cc -c conftest.$ac_ext >&5' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' - rm -f conftest2.* - if { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && - test -f conftest2.$ac_objext && { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; - then - # cc works too. - : - else - # cc exists but doesn't like -o. - eval ac_cv_prog_cc_${ac_cc}_c_o=no - fi - fi - fi -else - eval ac_cv_prog_cc_${ac_cc}_c_o=no -fi -rm -f core conftest* - -fi -if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h - -fi - -# FIXME: we rely on the cache variable name because -# there is no other way. -set dummy $CC -am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o -if test "$am_t" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi - - -CFLAGS="$CFLAGS_save" - -# Define hwloc's configure arguments - - # Embedded mode, or standalone? - # Check whether --enable-embedded-mode was given. -if test "${enable_embedded_mode+set}" = set; then : - enableval=$enable_embedded_mode; -fi - - - # Change the symbol prefix? - -# Check whether --with-hwloc-symbol-prefix was given. -if test "${with_hwloc_symbol_prefix+set}" = set; then : - withval=$with_hwloc_symbol_prefix; -fi - - - # Debug mode? - # Check whether --enable-debug was given. -if test "${enable_debug+set}" = set; then : - enableval=$enable_debug; -fi - - - # Doxygen? - # Check whether --enable-doxygen was given. -if test "${enable_doxygen+set}" = set; then : - enableval=$enable_doxygen; -fi - - - # Picky? - # Check whether --enable-picky was given. -if test "${enable_picky+set}" = set; then : - enableval=$enable_picky; -fi - - - # Cairo? - # Check whether --enable-cairo was given. -if test "${enable_cairo+set}" = set; then : - enableval=$enable_cairo; -fi - - - # XML? - # Check whether --enable-xml was given. -if test "${enable_xml+set}" = set; then : - enableval=$enable_xml; -fi - - - -# If debug mode, add -g -if test "$hwloc_debug" = "1"; then : - CFLAGS="$CFLAGS -g" -fi - -# If the user didn't specifically ask for embedding mode, default to -# standalone mode -if test "$enable_embedded_mode" != "yes"; then : - if test ! -d "$srcdir/doc"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The hwloc source tree looks incomplete for a standalone" >&5 -$as_echo "$as_me: WARNING: The hwloc source tree looks incomplete for a standalone" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: build. Perhaps this hwloc tree is intended for an embedded" >&5 -$as_echo "$as_me: WARNING: build. Perhaps this hwloc tree is intended for an embedded" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: build? Try using the --enable-embedded-mode switch." >&5 -$as_echo "$as_me: WARNING: build? Try using the --enable-embedded-mode switch." >&2;} - as_fn_error $? "Cannot build standalone hwloc" "$LINENO" 5 -else - - hwloc_mode=standalone - -fi -fi - -# Setup the hwloc core - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <float.h> - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <string.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdlib.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <ctype.h> -#include <stdlib.h> -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" -if test "x$ac_cv_header_minix_config_h" = xyes; then : - MINIX=yes -else - MINIX= -fi - - - if test "$MINIX" = yes; then - -$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h - - -$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h - - -$as_echo "#define _MINIX 1" >>confdefs.h - - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 -$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } -if ${ac_cv_safe_to_define___extensions__+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -# define __EXTENSIONS__ 1 - $ac_includes_default -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_safe_to_define___extensions__=yes -else - ac_cv_safe_to_define___extensions__=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 -$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } - test $ac_cv_safe_to_define___extensions__ = yes && - $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h - - $as_echo "#define _ALL_SOURCE 1" >>confdefs.h - - $as_echo "#define _GNU_SOURCE 1" >>confdefs.h - - $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h - - $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h - - - - -if test "x$ac_cv_env_HWLOC_PKG_CONFIG_set" != "xset"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_HWLOC_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $HWLOC_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_HWLOC_PKG_CONFIG="$HWLOC_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_HWLOC_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -HWLOC_PKG_CONFIG=$ac_cv_path_HWLOC_PKG_CONFIG -if test -n "$HWLOC_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HWLOC_PKG_CONFIG" >&5 -$as_echo "$HWLOC_PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_HWLOC_PKG_CONFIG"; then - ac_pt_HWLOC_PKG_CONFIG=$HWLOC_PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_HWLOC_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_HWLOC_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_HWLOC_PKG_CONFIG="$ac_pt_HWLOC_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_HWLOC_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_HWLOC_PKG_CONFIG=$ac_cv_path_ac_pt_HWLOC_PKG_CONFIG -if test -n "$ac_pt_HWLOC_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_HWLOC_PKG_CONFIG" >&5 -$as_echo "$ac_pt_HWLOC_PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_HWLOC_PKG_CONFIG" = x; then - HWLOC_PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - HWLOC_PKG_CONFIG=$ac_pt_HWLOC_PKG_CONFIG - fi -else - HWLOC_PKG_CONFIG="$ac_cv_path_HWLOC_PKG_CONFIG" -fi - -fi -if test -n "$HWLOC_PKG_CONFIG"; then - HWLOC_pkg_min_version=0.9.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $HWLOC_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $HWLOC_pkg_min_version... " >&6; } - if $HWLOC_PKG_CONFIG --atleast-pkgconfig-version $HWLOC_pkg_min_version; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - HWLOC_PKG_CONFIG="" - fi - -fi - - - - - if test "x1" != "x"; then : - cat <<EOF - -### -### Configuring hwloc core -### -EOF -fi - - # If no prefix was defined, set a good value - - - # Unless previously set to "standalone" mode, default to embedded - # mode - if test "$hwloc_mode" = ""; then : - hwloc_mode=embedded -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking hwloc building mode" >&5 -$as_echo_n "checking hwloc building mode... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hwloc_mode" >&5 -$as_echo "$hwloc_mode" >&6; } - - # Get hwloc's absolute top builddir (which may not be the same as - # the real $top_builddir, because we may be building in embedded - # mode). - HWLOC_startdir=`pwd` - if test x"" != "x" -a ! -d ""; then - mkdir -p "" - fi - if test x"" != "x"; then - cd "" - fi - HWLOC_top_builddir=`pwd` - - - # Get hwloc's absolute top srcdir (which may not be the same as - # the real $top_srcdir, because we may be building in embedded - # mode). First, go back to the startdir incase the $srcdir is - # relative. - - cd "$HWLOC_startdir" - cd "$srcdir"/ - HWLOC_top_srcdir="`pwd`" - - - # Go back to where we started - cd "$HWLOC_startdir" - - { $as_echo "$as_me:${as_lineno-$LINENO}: hwloc builddir: $HWLOC_top_builddir" >&5 -$as_echo "$as_me: hwloc builddir: $HWLOC_top_builddir" >&6;} - { $as_echo "$as_me:${as_lineno-$LINENO}: hwloc srcdir: $HWLOC_top_srcdir" >&5 -$as_echo "$as_me: hwloc srcdir: $HWLOC_top_srcdir" >&6;} - if test "$HWLOC_top_builddir" != "$HWLOC_top_srcdir"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Detected VPATH build" >&5 -$as_echo "$as_me: Detected VPATH build" >&6;} - fi - - # Debug mode? - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if want hwloc maintainer support" >&5 -$as_echo_n "checking if want hwloc maintainer support... " >&6; } - hwloc_debug= - - # Unconditionally disable debug mode in embedded mode; if someone - # asks, we can add a configure-time option for it. Disable it - # now, however, because --enable-debug is not even added as an - # option when configuring in embedded mode, and we wouldn't want - # to hijack the enclosing application's --enable-debug configure - # switch. - if test "$hwloc_mode" = "embedded"; then : - hwloc_debug=0 - hwloc_debug_msg="disabled (embedded mode)" -fi - if test "$hwloc_debug" = "" -a "$enable_debug" = "yes"; then : - hwloc_debug=1 - hwloc_debug_msg="enabled" -fi - if test "$hwloc_debug" = ""; then : - hwloc_debug=0 - hwloc_debug_msg="disabled" -fi - # Grr; we use #ifndef for HWLOC_DEBUG! :-( - - if test "$hwloc_debug" = "1"; then : - $as_echo "#define HWLOC_DEBUG 1" >>confdefs.h - -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hwloc_debug_msg" >&5 -$as_echo "$hwloc_debug_msg" >&6; } - - # We need to set a path for header, etc files depending on whether - # we're standalone or embedded. this is taken care of by HWLOC_EMBEDDED. - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hwloc directory prefix" >&5 -$as_echo_n "checking for hwloc directory prefix... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: (none)" >&5 -$as_echo "(none)" >&6; } - - # Note that private/config.h *MUST* be listed first so that it - # becomes the "main" config header file. Any AC-CONFIG-HEADERS - # after that (hwloc/config.h) will only have selective #defines - # replaced, not the entire file. - ac_config_headers="$ac_config_headers include/private/autogen/config.h" - - ac_config_headers="$ac_config_headers include/hwloc/autogen/config.h" - - - # What prefix are we using? - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hwloc symbol prefix" >&5 -$as_echo_n "checking for hwloc symbol prefix... " >&6; } - if test "$hwloc_symbol_prefix_value" = ""; then : - if test "$with_hwloc_symbol_prefix" = ""; then : - hwloc_symbol_prefix_value=hwloc_ -else - hwloc_symbol_prefix_value=$with_hwloc_symbol_prefix -fi -fi - -cat >>confdefs.h <<_ACEOF -#define HWLOC_SYM_PREFIX $hwloc_symbol_prefix_value -_ACEOF - - # Ensure to [] escape the whole next line so that we can get the - # proper tr tokens - hwloc_symbol_prefix_value_caps="`echo $hwloc_symbol_prefix_value | tr '[:lower:]' '[:upper:]'`" - -cat >>confdefs.h <<_ACEOF -#define HWLOC_SYM_PREFIX_CAPS $hwloc_symbol_prefix_value_caps -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hwloc_symbol_prefix_value" >&5 -$as_echo "$hwloc_symbol_prefix_value" >&6; } - - # Give an easy #define to know if we need to transform all the - # hwloc names - - if test "$hwloc_symbol_prefix_value" = "hwloc_"; then : - $as_echo "#define HWLOC_SYM_TRANSFORM 0" >>confdefs.h - -else - $as_echo "#define HWLOC_SYM_TRANSFORM 1" >>confdefs.h - -fi - - # GCC specifics. - if test "x$GCC" = "xyes"; 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. - - - -$as_echo "#define _HPUX_SOURCE 1" >>confdefs.h - - - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - # 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. - # The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 -$as_echo_n "checking size of void *... " >&6; } -if ${ac_cv_sizeof_void_p+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_void_p" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (void *) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_void_p=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 -$as_echo "$ac_cv_sizeof_void_p" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_VOID_P $ac_cv_sizeof_void_p -_ACEOF - - - - # - # Check OS support - # - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which OS support to include" >&5 -$as_echo_n "checking which OS support to include... " >&6; } - case ${target} in - *-*-linux*) - -$as_echo "#define HWLOC_LINUX_SYS 1" >>confdefs.h - - hwloc_linux=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Linux" >&5 -$as_echo "Linux" >&6; } - ;; - *-*-irix*) - -$as_echo "#define HWLOC_IRIX_SYS 1" >>confdefs.h - - hwloc_irix=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: IRIX" >&5 -$as_echo "IRIX" >&6; } - ;; - *-*-darwin*) - -$as_echo "#define HWLOC_DARWIN_SYS 1" >>confdefs.h - - hwloc_darwin=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5 -$as_echo "Darwin" >&6; } - ;; - *-*-solaris*) - -$as_echo "#define HWLOC_SOLARIS_SYS 1" >>confdefs.h - - hwloc_solaris=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Solaris" >&5 -$as_echo "Solaris" >&6; } - ;; - *-*-aix*) - -$as_echo "#define HWLOC_AIX_SYS 1" >>confdefs.h - - hwloc_aix=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: AIX" >&5 -$as_echo "AIX" >&6; } - ;; - *-*-osf*) - -$as_echo "#define HWLOC_OSF_SYS 1" >>confdefs.h - - hwloc_osf=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: OSF" >&5 -$as_echo "OSF" >&6; } - ;; - *-*-hpux*) - -$as_echo "#define HWLOC_HPUX_SYS 1" >>confdefs.h - - hwloc_hpux=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: HP-UX" >&5 -$as_echo "HP-UX" >&6; } - ;; - *-*-mingw*|*-*-cygwin*) - -$as_echo "#define HWLOC_WIN_SYS 1" >>confdefs.h - - hwloc_windows=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Windows" >&5 -$as_echo "Windows" >&6; } - ;; - *-*-*freebsd*) - -$as_echo "#define HWLOC_FREEBSD_SYS 1" >>confdefs.h - - hwloc_freebsd=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: FreeBSD" >&5 -$as_echo "FreeBSD" >&6; } - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Unsupported! ($target)" >&5 -$as_echo "Unsupported! ($target)" >&6; } - -$as_echo "#define HWLOC_UNSUPPORTED_SYS 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ***********************************************************" >&5 -$as_echo "$as_me: WARNING: ***********************************************************" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** hwloc does not support this system." >&5 -$as_echo "$as_me: WARNING: *** hwloc does not support this system." >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** hwloc will *attempt* to build (but it may not work)." >&5 -$as_echo "$as_me: WARNING: *** hwloc will *attempt* to build (but it may not work)." >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** hwloc run-time results may be reduced to showing just one processor." >&5 -$as_echo "$as_me: WARNING: *** hwloc run-time results may be reduced to showing just one processor." >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** You have been warned." >&5 -$as_echo "$as_me: WARNING: *** You have been warned." >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** Pausing to give you time to read this message..." >&5 -$as_echo "$as_me: WARNING: *** Pausing to give you time to read this message..." >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ***********************************************************" >&5 -$as_echo "$as_me: WARNING: ***********************************************************" >&2;} - sleep 10 - ;; - esac - - # - # Check CPU support - # - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which CPU support to include" >&5 -$as_echo_n "checking which CPU support to include... " >&6; } - case ${target} in - i*86-*-*|x86_64-*-*) - case ${ac_cv_sizeof_void_p} in - 4) - -$as_echo "#define HWLOC_X86_32_ARCH 1" >>confdefs.h - - hwloc_x86_32=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: x86_32" >&5 -$as_echo "x86_32" >&6; } - ;; - 8) - -$as_echo "#define HWLOC_X86_64_ARCH 1" >>confdefs.h - - hwloc_x86_64=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: x86_64" >&5 -$as_echo "x86_64" >&6; } - ;; - *) - -$as_echo "#define HWLOC_X86_64_ARCH 1" >>confdefs.h - - hwloc_x86_64=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unknown -- assuming x86_64" >&5 -$as_echo "unknown -- assuming x86_64" >&6; } - ;; - esac - esac - - # The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned long" >&5 -$as_echo_n "checking size of unsigned long... " >&6; } -if ${ac_cv_sizeof_unsigned_long+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned long))" "ac_cv_sizeof_unsigned_long" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_unsigned_long" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (unsigned long) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_unsigned_long=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_long" >&5 -$as_echo "$ac_cv_sizeof_unsigned_long" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_UNSIGNED_LONG $ac_cv_sizeof_unsigned_long -_ACEOF - - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_SIZEOF_UNSIGNED_LONG $ac_cv_sizeof_unsigned_long -_ACEOF - - # The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned int" >&5 -$as_echo_n "checking size of unsigned int... " >&6; } -if ${ac_cv_sizeof_unsigned_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned int))" "ac_cv_sizeof_unsigned_int" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_unsigned_int" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (unsigned int) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_unsigned_int=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_int" >&5 -$as_echo "$ac_cv_sizeof_unsigned_int" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int -_ACEOF - - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int -_ACEOF - - - # - # Check for compiler attributes and visibility - # - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__" >&5 -$as_echo_n "checking for __attribute__... " >&6; } - - if ${hwloc_cv___attribute__+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdlib.h> - /* Check for the longest available __attribute__ (since gcc-2.3) */ - struct foo { - char a; - int x[2] __attribute__ ((__packed__)); - }; - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__=1 -else - hwloc_cv___attribute__=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - if test "$hwloc_cv___attribute__" = "1" ; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <stdlib.h> - /* Check for the longest available __attribute__ (since gcc-2.3) */ - struct foo { - char a; - int x[2] __attribute__ ((__packed__)); - }; - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__=1 -else - hwloc_cv___attribute__=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - -fi - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE $hwloc_cv___attribute__ -_ACEOF - - -# -# Now that we know the compiler support __attribute__ let's check which kind of -# attributed are supported. -# - if test "$hwloc_cv___attribute__" = "0" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(aligned)" >&5 -$as_echo_n "checking for __attribute__(aligned)... " >&6; } - if ${hwloc_cv___attribute__aligned+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -struct foo { char text[4]; } __attribute__ ((__aligned__(8))); -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__aligned=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__aligned=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__aligned=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__aligned" = "1" -a "" != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS " - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__aligned=0 -else - - # - # 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__aligned=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__aligned=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__aligned" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - # - # Ignored by PGI-6.2.5; -- recognized by output-parser - # - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(always_inline)" >&5 -$as_echo_n "checking for __attribute__(always_inline)... " >&6; } - if ${hwloc_cv___attribute__always_inline+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (int arg) __attribute__ ((__always_inline__)); -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__always_inline=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__always_inline=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__always_inline=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__always_inline" = "1" -a "" != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS " - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__always_inline=0 -else - - # - # 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__always_inline=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__always_inline=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__always_inline" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(cold)" >&5 -$as_echo_n "checking for __attribute__(cold)... " >&6; } - if ${hwloc_cv___attribute__cold+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - int foo(int arg1, int arg2) __attribute__ ((__cold__)); - int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__cold=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__cold=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__cold=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__cold" = "1" -a "" != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS " - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__cold=0 -else - - # - # 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__cold=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__cold=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__cold" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(const)" >&5 -$as_echo_n "checking for __attribute__(const)... " >&6; } - if ${hwloc_cv___attribute__const+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - int foo(int arg1, int arg2) __attribute__ ((__const__)); - int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__const=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__const=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__const=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__const" = "1" -a "" != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS " - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__const=0 -else - - # - # 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__const=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__const=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__const" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(deprecated)" >&5 -$as_echo_n "checking for __attribute__(deprecated)... " >&6; } - if ${hwloc_cv___attribute__deprecated+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - int foo(int arg1, int arg2) __attribute__ ((__deprecated__)); - int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__deprecated=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__deprecated=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__deprecated=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__deprecated" = "1" -a "" != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS " - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__deprecated=0 -else - - # - # 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__deprecated=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__deprecated=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__deprecated" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - - 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 - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(format)" >&5 -$as_echo_n "checking for __attribute__(format)... " >&6; } - if ${hwloc_cv___attribute__format+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - int this_printf (void *my_object, const char *my_format, ...) __attribute__ ((__format__ (__printf__, 2, 3))); - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__format=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__format=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__format=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__format" = "1" -a " - 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); - " != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS $HWLOC_ATTRIBUTE_CFLAGS" - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - 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); - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__format=0 -else - - # - # 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__format=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__format=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__format" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(hot)" >&5 -$as_echo_n "checking for __attribute__(hot)... " >&6; } - if ${hwloc_cv___attribute__hot+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - int foo(int arg1, int arg2) __attribute__ ((__hot__)); - int foo(int arg1, int arg2) { return arg1 * arg2 + arg1; } - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__hot=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__hot=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__hot=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__hot" = "1" -a "" != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS " - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__hot=0 -else - - # - # 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__hot=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__hot=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__hot" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(malloc)" >&5 -$as_echo_n "checking for __attribute__(malloc)... " >&6; } - if ${hwloc_cv___attribute__malloc+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#ifdef HAVE_STDLIB_H -# include <stdlib.h> -#endif - int * foo(int arg1) __attribute__ ((__malloc__)); - int * foo(int arg1) { return (int*) malloc(arg1); } - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__malloc=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__malloc=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__malloc=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__malloc" = "1" -a "" != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS " - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__malloc=0 -else - - # - # 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__malloc=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__malloc=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__malloc" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - - # - # 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 - # - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(may_alias)" >&5 -$as_echo_n "checking for __attribute__(may_alias)... " >&6; } - if ${hwloc_cv___attribute__may_alias+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int * p_value __attribute__ ((__may_alias__)); -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__may_alias=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__may_alias=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__may_alias=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__may_alias" = "1" -a "" != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS " - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__may_alias=0 -else - - # - # 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__may_alias=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__may_alias=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__may_alias" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(no_instrument_function)" >&5 -$as_echo_n "checking for __attribute__(no_instrument_function)... " >&6; } - if ${hwloc_cv___attribute__no_instrument_function+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int * foo(int arg1) __attribute__ ((__no_instrument_function__)); -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__no_instrument_function=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__no_instrument_function=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__no_instrument_function=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__no_instrument_function" = "1" -a "" != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS " - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__no_instrument_function=0 -else - - # - # 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__no_instrument_function=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__no_instrument_function=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__no_instrument_function" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - - # - # 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 - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(nonnull)" >&5 -$as_echo_n "checking for __attribute__(nonnull)... " >&6; } - if ${hwloc_cv___attribute__nonnull+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - int square(int *arg) __attribute__ ((__nonnull__)); - int square(int *arg) { return *arg; } - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__nonnull=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__nonnull=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__nonnull=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__nonnull" = "1" -a " - 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); - " != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS $HWLOC_ATTRIBUTE_CFLAGS" - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - 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); - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__nonnull=0 -else - - # - # 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__nonnull=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__nonnull=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__nonnull" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(noreturn)" >&5 -$as_echo_n "checking for __attribute__(noreturn)... " >&6; } - if ${hwloc_cv___attribute__noreturn+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif -#ifdef HAVE_STDLIB_H -# include <stdlib.h> -#endif - void fatal(int arg1) __attribute__ ((__noreturn__)); - void fatal(int arg1) { exit(arg1); } - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__noreturn=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__noreturn=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__noreturn=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__noreturn" = "1" -a "" != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS " - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__noreturn=0 -else - - # - # 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__noreturn=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__noreturn=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__noreturn" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(packed)" >&5 -$as_echo_n "checking for __attribute__(packed)... " >&6; } - if ${hwloc_cv___attribute__packed+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - struct foo { - char a; - int x[2] __attribute__ ((__packed__)); - }; - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__packed=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__packed=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__packed=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__packed" = "1" -a "" != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS " - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__packed=0 -else - - # - # 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__packed=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__packed=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__packed" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(pure)" >&5 -$as_echo_n "checking for __attribute__(pure)... " >&6; } - if ${hwloc_cv___attribute__pure+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - int square(int arg) __attribute__ ((__pure__)); - int square(int arg) { return arg * arg; } - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__pure=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__pure=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__pure=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__pure" = "1" -a "" != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS " - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__pure=0 -else - - # - # 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__pure=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__pure=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__pure" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - # - # 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 - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(sentinel)" >&5 -$as_echo_n "checking for __attribute__(sentinel)... " >&6; } - if ${hwloc_cv___attribute__sentinel+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - int my_execlp(const char * file, const char *arg, ...) __attribute__ ((__sentinel__)); - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__sentinel=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__sentinel=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__sentinel=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__sentinel" = "1" -a " - 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); - " != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS $HWLOC_ATTRIBUTE_CFLAGS" - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - 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); - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__sentinel=0 -else - - # - # 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__sentinel=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__sentinel=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__sentinel" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(unused)" >&5 -$as_echo_n "checking for __attribute__(unused)... " >&6; } - if ${hwloc_cv___attribute__unused+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - int square(int arg1 __attribute__ ((__unused__)), int arg2); - int square(int arg1, int arg2) { return arg2; } - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__unused=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__unused=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__unused=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__unused" = "1" -a "" != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS " - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__unused=0 -else - - # - # 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__unused=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__unused=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__unused" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - - # - # 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 - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(warn_unused_result)" >&5 -$as_echo_n "checking for __attribute__(warn_unused_result)... " >&6; } - if ${hwloc_cv___attribute__warn_unused_result+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - int foo(int arg) __attribute__ ((__warn_unused_result__)); - int foo(int arg) { return arg + 3; } - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__warn_unused_result=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__warn_unused_result=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__warn_unused_result=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__warn_unused_result" = "1" -a " - 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); - " != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS $HWLOC_ATTRIBUTE_CFLAGS" - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - 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); - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__warn_unused_result=0 -else - - # - # 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__warn_unused_result=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__warn_unused_result=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__warn_unused_result" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__(weak_alias)" >&5 -$as_echo_n "checking for __attribute__(weak_alias)... " >&6; } - if ${hwloc_cv___attribute__weak_alias+:} false; then : - $as_echo_n "(cached) " >&6 -else - - # - # Try to compile using the C compiler - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - int foo(int arg); - int foo(int arg) { return arg + 3; } - int foo2(int arg) __attribute__ ((__weak__, __alias__("foo"))); - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # - # 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__weak_alias=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__weak_alias=0 - break; - fi - done - fi - - -else - hwloc_cv___attribute__weak_alias=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - # - # If the attribute is supported by both compilers, - # try to recompile a *cross-check*, IFF defined. - # - if test '(' "$hwloc_cv___attribute__weak_alias" = "1" -a "" != "" ')' ; then - ac_c_werror_flag_safe=$ac_c_werror_flag - ac_c_werror_flag="yes" - CFLAGS_safe=$CFLAGS - CFLAGS="$CFLAGS " - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - int i=4711; - i=usage(&i); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - hwloc_cv___attribute__weak_alias=0 -else - - # - # 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__weak_alias=1 - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - if test -s conftest.err ; then - for i in ignore skip ; do - $GREP -iq $i conftest.err - if test "$?" = "0" ; then - hwloc_cv___attribute__weak_alias=0 - break; - fi - done - fi - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - ac_c_werror_flag=$ac_c_werror_flag_safe - CFLAGS=$CFLAGS_safe - fi - -fi - - - if test "$hwloc_cv___attribute__weak_alias" = "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - - - fi - - # Now that all the values are set, define them - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_ALIGNED $hwloc_cv___attribute__aligned -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_ALWAYS_INLINE $hwloc_cv___attribute__always_inline -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_COLD $hwloc_cv___attribute__cold -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_CONST $hwloc_cv___attribute__const -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_DEPRECATED $hwloc_cv___attribute__deprecated -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_FORMAT $hwloc_cv___attribute__format -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_HOT $hwloc_cv___attribute__hot -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_MALLOC $hwloc_cv___attribute__malloc -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_MAY_ALIAS $hwloc_cv___attribute__may_alias -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_NO_INSTRUMENT_FUNCTION $hwloc_cv___attribute__no_instrument_function -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_NONNULL $hwloc_cv___attribute__nonnull -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_NORETURN $hwloc_cv___attribute__noreturn -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_PACKED $hwloc_cv___attribute__packed -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_PURE $hwloc_cv___attribute__pure -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_SENTINEL $hwloc_cv___attribute__sentinel -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_UNUSED $hwloc_cv___attribute__unused -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_WARN_UNUSED_RESULT $hwloc_cv___attribute__warn_unused_result -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_HAVE_ATTRIBUTE_WEAK_ALIAS $hwloc_cv___attribute__weak_alias -_ACEOF - - - - # Be safe for systems that have ancient Autoconf's (e.g., RHEL5) - - - msg="whether to enable visibility" - # Check if the compiler has support for visibility, like some - # versions of gcc, icc. - # Check whether --enable-visibility was given. -if test "${enable_visibility+set}" = set; then : - enableval=$enable_visibility; -fi - - - case ${target} in - *-*-aix*|*-*-mingw*|*-*-cygwin*|*-*-hpux*) - enable_visibility=no - ;; - esac - - if test "$enable_visibility" = "no"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking $msg" >&5 -$as_echo_n "checking $msg... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (disabled)" >&5 -$as_echo "no (disabled)" >&6; } - have_visibility=0 - else - CFLAGS_orig="$CFLAGS" - CFLAGS="$CFLAGS_orig -fvisibility=hidden" - hwloc_add= - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -fvisibility" >&5 -$as_echo_n "checking if $CC supports -fvisibility... " >&6; } -if ${hwloc_cv_cc_fvisibility+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - __attribute__((visibility("default"))) int foo; - -int -main () -{ -int i; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - hwloc_cv_cc_fvisibility=yes -else - if test -s conftest.err ; then - $GREP -iq "visibility" conftest.err - if test "$?" = "0" ; then - hwloc_cv_cc_fvisibility=no - else - hwloc_cv_cc_fvisibility=yes - fi - else - hwloc_cv_cc_fvisibility=yes - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hwloc_cv_cc_fvisibility" >&5 -$as_echo "$hwloc_cv_cc_fvisibility" >&6; } - - if test "$hwloc_cv_cc_fvisibility" = "yes" ; then - hwloc_add=" -fvisibility=hidden" - have_visibility=1 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking $msg" >&5 -$as_echo_n "checking $msg... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (via$hwloc_add)" >&5 -$as_echo "yes (via$hwloc_add)" >&6; } - elif test "$enable_visibility" = "yes"; then - as_fn_error $? "Symbol visibility support requested but compiler does not seem to support it. Aborting" "$LINENO" 5 - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking $msg" >&5 -$as_echo_n "checking $msg... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (unsupported)" >&5 -$as_echo "no (unsupported)" >&6; } - have_visibility=0 - fi - CFLAGS=$CFLAGS_orig - HWLOC_VISIBILITY_CFLAGS=$hwloc_add - unset hwloc_add - fi - - -cat >>confdefs.h <<_ACEOF -#define HWLOC_C_HAVE_VISIBILITY $have_visibility -_ACEOF - - - HWLOC_CFLAGS="$HWLOC_FLAGS $HWLOC_VISIBILITY_CFLAGS" - if test "$HWLOC_VISIBILITY_CFLAGS" != ""; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"$HWLOC_VISIBILITY_CFLAGS\" has been added to the hwloc CFLAGS" >&5 -$as_echo "$as_me: WARNING: \"$HWLOC_VISIBILITY_CFLAGS\" has been added to the hwloc CFLAGS" >&2;} -fi - - # - # Check for inline compatibility support - # - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline compatibility keyword" >&5 -$as_echo_n "checking for inline compatibility keyword... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -static void __inline__ f(void) { } -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - __hwloc_inline=__inline__ -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -static void __inline f(void) {} -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - __hwloc_inline=__inline -else - __hwloc_inline= - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $__hwloc_inline" >&5 -$as_echo "$__hwloc_inline" >&6; } - -cat >>confdefs.h <<_ACEOF -#define __hwloc_inline $__hwloc_inline -_ACEOF - - - # - # Now detect support - # - - hwloc_strncasecmp=strncmp - for ac_func in strncasecmp -do : - ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp" -if test "x$ac_cv_func_strncasecmp" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STRNCASECMP 1 -_ACEOF - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether function strncasecmp is declared" >&5 -$as_echo_n "checking whether function strncasecmp is declared... " >&6; } - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -strncasecmp(1,2,3,4,5,6,7,8,9,10); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - hwloc_strncasecmp=strncasecmp - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - -fi -done - - -cat >>confdefs.h <<_ACEOF -#define hwloc_strncasecmp $hwloc_strncasecmp -_ACEOF - - - for ac_func in strftime -do : - ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" -if test "x$ac_cv_func_strftime" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STRFTIME 1 -_ACEOF - -fi -done - - for ac_func in setlocale -do : - ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale" -if test "x$ac_cv_func_setlocale" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SETLOCALE 1 -_ACEOF - -fi -done - - - ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" -if test "x$ac_cv_header_stdint_h" = xyes; then : - - -$as_echo "#define HWLOC_HAVE_STDINT_H 1" >>confdefs.h - - -fi - - - for ac_header in sys/mman.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_mman_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_MMAN_H 1 -_ACEOF - -fi - -done - - - ac_fn_c_check_type "$LINENO" "KAFFINITY" "ac_cv_type_KAFFINITY" "#include <windows.h> -" -if test "x$ac_cv_type_KAFFINITY" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_KAFFINITY 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "PROCESSOR_CACHE_TYPE" "ac_cv_type_PROCESSOR_CACHE_TYPE" "#include <windows.h> -" -if test "x$ac_cv_type_PROCESSOR_CACHE_TYPE" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_PROCESSOR_CACHE_TYPE 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "CACHE_DESCRIPTOR" "ac_cv_type_CACHE_DESCRIPTOR" "#include <windows.h> -" -if test "x$ac_cv_type_CACHE_DESCRIPTOR" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_CACHE_DESCRIPTOR 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "LOGICAL_PROCESSOR_RELATIONSHIP" "ac_cv_type_LOGICAL_PROCESSOR_RELATIONSHIP" "#include <windows.h> -" -if test "x$ac_cv_type_LOGICAL_PROCESSOR_RELATIONSHIP" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_LOGICAL_PROCESSOR_RELATIONSHIP 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "RelationProcessorPackage" "ac_cv_type_RelationProcessorPackage" "#include <windows.h> -" -if test "x$ac_cv_type_RelationProcessorPackage" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_RELATIONPROCESSORPACKAGE 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "SYSTEM_LOGICAL_PROCESSOR_INFORMATION" "ac_cv_type_SYSTEM_LOGICAL_PROCESSOR_INFORMATION" "#include <windows.h> -" -if test "x$ac_cv_type_SYSTEM_LOGICAL_PROCESSOR_INFORMATION" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "GROUP_AFFINITY" "ac_cv_type_GROUP_AFFINITY" "#include <windows.h> -" -if test "x$ac_cv_type_GROUP_AFFINITY" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_GROUP_AFFINITY 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "PROCESSOR_RELATIONSHIP" "ac_cv_type_PROCESSOR_RELATIONSHIP" "#include <windows.h> -" -if test "x$ac_cv_type_PROCESSOR_RELATIONSHIP" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_PROCESSOR_RELATIONSHIP 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "NUMA_NODE_RELATIONSHIP" "ac_cv_type_NUMA_NODE_RELATIONSHIP" "#include <windows.h> -" -if test "x$ac_cv_type_NUMA_NODE_RELATIONSHIP" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_NUMA_NODE_RELATIONSHIP 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "CACHE_RELATIONSHIP" "ac_cv_type_CACHE_RELATIONSHIP" "#include <windows.h> -" -if test "x$ac_cv_type_CACHE_RELATIONSHIP" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_CACHE_RELATIONSHIP 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "PROCESSOR_GROUP_INFO" "ac_cv_type_PROCESSOR_GROUP_INFO" "#include <windows.h> -" -if test "x$ac_cv_type_PROCESSOR_GROUP_INFO" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_PROCESSOR_GROUP_INFO 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "GROUP_RELATIONSHIP" "ac_cv_type_GROUP_RELATIONSHIP" "#include <windows.h> -" -if test "x$ac_cv_type_GROUP_RELATIONSHIP" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_GROUP_RELATIONSHIP 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX" "ac_cv_type_SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX" "#include <windows.h> -" -if test "x$ac_cv_type_SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "PSAPI_WORKING_SET_EX_BLOCK" "ac_cv_type_PSAPI_WORKING_SET_EX_BLOCK" "#include <windows.h> -" -if test "x$ac_cv_type_PSAPI_WORKING_SET_EX_BLOCK" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_PSAPI_WORKING_SET_EX_BLOCK 1 -_ACEOF - - -fi -ac_fn_c_check_type "$LINENO" "PSAPI_WORKING_SET_EX_INFORMATION" "ac_cv_type_PSAPI_WORKING_SET_EX_INFORMATION" "#include <windows.h> -" -if test "x$ac_cv_type_PSAPI_WORKING_SET_EX_INFORMATION" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_PSAPI_WORKING_SET_EX_INFORMATION 1 -_ACEOF - - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lgdi32" >&5 -$as_echo_n "checking for main in -lgdi32... " >&6; } -if ${ac_cv_lib_gdi32_main+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgdi32 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -int -main () -{ -return main (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_gdi32_main=yes -else - ac_cv_lib_gdi32_main=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gdi32_main" >&5 -$as_echo "$ac_cv_lib_gdi32_main" >&6; } -if test "x$ac_cv_lib_gdi32_main" = xyes; then : - HWLOC_LIBS="-lgdi32 $HWLOC_LIBS" - -$as_echo "#define HAVE_LIBGDI32 1" >>confdefs.h - -fi - - - ac_fn_c_check_header_mongrel "$LINENO" "windows.h" "ac_cv_header_windows_h" "$ac_includes_default" -if test "x$ac_cv_header_windows_h" = xyes; then : - - -$as_echo "#define HWLOC_HAVE_WINDOWS_H 1" >>confdefs.h - - -fi - - - - for ac_header in sys/lgrp_user.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/lgrp_user.h" "ac_cv_header_sys_lgrp_user_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_lgrp_user_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_LGRP_USER_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lgrp_latency_cookie in -llgrp" >&5 -$as_echo_n "checking for lgrp_latency_cookie in -llgrp... " >&6; } -if ${ac_cv_lib_lgrp_lgrp_latency_cookie+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-llgrp $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char lgrp_latency_cookie (); -int -main () -{ -return lgrp_latency_cookie (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_lgrp_lgrp_latency_cookie=yes -else - ac_cv_lib_lgrp_lgrp_latency_cookie=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lgrp_lgrp_latency_cookie" >&5 -$as_echo "$ac_cv_lib_lgrp_lgrp_latency_cookie" >&6; } -if test "x$ac_cv_lib_lgrp_lgrp_latency_cookie" = xyes; then : - HWLOC_LIBS="-llgrp $HWLOC_LIBS" - -$as_echo "#define HAVE_LIBLGRP 1" >>confdefs.h - -fi - - -fi - -done - - for ac_header in kstat.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "kstat.h" "ac_cv_header_kstat_h" "$ac_includes_default" -if test "x$ac_cv_header_kstat_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_KSTAT_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lkstat" >&5 -$as_echo_n "checking for main in -lkstat... " >&6; } -if ${ac_cv_lib_kstat_main+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lkstat $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -int -main () -{ -return main (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_kstat_main=yes -else - ac_cv_lib_kstat_main=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_main" >&5 -$as_echo "$ac_cv_lib_kstat_main" >&6; } -if test "x$ac_cv_lib_kstat_main" = xyes; then : - HWLOC_LIBS="-lkstat $HWLOC_LIBS" - -$as_echo "#define HAVE_LIBKSTAT 1" >>confdefs.h - -fi - - -fi - -done - - - ac_fn_c_check_decl "$LINENO" "_SC_NPROCESSORS_ONLN" "ac_cv_have_decl__SC_NPROCESSORS_ONLN" "#include <unistd.h> -" -if test "x$ac_cv_have_decl__SC_NPROCESSORS_ONLN" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL__SC_NPROCESSORS_ONLN $ac_have_decl -_ACEOF -if test $ac_have_decl = 1; then : - -else - : -fi -ac_fn_c_check_decl "$LINENO" "_SC_NPROCESSORS_CONF" "ac_cv_have_decl__SC_NPROCESSORS_CONF" "#include <unistd.h> -" -if test "x$ac_cv_have_decl__SC_NPROCESSORS_CONF" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL__SC_NPROCESSORS_CONF $ac_have_decl -_ACEOF -if test $ac_have_decl = 1; then : - -else - : -fi -ac_fn_c_check_decl "$LINENO" "_SC_NPROC_ONLN" "ac_cv_have_decl__SC_NPROC_ONLN" "#include <unistd.h> -" -if test "x$ac_cv_have_decl__SC_NPROC_ONLN" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL__SC_NPROC_ONLN $ac_have_decl -_ACEOF -if test $ac_have_decl = 1; then : - -else - : -fi -ac_fn_c_check_decl "$LINENO" "_SC_NPROC_CONF" "ac_cv_have_decl__SC_NPROC_CONF" "#include <unistd.h> -" -if test "x$ac_cv_have_decl__SC_NPROC_CONF" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL__SC_NPROC_CONF $ac_have_decl -_ACEOF -if test $ac_have_decl = 1; then : - -else - : -fi -ac_fn_c_check_decl "$LINENO" "_SC_LARGE_PAGESIZE" "ac_cv_have_decl__SC_LARGE_PAGESIZE" "#include <unistd.h> -" -if test "x$ac_cv_have_decl__SC_LARGE_PAGESIZE" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL__SC_LARGE_PAGESIZE $ac_have_decl -_ACEOF -if test $ac_have_decl = 1; then : - -else - : -fi - - - for ac_header in mach/mach_host.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "mach/mach_host.h" "ac_cv_header_mach_mach_host_h" "$ac_includes_default" -if test "x$ac_cv_header_mach_mach_host_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MACH_MACH_HOST_H 1 -_ACEOF - -fi - -done - - for ac_header in mach/mach_init.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "mach/mach_init.h" "ac_cv_header_mach_mach_init_h" "$ac_includes_default" -if test "x$ac_cv_header_mach_mach_init_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MACH_MACH_INIT_H 1 -_ACEOF - - for ac_func in host_info -do : - ac_fn_c_check_func "$LINENO" "host_info" "ac_cv_func_host_info" -if test "x$ac_cv_func_host_info" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_HOST_INFO 1 -_ACEOF - -fi -done - - -fi - -done - - - for ac_header in sys/param.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_param_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_PARAM_H 1 -_ACEOF - -fi - -done - - for ac_header in sys/sysctl.h -do : - ac_fn_c_check_header_compile "$LINENO" "sys/sysctl.h" "ac_cv_header_sys_sysctl_h" " - $ac_includes_default - #if HAVE_SYS_PARAM_H - #include <sys/param.h> - #endif - -" -if test "x$ac_cv_header_sys_sysctl_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_SYSCTL_H 1 -_ACEOF - - ac_fn_c_check_decl "$LINENO" "CTL_HW" "ac_cv_have_decl_CTL_HW" " - #if HAVE_SYS_PARAM_H - #include <sys/param.h> - #endif - #include <sys/sysctl.h> - -" -if test "x$ac_cv_have_decl_CTL_HW" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_CTL_HW $ac_have_decl -_ACEOF -ac_fn_c_check_decl "$LINENO" "HW_NCPU" "ac_cv_have_decl_HW_NCPU" " - #if HAVE_SYS_PARAM_H - #include <sys/param.h> - #endif - #include <sys/sysctl.h> - -" -if test "x$ac_cv_have_decl_HW_NCPU" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_HW_NCPU $ac_have_decl -_ACEOF - - -fi - -done - - for ac_func in sysctl sysctlbyname -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - case ${target} in - *-*-mingw*|*-*-cygwin*) - hwloc_pid_t=HANDLE - hwloc_thread_t=HANDLE - ;; - *) - hwloc_pid_t=pid_t - ac_fn_c_check_type "$LINENO" "pthread_t" "ac_cv_type_pthread_t" "#include <pthread.h> -" -if test "x$ac_cv_type_pthread_t" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_PTHREAD_T 1 -_ACEOF - -hwloc_thread_t=pthread_t -else - : -fi - - ;; - esac - -cat >>confdefs.h <<_ACEOF -#define hwloc_pid_t $hwloc_pid_t -_ACEOF - - if test "x$hwloc_thread_t" != "x" ; then - -cat >>confdefs.h <<_ACEOF -#define hwloc_thread_t $hwloc_thread_t -_ACEOF - - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether function sched_setaffinity is declared" >&5 -$as_echo_n "checking whether function sched_setaffinity is declared... " >&6; } - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define _GNU_SOURCE -#include <sched.h> - - -int -main () -{ -sched_setaffinity(1,2,3,4,5,6,7,8,9,10); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for old prototype of sched_setaffinity" >&5 -$as_echo_n "checking for old prototype of sched_setaffinity... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #define _GNU_SOURCE - #include <sched.h> - static unsigned long mask; - -int -main () -{ - sched_setaffinity(0, (void*) &mask); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HWLOC_HAVE_OLD_SCHED_SETAFFINITY 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working CPU_SET" >&5 -$as_echo_n "checking for working CPU_SET... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include <sched.h> - cpu_set_t set; - -int -main () -{ - CPU_ZERO(&set); CPU_SET(0, &set); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -$as_echo "#define HWLOC_HAVE_CPU_SET 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working CPU_SET_S" >&5 -$as_echo_n "checking for working CPU_SET_S... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include <sched.h> - cpu_set_t *set; - -int -main () -{ - - set = CPU_ALLOC(1024); - CPU_ZERO_S(CPU_ALLOC_SIZE(1024), set); - CPU_SET_S(CPU_ALLOC_SIZE(1024), 0, set); - CPU_FREE(set); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -$as_echo "#define HWLOC_HAVE_CPU_SET_S 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working _syscall3" >&5 -$as_echo_n "checking for working _syscall3... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include <linux/unistd.h> - #include <errno.h> - #define __NR_hwloc_test 123 - _syscall3(int, hwloc_test, int, param1, int, param2, int, param3); - -int -main () -{ - hwloc_test(1, 2, 3); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -$as_echo "#define HWLOC_HAVE__SYSCALL3 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - - # Check for kerrighed, but don't abort if not found. It's illegal - # to pass in an empty 3rd argument, but we trust the output of - # pkg-config, so just give it a value that will always work: - # printf. - - - HWLOC_pkg_failed=no - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for KERRIGHED" >&5 -$as_echo_n "checking for KERRIGHED... " >&6; } - - if test -n "$HWLOC_PKG_CONFIG"; then - if test -n "$HWLOC_KERRIGHED_CFLAGS"; then - HWLOC_pkg_cv_HWLOC_KERRIGHED_CFLAGS="$HWLOC_KERRIGHED_CFLAGS" - else - if test -n "$HWLOC_PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$HWLOC_PKG_CONFIG --exists --silence-errors \"kerrighed >= 2.0\""; } >&5 - ($HWLOC_PKG_CONFIG --exists --silence-errors "kerrighed >= 2.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - HWLOC_pkg_cv_HWLOC_KERRIGHED_CFLAGS=`$HWLOC_PKG_CONFIG --cflags "kerrighed >= 2.0" 2>/dev/null` - else - HWLOC_pkg_failed=yes -fi - fi -else - HWLOC_pkg_failed=untried -fi - - if test -n "$HWLOC_PKG_CONFIG"; then - if test -n "$HWLOC_KERRIGHED_LIBS"; then - HWLOC_pkg_cv_HWLOC_KERRIGHED_LIBS="$HWLOC_KERRIGHED_LIBS" - else - if test -n "$HWLOC_PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$HWLOC_PKG_CONFIG --exists --silence-errors \"kerrighed >= 2.0\""; } >&5 - ($HWLOC_PKG_CONFIG --exists --silence-errors "kerrighed >= 2.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - HWLOC_pkg_cv_HWLOC_KERRIGHED_LIBS=`$HWLOC_PKG_CONFIG --libs "kerrighed >= 2.0" 2>/dev/null` - else - HWLOC_pkg_failed=yes -fi - fi -else - HWLOC_pkg_failed=untried -fi - - - - - # Check for failure of pkg-config - if test $HWLOC_pkg_failed = yes; then - -if $HWLOC_PKG_CONFIG --atleast-pkgconfig-version 0.20; then - HWLOC_pkg_short_errors_supported=yes -else - HWLOC_pkg_short_errors_supported=no -fi - if test $HWLOC_pkg_short_errors_supported = yes; then - HWLOC_KERRIGHED_PKG_ERRORS=`$HWLOC_PKG_CONFIG --short-errors --errors-to-stdout --print-errors "kerrighed >= 2.0" 2>&1` - else - HWLOC_KERRIGHED_PKG_ERRORS=`$HWLOC_PKG_CONFIG --errors-to-stdout --print-errors "kerrighed >= 2.0" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$HWLOC_KERRIGHED_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - : - elif test $HWLOC_pkg_failed = untried; then - : - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - # If we got good results from pkg-config, check that they - # actually work (i.e., that we can link against the resulting - # $LIBS). The canonical example why we do this is if - # pkg-config returns 64 bit libraries but ./configure was run - # with CFLAGS=-m32 LDFLAGS=-m32. pkg-config gave us valid - # results, but we'll fail if we try to link. So detect that - # failure now. - hwloc_cflags_save=$CFLAGS - hwloc_libs_save=$LIBS - CFLAGS="$CFLAGS $HWLOC_pkg_cv_HWLOC_KERRIGHED_CFLAGS" - LIBS="$LIBS $HWLOC_pkg_cv_HWLOC_KERRIGHED_LIBS" - ac_fn_c_check_func "$LINENO" "printf" "ac_cv_func_printf" -if test "x$ac_cv_func_printf" = xyes; then : - hwloc_result=yes -else - hwloc_result=no -fi - - CFLAGS=$hwloc_cflags_save - LIBS=$hwloc_libs_save - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for final KERRIGHED support" >&5 -$as_echo_n "checking for final KERRIGHED support... " >&6; } - if test "$hwloc_result" = "yes"; then : - HWLOC_KERRIGHED_CFLAGS=$HWLOC_pkg_cv_HWLOC_KERRIGHED_CFLAGS - HWLOC_KERRIGHED_LIBS=$HWLOC_pkg_cv_HWLOC_KERRIGHED_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - : -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - : -fi - fi - - for ac_prog in lib -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_HWLOC_MS_LIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $HWLOC_MS_LIB in - [\\/]* | ?:[\\/]*) - ac_cv_path_HWLOC_MS_LIB="$HWLOC_MS_LIB" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_HWLOC_MS_LIB="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -HWLOC_MS_LIB=$ac_cv_path_HWLOC_MS_LIB -if test -n "$HWLOC_MS_LIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HWLOC_MS_LIB" >&5 -$as_echo "$HWLOC_MS_LIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$HWLOC_MS_LIB" && break -done - - - - # Extract the first word of "bash", so it can be a program name with args. -set dummy bash; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_BASH+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $BASH in - [\\/]* | ?:[\\/]*) - ac_cv_path_BASH="$BASH" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_BASH="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -BASH=$ac_cv_path_BASH -if test -n "$BASH"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BASH" >&5 -$as_echo "$BASH" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - for ac_func in ffs -do : - ac_fn_c_check_func "$LINENO" "ffs" "ac_cv_func_ffs" -if test "x$ac_cv_func_ffs" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FFS 1 -_ACEOF - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether function ffs is declared" >&5 -$as_echo_n "checking whether function ffs is declared... " >&6; } - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -ffs(1,2,3,4,5,6,7,8,9,10); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - -$as_echo "#define HWLOC_HAVE_DECL_FFS 1" >>confdefs.h - - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - -$as_echo "#define HWLOC_HAVE_FFS 1" >>confdefs.h - - -fi -done - - for ac_func in ffsl -do : - ac_fn_c_check_func "$LINENO" "ffsl" "ac_cv_func_ffsl" -if test "x$ac_cv_func_ffsl" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FFSL 1 -_ACEOF - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether function ffsl is declared" >&5 -$as_echo_n "checking whether function ffsl is declared... " >&6; } - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -ffsl(1,2,3,4,5,6,7,8,9,10); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - -$as_echo "#define HWLOC_HAVE_DECL_FFSL 1" >>confdefs.h - - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - -$as_echo "#define HWLOC_HAVE_FFSL 1" >>confdefs.h - - -fi -done - - - for ac_func in fls -do : - ac_fn_c_check_func "$LINENO" "fls" "ac_cv_func_fls" -if test "x$ac_cv_func_fls" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FLS 1 -_ACEOF - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether function fls is declared" >&5 -$as_echo_n "checking whether function fls is declared... " >&6; } - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -fls(1,2,3,4,5,6,7,8,9,10); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - -$as_echo "#define HWLOC_HAVE_DECL_FLS 1" >>confdefs.h - - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - -$as_echo "#define HWLOC_HAVE_FLS 1" >>confdefs.h - - -fi -done - - for ac_func in flsl -do : - ac_fn_c_check_func "$LINENO" "flsl" "ac_cv_func_flsl" -if test "x$ac_cv_func_flsl" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FLSL 1 -_ACEOF - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether function flsl is declared" >&5 -$as_echo_n "checking whether function flsl is declared... " >&6; } - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -flsl(1,2,3,4,5,6,7,8,9,10); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - -$as_echo "#define HWLOC_HAVE_DECL_FLSL 1" >>confdefs.h - - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - -$as_echo "#define HWLOC_HAVE_FLSL 1" >>confdefs.h - - -fi -done - - - for ac_func in clz -do : - ac_fn_c_check_func "$LINENO" "clz" "ac_cv_func_clz" -if test "x$ac_cv_func_clz" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_CLZ 1 -_ACEOF - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether function clz is declared" >&5 -$as_echo_n "checking whether function clz is declared... " >&6; } - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -clz(1,2,3,4,5,6,7,8,9,10); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - -$as_echo "#define HWLOC_HAVE_DECL_CLZ 1" >>confdefs.h - - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - -$as_echo "#define HWLOC_HAVE_CLZ 1" >>confdefs.h - - -fi -done - - for ac_func in clzl -do : - ac_fn_c_check_func "$LINENO" "clzl" "ac_cv_func_clzl" -if test "x$ac_cv_func_clzl" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_CLZL 1 -_ACEOF - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether function clzl is declared" >&5 -$as_echo_n "checking whether function clzl is declared... " >&6; } - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -clzl(1,2,3,4,5,6,7,8,9,10); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - -$as_echo "#define HWLOC_HAVE_DECL_CLZL 1" >>confdefs.h - - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - -$as_echo "#define HWLOC_HAVE_CLZL 1" >>confdefs.h - - -fi -done - - - for ac_func in openat -do : - ac_fn_c_check_func "$LINENO" "openat" "ac_cv_func_openat" -if test "x$ac_cv_func_openat" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_OPENAT 1 -_ACEOF - hwloc_have_openat=yes -fi -done - - - for ac_header in malloc.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "malloc.h" "ac_cv_header_malloc_h" "$ac_includes_default" -if test "x$ac_cv_header_malloc_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MALLOC_H 1 -_ACEOF - -fi - -done - - for ac_func in getpagesize memalign posix_memalign -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - for ac_header in sys/utsname.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/utsname.h" "ac_cv_header_sys_utsname_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_utsname_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_UTSNAME_H 1 -_ACEOF - -fi - -done - - for ac_func in uname -do : - ac_fn_c_check_func "$LINENO" "uname" "ac_cv_func_uname" -if test "x$ac_cv_func_uname" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_UNAME 1 -_ACEOF - -fi -done - - - # set_mempolicy and mbind support - for ac_header in numaif.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "numaif.h" "ac_cv_header_numaif_h" "$ac_includes_default" -if test "x$ac_cv_header_numaif_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_NUMAIF_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for set_mempolicy in -lnuma" >&5 -$as_echo_n "checking for set_mempolicy in -lnuma... " >&6; } -if ${ac_cv_lib_numa_set_mempolicy+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnuma $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char set_mempolicy (); -int -main () -{ -return set_mempolicy (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_numa_set_mempolicy=yes -else - ac_cv_lib_numa_set_mempolicy=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_numa_set_mempolicy" >&5 -$as_echo "$ac_cv_lib_numa_set_mempolicy" >&6; } -if test "x$ac_cv_lib_numa_set_mempolicy" = xyes; then : - - enable_set_mempolicy=yes - HWLOC_LINUX_LIBNUMA_LIBS="-lnuma" - - -$as_echo "#define HWLOC_HAVE_SET_MEMPOLICY 1" >>confdefs.h - - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mbind in -lnuma" >&5 -$as_echo_n "checking for mbind in -lnuma... " >&6; } -if ${ac_cv_lib_numa_mbind+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnuma $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char mbind (); -int -main () -{ -return mbind (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_numa_mbind=yes -else - ac_cv_lib_numa_mbind=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_numa_mbind" >&5 -$as_echo "$ac_cv_lib_numa_mbind" >&6; } -if test "x$ac_cv_lib_numa_mbind" = xyes; then : - - enable_mbind=yes - HWLOC_LINUX_LIBNUMA_LIBS="-lnuma" - - -$as_echo "#define HWLOC_HAVE_MBIND 1" >>confdefs.h - - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for migrate_pages in -lnuma" >&5 -$as_echo_n "checking for migrate_pages in -lnuma... " >&6; } -if ${ac_cv_lib_numa_migrate_pages+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnuma $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char migrate_pages (); -int -main () -{ -return migrate_pages (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_numa_migrate_pages=yes -else - ac_cv_lib_numa_migrate_pages=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_numa_migrate_pages" >&5 -$as_echo "$ac_cv_lib_numa_migrate_pages" >&6; } -if test "x$ac_cv_lib_numa_migrate_pages" = xyes; then : - - enable_migrate_pages=yes - HWLOC_LINUX_LIBNUMA_LIBS="-lnuma" - - -$as_echo "#define HWLOC_HAVE_MIGRATE_PAGES 1" >>confdefs.h - - -fi - - -fi - -done - - - for ac_header in pthread_np.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "pthread_np.h" "ac_cv_header_pthread_np_h" "$ac_includes_default" -if test "x$ac_cv_header_pthread_np_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_PTHREAD_NP_H 1 -_ACEOF - -fi - -done - - ac_fn_c_check_decl "$LINENO" "pthread_setaffinity_np" "ac_cv_have_decl_pthread_setaffinity_np" " - #include <pthread.h> - #ifdef HAVE_PTHREAD_NP_H - # include <pthread_np.h> - #endif - -" -if test "x$ac_cv_have_decl_pthread_setaffinity_np" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_PTHREAD_SETAFFINITY_NP $ac_have_decl -_ACEOF -if test $ac_have_decl = 1; then : - -else - : -fi - - ac_fn_c_check_decl "$LINENO" "pthread_getaffinity_np" "ac_cv_have_decl_pthread_getaffinity_np" " - #include <pthread.h> - #ifdef HAVE_PTHREAD_NP_H - # include <pthread_np.h> - #endif - -" -if test "x$ac_cv_have_decl_pthread_getaffinity_np" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_PTHREAD_GETAFFINITY_NP $ac_have_decl -_ACEOF -if test $ac_have_decl = 1; then : - -else - : -fi - - ac_fn_c_check_func "$LINENO" "sched_setaffinity" "ac_cv_func_sched_setaffinity" -if test "x$ac_cv_func_sched_setaffinity" = xyes; then : - hwloc_have_sched_setaffinity=yes -fi - - for ac_header in sys/cpuset.h -do : - ac_fn_c_check_header_compile "$LINENO" "sys/cpuset.h" "ac_cv_header_sys_cpuset_h" "#include <sys/param.h> -" -if test "x$ac_cv_header_sys_cpuset_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_CPUSET_H 1 -_ACEOF - -fi - -done - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pthread_getthrds_np" >&5 -$as_echo_n "checking for library containing pthread_getthrds_np... " >&6; } -if ${ac_cv_search_pthread_getthrds_np+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_getthrds_np (); -int -main () -{ -return pthread_getthrds_np (); - ; - return 0; -} -_ACEOF -for ac_lib in '' pthread; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_pthread_getthrds_np=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_pthread_getthrds_np+:} false; then : - break -fi -done -if ${ac_cv_search_pthread_getthrds_np+:} false; then : - -else - ac_cv_search_pthread_getthrds_np=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_pthread_getthrds_np" >&5 -$as_echo "$ac_cv_search_pthread_getthrds_np" >&6; } -ac_res=$ac_cv_search_pthread_getthrds_np -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -$as_echo "#define HWLOC_HAVE_PTHREAD_GETTHRDS_NP 1" >>confdefs.h - - -fi - - - # XML support - hwloc_xml_happy= - if test "x$enable_xml" != "xno"; then - - - HWLOC_pkg_failed=no - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML" >&5 -$as_echo_n "checking for XML... " >&6; } - - if test -n "$HWLOC_PKG_CONFIG"; then - if test -n "$HWLOC_XML_CFLAGS"; then - HWLOC_pkg_cv_HWLOC_XML_CFLAGS="$HWLOC_XML_CFLAGS" - else - if test -n "$HWLOC_PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$HWLOC_PKG_CONFIG --exists --silence-errors \"libxml-2.0\""; } >&5 - ($HWLOC_PKG_CONFIG --exists --silence-errors "libxml-2.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - HWLOC_pkg_cv_HWLOC_XML_CFLAGS=`$HWLOC_PKG_CONFIG --cflags "libxml-2.0" 2>/dev/null` - else - HWLOC_pkg_failed=yes -fi - fi -else - HWLOC_pkg_failed=untried -fi - - if test -n "$HWLOC_PKG_CONFIG"; then - if test -n "$HWLOC_XML_LIBS"; then - HWLOC_pkg_cv_HWLOC_XML_LIBS="$HWLOC_XML_LIBS" - else - if test -n "$HWLOC_PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$HWLOC_PKG_CONFIG --exists --silence-errors \"libxml-2.0\""; } >&5 - ($HWLOC_PKG_CONFIG --exists --silence-errors "libxml-2.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - HWLOC_pkg_cv_HWLOC_XML_LIBS=`$HWLOC_PKG_CONFIG --libs "libxml-2.0" 2>/dev/null` - else - HWLOC_pkg_failed=yes -fi - fi -else - HWLOC_pkg_failed=untried -fi - - - - - # Check for failure of pkg-config - if test $HWLOC_pkg_failed = yes; then - -if $HWLOC_PKG_CONFIG --atleast-pkgconfig-version 0.20; then - HWLOC_pkg_short_errors_supported=yes -else - HWLOC_pkg_short_errors_supported=no -fi - if test $HWLOC_pkg_short_errors_supported = yes; then - HWLOC_XML_PKG_ERRORS=`$HWLOC_PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libxml-2.0" 2>&1` - else - HWLOC_XML_PKG_ERRORS=`$HWLOC_PKG_CONFIG --errors-to-stdout --print-errors "libxml-2.0" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$HWLOC_XML_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - hwloc_xml_happy=no - elif test $HWLOC_pkg_failed = untried; then - hwloc_xml_happy=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - # If we got good results from pkg-config, check that they - # actually work (i.e., that we can link against the resulting - # $LIBS). The canonical example why we do this is if - # pkg-config returns 64 bit libraries but ./configure was run - # with CFLAGS=-m32 LDFLAGS=-m32. pkg-config gave us valid - # results, but we'll fail if we try to link. So detect that - # failure now. - hwloc_cflags_save=$CFLAGS - hwloc_libs_save=$LIBS - CFLAGS="$CFLAGS $HWLOC_pkg_cv_HWLOC_XML_CFLAGS" - LIBS="$LIBS $HWLOC_pkg_cv_HWLOC_XML_LIBS" - ac_fn_c_check_func "$LINENO" "xmlNewDoc" "ac_cv_func_xmlNewDoc" -if test "x$ac_cv_func_xmlNewDoc" = xyes; then : - hwloc_result=yes -else - hwloc_result=no -fi - - CFLAGS=$hwloc_cflags_save - LIBS=$hwloc_libs_save - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for final XML support" >&5 -$as_echo_n "checking for final XML support... " >&6; } - if test "$hwloc_result" = "yes"; then : - HWLOC_XML_CFLAGS=$HWLOC_pkg_cv_HWLOC_XML_CFLAGS - HWLOC_XML_LIBS=$HWLOC_pkg_cv_HWLOC_XML_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - hwloc_xml_happy=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - hwloc_xml_happy=no -fi - fi - fi - if test "x$hwloc_xml_happy" = "xyes"; then - HWLOC_REQUIRES="libxml-2.0 $HWLOC_REQUIRES" - -$as_echo "#define HWLOC_HAVE_XML 1" >>confdefs.h - - HWLOC_HAVE_XML=1 - - else - HWLOC_HAVE_XML=0 - - if test "$enable_xml" = "yes"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-xml requested, but XML support was not found" >&5 -$as_echo "$as_me: WARNING: --enable-xml requested, but XML support was not found" >&2;} - as_fn_error $? "Cannot continue" "$LINENO" 5 -fi - fi - HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_XML_CFLAGS" - - # Setup HWLOC's C, CPP, and LD flags, and LIBS - - - HWLOC_CPPFLAGS='-I$(HWLOC_top_srcdir)/include -I$(HWLOC_top_builddir)/include' - - HWLOC_LDFLAGS='-L$(HWLOC_top_builddir)/src' - - - - # 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. - HWLOC_EMBEDDED_CFLAGS=$HWLOC_CFLAGS - - HWLOC_EMBEDDED_CPPFLAGS=$HWLOC_CPPFLAGS - - HWLOC_EMBEDDED_LDADD='$(HWLOC_top_builddir)/src/libhwloc_embedded.la' - - HWLOC_EMBEDDED_LIBS=$HWLOC_LIBS - - - # Try to compile the cpuid inlines - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cpuid" >&5 -$as_echo_n "checking for cpuid... " >&6; } - old_CPPFLAGS="$CPPFLAGS" - CFLAGS="$CFLAGS -I$HWLOC_top_srcdir/include" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include <stdio.h> - #include <private/cpuid.h> - -int -main () -{ - - if (hwloc_have_cpuid()) { - unsigned eax = 0, ebx, ecx = 0, edx; - hwloc_cpuid(&eax, &ebx, &ecx, &edx); - printf("highest cpuid %x\n", eax); - return 0; - } - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -$as_echo "#define HWLOC_HAVE_CPUID 1" >>confdefs.h - - hwloc_have_cpuid=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CPPFLAGS="$old_CPPFLAGS" - - # Always generate these files - ac_config_files="$ac_config_files Makefile include/Makefile src/Makefile" - - - # Cleanup - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - # Success - - - -# Setup hwloc's docs, utils, and tests -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 -$as_echo_n "checking for X... " >&6; } - - -# Check whether --with-x was given. -if test "${with_x+set}" = set; then : - withval=$with_x; -fi - -# $have_x is `yes', `no', `disabled', or empty when we do not yet know. -if test "x$with_x" = xno; then - # The user explicitly disabled X. - have_x=disabled -else - case $x_includes,$x_libraries in #( - *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( - *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : - $as_echo_n "(cached) " >&6 -else - # One or both of the vars are not set, and there is no cached value. -ac_x_includes=no ac_x_libraries=no -rm -f -r conftest.dir -if mkdir conftest.dir; then - cd conftest.dir - cat >Imakefile <<'_ACEOF' -incroot: - @echo incroot='${INCROOT}' -usrlibdir: - @echo usrlibdir='${USRLIBDIR}' -libdir: - @echo libdir='${LIBDIR}' -_ACEOF - if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then - # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. - for ac_var in incroot usrlibdir libdir; do - eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" - done - # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. - for ac_extension in a so sl dylib la dll; do - if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && - test -f "$ac_im_libdir/libX11.$ac_extension"; then - ac_im_usrlibdir=$ac_im_libdir; break - fi - done - # Screen out bogus values from the imake configuration. They are - # bogus both because they are the default anyway, and because - # using them would break gcc on systems where it needs fixed includes. - case $ac_im_incroot in - /usr/include) ac_x_includes= ;; - *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; - esac - case $ac_im_usrlibdir in - /usr/lib | /usr/lib64 | /lib | /lib64) ;; - *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; - esac - fi - cd .. - rm -f -r conftest.dir -fi - -# Standard set of common directories for X headers. -# Check X11 before X11Rn because it is often a symlink to the current release. -ac_x_header_dirs=' -/usr/X11/include -/usr/X11R7/include -/usr/X11R6/include -/usr/X11R5/include -/usr/X11R4/include - -/usr/include/X11 -/usr/include/X11R7 -/usr/include/X11R6 -/usr/include/X11R5 -/usr/include/X11R4 - -/usr/local/X11/include -/usr/local/X11R7/include -/usr/local/X11R6/include -/usr/local/X11R5/include -/usr/local/X11R4/include - -/usr/local/include/X11 -/usr/local/include/X11R7 -/usr/local/include/X11R6 -/usr/local/include/X11R5 -/usr/local/include/X11R4 - -/usr/X386/include -/usr/x386/include -/usr/XFree86/include/X11 - -/usr/include -/usr/local/include -/usr/unsupported/include -/usr/athena/include -/usr/local/x11r5/include -/usr/lpp/Xamples/include - -/usr/openwin/include -/usr/openwin/share/include' - -if test "$ac_x_includes" = no; then - # Guess where to find include files, by looking for Xlib.h. - # First, try using that file with no special directory specified. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <X11/Xlib.h> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # We can compile using X headers with no special include directory. -ac_x_includes= -else - for ac_dir in $ac_x_header_dirs; do - if test -r "$ac_dir/X11/Xlib.h"; then - ac_x_includes=$ac_dir - break - fi -done -fi -rm -f conftest.err conftest.i conftest.$ac_ext -fi # $ac_x_includes = no - -if test "$ac_x_libraries" = no; then - # Check for the libraries. - # See if we find them without any special options. - # Don't add to $LIBS permanently. - ac_save_LIBS=$LIBS - LIBS="-lX11 $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <X11/Xlib.h> -int -main () -{ -XrmInitialize () - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - LIBS=$ac_save_LIBS -# We can link X programs with no special library path. -ac_x_libraries= -else - LIBS=$ac_save_LIBS -for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` -do - # Don't even attempt the hair of trying to link an X program! - for ac_extension in a so sl dylib la dll; do - if test -r "$ac_dir/libX11.$ac_extension"; then - ac_x_libraries=$ac_dir - break 2 - fi - done -done -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi # $ac_x_libraries = no - -case $ac_x_includes,$ac_x_libraries in #( - no,* | *,no | *\'*) - # Didn't find X, or a directory has "'" in its name. - ac_cv_have_x="have_x=no";; #( - *) - # Record where we found X for the cache. - ac_cv_have_x="have_x=yes\ - ac_x_includes='$ac_x_includes'\ - ac_x_libraries='$ac_x_libraries'" -esac -fi -;; #( - *) have_x=yes;; - esac - eval "$ac_cv_have_x" -fi # $with_x != no - -if test "$have_x" != yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 -$as_echo "$have_x" >&6; } - no_x=yes -else - # If each of the values was on the command line, it overrides each guess. - test "x$x_includes" = xNONE && x_includes=$ac_x_includes - test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries - # Update the cache value to reflect the command line values. - ac_cv_have_x="have_x=yes\ - ac_x_includes='$x_includes'\ - ac_x_libraries='$x_libraries'" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 -$as_echo "libraries $x_libraries, headers $x_includes" >&6; } -fi - -if test "$hwloc_mode" = "standalone"; then : - - cat <<EOF - -### -### Configuring hwloc documentation -### -EOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if this is a developer build" >&5 -$as_echo_n "checking if this is a developer build... " >&6; } - if test ! -d "$srcdir/.svn" -a ! -d "$srcdir/.hg" -a ! -d "$srcdir/.git"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (doxygen generation is optional)" >&5 -$as_echo "no (doxygen generation is optional)" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi - - # Generating the doxygen output requires a few tools. If we - # don't have all of them, refuse the build the docs. - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}doxygen", so it can be a program name with args. -set dummy ${ac_tool_prefix}doxygen; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_DOXYGEN+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $DOXYGEN in - [\\/]* | ?:[\\/]*) - ac_cv_path_DOXYGEN="$DOXYGEN" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_DOXYGEN="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -DOXYGEN=$ac_cv_path_DOXYGEN -if test -n "$DOXYGEN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5 -$as_echo "$DOXYGEN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_DOXYGEN"; then - ac_pt_DOXYGEN=$DOXYGEN - # Extract the first word of "doxygen", so it can be a program name with args. -set dummy doxygen; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_DOXYGEN+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_DOXYGEN in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_DOXYGEN="$ac_pt_DOXYGEN" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_DOXYGEN="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_DOXYGEN=$ac_cv_path_ac_pt_DOXYGEN -if test -n "$ac_pt_DOXYGEN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_DOXYGEN" >&5 -$as_echo "$ac_pt_DOXYGEN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_DOXYGEN" = x; then - DOXYGEN="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DOXYGEN=$ac_pt_DOXYGEN - fi -else - DOXYGEN="$ac_cv_path_DOXYGEN" -fi - - HWLOC_DOXYGEN_VERSION=`doxygen --version 2> /dev/null` - - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pdflatex", so it can be a program name with args. -set dummy ${ac_tool_prefix}pdflatex; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PDFLATEX+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PDFLATEX in - [\\/]* | ?:[\\/]*) - ac_cv_path_PDFLATEX="$PDFLATEX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_PDFLATEX="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PDFLATEX=$ac_cv_path_PDFLATEX -if test -n "$PDFLATEX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PDFLATEX" >&5 -$as_echo "$PDFLATEX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PDFLATEX"; then - ac_pt_PDFLATEX=$PDFLATEX - # Extract the first word of "pdflatex", so it can be a program name with args. -set dummy pdflatex; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PDFLATEX+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_PDFLATEX in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PDFLATEX="$ac_pt_PDFLATEX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_PDFLATEX="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PDFLATEX=$ac_cv_path_ac_pt_PDFLATEX -if test -n "$ac_pt_PDFLATEX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PDFLATEX" >&5 -$as_echo "$ac_pt_PDFLATEX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_PDFLATEX" = x; then - PDFLATEX="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PDFLATEX=$ac_pt_PDFLATEX - fi -else - PDFLATEX="$ac_cv_path_PDFLATEX" -fi - - - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}makeindex", so it can be a program name with args. -set dummy ${ac_tool_prefix}makeindex; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MAKEINDEX+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAKEINDEX in - [\\/]* | ?:[\\/]*) - ac_cv_path_MAKEINDEX="$MAKEINDEX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_MAKEINDEX="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -MAKEINDEX=$ac_cv_path_MAKEINDEX -if test -n "$MAKEINDEX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKEINDEX" >&5 -$as_echo "$MAKEINDEX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_MAKEINDEX"; then - ac_pt_MAKEINDEX=$MAKEINDEX - # Extract the first word of "makeindex", so it can be a program name with args. -set dummy makeindex; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_MAKEINDEX+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_MAKEINDEX in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_MAKEINDEX="$ac_pt_MAKEINDEX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_MAKEINDEX="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_MAKEINDEX=$ac_cv_path_ac_pt_MAKEINDEX -if test -n "$ac_pt_MAKEINDEX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_MAKEINDEX" >&5 -$as_echo "$ac_pt_MAKEINDEX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_MAKEINDEX" = x; then - MAKEINDEX="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MAKEINDEX=$ac_pt_MAKEINDEX - fi -else - MAKEINDEX="$ac_cv_path_MAKEINDEX" -fi - - - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}fig2dev", so it can be a program name with args. -set dummy ${ac_tool_prefix}fig2dev; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_FIG2DEV+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $FIG2DEV in - [\\/]* | ?:[\\/]*) - ac_cv_path_FIG2DEV="$FIG2DEV" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_FIG2DEV="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -FIG2DEV=$ac_cv_path_FIG2DEV -if test -n "$FIG2DEV"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FIG2DEV" >&5 -$as_echo "$FIG2DEV" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_FIG2DEV"; then - ac_pt_FIG2DEV=$FIG2DEV - # Extract the first word of "fig2dev", so it can be a program name with args. -set dummy fig2dev; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_FIG2DEV+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_FIG2DEV in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_FIG2DEV="$ac_pt_FIG2DEV" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_FIG2DEV="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_FIG2DEV=$ac_cv_path_ac_pt_FIG2DEV -if test -n "$ac_pt_FIG2DEV"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_FIG2DEV" >&5 -$as_echo "$ac_pt_FIG2DEV" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_FIG2DEV" = x; then - FIG2DEV="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - FIG2DEV=$ac_pt_FIG2DEV - fi -else - FIG2DEV="$ac_cv_path_FIG2DEV" -fi - - - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gs", so it can be a program name with args. -set dummy ${ac_tool_prefix}gs; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GS+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $GS in - [\\/]* | ?:[\\/]*) - ac_cv_path_GS="$GS" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_GS="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -GS=$ac_cv_path_GS -if test -n "$GS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GS" >&5 -$as_echo "$GS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_GS"; then - ac_pt_GS=$GS - # Extract the first word of "gs", so it can be a program name with args. -set dummy gs; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_GS+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_GS in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_GS="$ac_pt_GS" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_GS="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_GS=$ac_cv_path_ac_pt_GS -if test -n "$ac_pt_GS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_GS" >&5 -$as_echo "$ac_pt_GS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_GS" = x; then - GS="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - GS=$ac_pt_GS - fi -else - GS="$ac_cv_path_GS" -fi - - - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}epstopdf", so it can be a program name with args. -set dummy ${ac_tool_prefix}epstopdf; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_EPSTOPDF+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $EPSTOPDF in - [\\/]* | ?:[\\/]*) - ac_cv_path_EPSTOPDF="$EPSTOPDF" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_EPSTOPDF="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -EPSTOPDF=$ac_cv_path_EPSTOPDF -if test -n "$EPSTOPDF"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EPSTOPDF" >&5 -$as_echo "$EPSTOPDF" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_EPSTOPDF"; then - ac_pt_EPSTOPDF=$EPSTOPDF - # Extract the first word of "epstopdf", so it can be a program name with args. -set dummy epstopdf; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_EPSTOPDF+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_EPSTOPDF in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_EPSTOPDF="$ac_pt_EPSTOPDF" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_EPSTOPDF="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_EPSTOPDF=$ac_cv_path_ac_pt_EPSTOPDF -if test -n "$ac_pt_EPSTOPDF"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_EPSTOPDF" >&5 -$as_echo "$ac_pt_EPSTOPDF" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_EPSTOPDF" = x; then - EPSTOPDF="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - EPSTOPDF=$ac_pt_EPSTOPDF - fi -else - EPSTOPDF="$ac_cv_path_EPSTOPDF" -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if can build doxygen docs" >&5 -$as_echo_n "checking if can build doxygen docs... " >&6; } - if test "x$DOXYGEN" != "x" -a "x$PDFLATEX" != "x" -a "x$MAKEINDEX" != "x" -a "x$FIG2DEV" != "x" -a "x$GS" != "x" -a "x$EPSTOPDF" != "x"; then : - hwloc_generate_doxs=yes -else - hwloc_generate_doxs=no -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hwloc_generate_doxs" >&5 -$as_echo "$hwloc_generate_doxs" >&6; } - - # Linux and OS X take different sed arguments. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the sed -i option requires an argument" >&5 -$as_echo_n "checking if the sed -i option requires an argument... " >&6; } - rm -f conftest - cat > conftest <<EOF -hello -EOF - $SED -i -e s/hello/goodbye/ conftest 2> /dev/null - if test -f conftest-e; then : - SED_I="$SED -i ''" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - SED_I="$SED -i" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - rm -f conftest conftest-e - - - # Making the top-level README requires w3m or lynx. - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}w3m", so it can be a program name with args. -set dummy ${ac_tool_prefix}w3m; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_W3M+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $W3M in - [\\/]* | ?:[\\/]*) - ac_cv_path_W3M="$W3M" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_W3M="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -W3M=$ac_cv_path_W3M -if test -n "$W3M"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $W3M" >&5 -$as_echo "$W3M" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_W3M"; then - ac_pt_W3M=$W3M - # Extract the first word of "w3m", so it can be a program name with args. -set dummy w3m; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_W3M+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_W3M in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_W3M="$ac_pt_W3M" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_W3M="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_W3M=$ac_cv_path_ac_pt_W3M -if test -n "$ac_pt_W3M"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_W3M" >&5 -$as_echo "$ac_pt_W3M" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_W3M" = x; then - W3M="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - W3M=$ac_pt_W3M - fi -else - W3M="$ac_cv_path_W3M" -fi - - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lynx", so it can be a program name with args. -set dummy ${ac_tool_prefix}lynx; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_LYNX+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $LYNX in - [\\/]* | ?:[\\/]*) - ac_cv_path_LYNX="$LYNX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_LYNX="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -LYNX=$ac_cv_path_LYNX -if test -n "$LYNX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LYNX" >&5 -$as_echo "$LYNX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_LYNX"; then - ac_pt_LYNX=$LYNX - # Extract the first word of "lynx", so it can be a program name with args. -set dummy lynx; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_LYNX+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_LYNX in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_LYNX="$ac_pt_LYNX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_LYNX="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_LYNX=$ac_cv_path_ac_pt_LYNX -if test -n "$ac_pt_LYNX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LYNX" >&5 -$as_echo "$ac_pt_LYNX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_LYNX" = x; then - LYNX="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LYNX=$ac_pt_LYNX - fi -else - LYNX="$ac_cv_path_LYNX" -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if can build top-level README" >&5 -$as_echo_n "checking if can build top-level README... " >&6; } - if test "x$W3M" != "x"; then : - hwloc_generate_readme=yes - HWLOC_W3_GENERATOR=$W3M -else - if test "x$LYNX" != "x"; then : - hwloc_generate_readme=yes - HWLOC_W3_GENERATOR="$LYNX -dump -nolist" -else - hwloc_generate_readme=no -fi -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hwloc_generate_readme" >&5 -$as_echo "$hwloc_generate_readme" >&6; } - - # If any one of the above tools is missing, we will refuse to make dist. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if will build doxygen docs" >&5 -$as_echo_n "checking if will build doxygen docs... " >&6; } - if test "x$hwloc_generate_doxs" = "xyes" -a "x$enable_doxygen" != "xno"; then : - -else - hwloc_generate_doxs=no -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hwloc_generate_doxs" >&5 -$as_echo "$hwloc_generate_doxs" >&6; } - - # See if we want to install the doxygen docs - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if will install doxygen docs" >&5 -$as_echo_n "checking if will install doxygen docs... " >&6; } - if test "x$hwloc_generate_doxs" = "xyes" -o \ - -f "$srcdir/doc/doxygen-doc/man/man3/hwloc_distribute.3" -a \ - -f "$srcdir/doc/doxygen-doc/hwloc-a4.pdf" -a \ - -f "$srcdir/doc/doxygen-doc/hwloc-letter.pdf"; then : - hwloc_install_doxs=yes -else - hwloc_install_doxs=no -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hwloc_install_doxs" >&5 -$as_echo "$hwloc_install_doxs" >&6; } - - # 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. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable \"picky\" compiler mode" >&5 -$as_echo_n "checking whether to enable \"picky\" compiler mode... " >&6; } - hwloc_want_picky=0 - if test "$GCC" = "yes"; then : - if test -d "$srcdir/.svn" -o -d "$srcdir/.hg" -o -d "$srcdir/.git"; then : - hwloc_want_picky=1 -fi -fi - if test "$enable_picky" = "yes"; then - if test "$GCC" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - hwloc_want_picky=1 - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Warning: --enable-picky used, but is currently only defined for the GCC compiler set -- automatically disabled" >&5 -$as_echo "$as_me: WARNING: Warning: --enable-picky used, but is currently only defined for the GCC compiler set -- automatically disabled" >&2;} - hwloc_want_picky=0 - fi - elif test "$enable_picky" = "no"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - hwloc_want_picky=0 - else - if test "$hwloc_want_picky" = 1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (default)" >&5 -$as_echo "yes (default)" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (default)" >&5 -$as_echo "no (default)" >&6; } - fi - fi - if test "$hwloc_want_picky" = 1; then - add="-Wall -Wunused-parameter -Wundef -Wno-long-long -Wsign-compare" - add="$add -Wmissing-prototypes -Wstrict-prototypes" - add="$add -Wcomment -pedantic" - - CFLAGS="$CFLAGS $add" - fi - - # Generate some files for the docs - ac_config_files="$ac_config_files doc/Makefile doc/doxygen-config.cfg" - - - - cat <<EOF - -### -### Configuring hwloc command line utilities -### -EOF - - hwloc_build_utils=yes - - # Cairo support - hwloc_cairo_happy= - if test "x$enable_cairo" != "xno"; then - - - HWLOC_pkg_failed=no - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAIRO" >&5 -$as_echo_n "checking for CAIRO... " >&6; } - - if test -n "$HWLOC_PKG_CONFIG"; then - if test -n "$HWLOC_CAIRO_CFLAGS"; then - HWLOC_pkg_cv_HWLOC_CAIRO_CFLAGS="$HWLOC_CAIRO_CFLAGS" - else - if test -n "$HWLOC_PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$HWLOC_PKG_CONFIG --exists --silence-errors \"cairo\""; } >&5 - ($HWLOC_PKG_CONFIG --exists --silence-errors "cairo") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - HWLOC_pkg_cv_HWLOC_CAIRO_CFLAGS=`$HWLOC_PKG_CONFIG --cflags "cairo" 2>/dev/null` - else - HWLOC_pkg_failed=yes -fi - fi -else - HWLOC_pkg_failed=untried -fi - - if test -n "$HWLOC_PKG_CONFIG"; then - if test -n "$HWLOC_CAIRO_LIBS"; then - HWLOC_pkg_cv_HWLOC_CAIRO_LIBS="$HWLOC_CAIRO_LIBS" - else - if test -n "$HWLOC_PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$HWLOC_PKG_CONFIG --exists --silence-errors \"cairo\""; } >&5 - ($HWLOC_PKG_CONFIG --exists --silence-errors "cairo") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - HWLOC_pkg_cv_HWLOC_CAIRO_LIBS=`$HWLOC_PKG_CONFIG --libs "cairo" 2>/dev/null` - else - HWLOC_pkg_failed=yes -fi - fi -else - HWLOC_pkg_failed=untried -fi - - - - - # Check for failure of pkg-config - if test $HWLOC_pkg_failed = yes; then - -if $HWLOC_PKG_CONFIG --atleast-pkgconfig-version 0.20; then - HWLOC_pkg_short_errors_supported=yes -else - HWLOC_pkg_short_errors_supported=no -fi - if test $HWLOC_pkg_short_errors_supported = yes; then - HWLOC_CAIRO_PKG_ERRORS=`$HWLOC_PKG_CONFIG --short-errors --errors-to-stdout --print-errors "cairo" 2>&1` - else - HWLOC_CAIRO_PKG_ERRORS=`$HWLOC_PKG_CONFIG --errors-to-stdout --print-errors "cairo" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$HWLOC_CAIRO_PKG_ERRORS" >&5 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - hwloc_cairo_happy=no - elif test $HWLOC_pkg_failed = untried; then - hwloc_cairo_happy=no - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - - # If we got good results from pkg-config, check that they - # actually work (i.e., that we can link against the resulting - # $LIBS). The canonical example why we do this is if - # pkg-config returns 64 bit libraries but ./configure was run - # with CFLAGS=-m32 LDFLAGS=-m32. pkg-config gave us valid - # results, but we'll fail if we try to link. So detect that - # failure now. - hwloc_cflags_save=$CFLAGS - hwloc_libs_save=$LIBS - CFLAGS="$CFLAGS $HWLOC_pkg_cv_HWLOC_CAIRO_CFLAGS" - LIBS="$LIBS $HWLOC_pkg_cv_HWLOC_CAIRO_LIBS" - ac_fn_c_check_func "$LINENO" "cairo_fill" "ac_cv_func_cairo_fill" -if test "x$ac_cv_func_cairo_fill" = xyes; then : - hwloc_result=yes -else - hwloc_result=no -fi - - CFLAGS=$hwloc_cflags_save - LIBS=$hwloc_libs_save - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for final CAIRO support" >&5 -$as_echo_n "checking for final CAIRO support... " >&6; } - if test "$hwloc_result" = "yes"; then : - HWLOC_CAIRO_CFLAGS=$HWLOC_pkg_cv_HWLOC_CAIRO_CFLAGS - HWLOC_CAIRO_LIBS=$HWLOC_pkg_cv_HWLOC_CAIRO_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - hwloc_cairo_happy=yes -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - hwloc_cairo_happy=no -fi - fi - if test "x$hwloc_cairo_happy" = "xyes"; then - if test "$no_x" = yes; then - # Not all programs may use this symbol, but it does not hurt to define it. - -$as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h - - X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= -else - if test -n "$x_includes"; then - X_CFLAGS="$X_CFLAGS -I$x_includes" - fi - - # It would also be nice to do this for all -L options, not just this one. - if test -n "$x_libraries"; then - X_LIBS="$X_LIBS -L$x_libraries" - # For Solaris; some versions of Sun CC require a space after -R and - # others require no space. Words are not sufficient . . . . - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5 -$as_echo_n "checking whether -R must be followed by a space... " >&6; } - ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" - ac_xsave_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - X_LIBS="$X_LIBS -R$x_libraries" -else - LIBS="$ac_xsave_LIBS -R $x_libraries" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - X_LIBS="$X_LIBS -R $x_libraries" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5 -$as_echo "neither works" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_c_werror_flag=$ac_xsave_c_werror_flag - LIBS=$ac_xsave_LIBS - fi - - # Check for system-dependent libraries X programs must link with. - # Do this before checking for the system-independent R6 libraries - # (-lICE), since we may need -lsocket or whatever for X linking. - - if test "$ISC" = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" - else - # Martyn Johnson says this is needed for Ultrix, if the X - # libraries were built with DECnet support. And Karl Berry says - # the Alpha needs dnet_stub (dnet does not exist). - ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char XOpenDisplay (); -int -main () -{ -return XOpenDisplay (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5 -$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; } -if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldnet $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dnet_ntoa (); -int -main () -{ -return dnet_ntoa (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dnet_dnet_ntoa=yes -else - ac_cv_lib_dnet_dnet_ntoa=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 -$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; } -if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" -fi - - if test $ac_cv_lib_dnet_dnet_ntoa = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5 -$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; } -if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldnet_stub $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dnet_ntoa (); -int -main () -{ -return dnet_ntoa (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dnet_stub_dnet_ntoa=yes -else - ac_cv_lib_dnet_stub_dnet_ntoa=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 -$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } -if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" -fi - - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$ac_xsave_LIBS" - - # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, - # to get the SysV transport functions. - # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) - # needs -lnsl. - # The nsl library prevents programs from opening the X display - # on Irix 5.2, according to T.E. Dickey. - # The functions gethostbyname, getservbyname, and inet_addr are - # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. - ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" -if test "x$ac_cv_func_gethostbyname" = xyes; then : - -fi - - if test $ac_cv_func_gethostbyname = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 -$as_echo_n "checking for gethostbyname in -lnsl... " >&6; } -if ${ac_cv_lib_nsl_gethostbyname+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnsl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname (); -int -main () -{ -return gethostbyname (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_nsl_gethostbyname=yes -else - ac_cv_lib_nsl_gethostbyname=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 -$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } -if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" -fi - - if test $ac_cv_lib_nsl_gethostbyname = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5 -$as_echo_n "checking for gethostbyname in -lbsd... " >&6; } -if ${ac_cv_lib_bsd_gethostbyname+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lbsd $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname (); -int -main () -{ -return gethostbyname (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_bsd_gethostbyname=yes -else - ac_cv_lib_bsd_gethostbyname=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5 -$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; } -if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" -fi - - fi - fi - - # lieder@skyler.mavd.honeywell.com says without -lsocket, - # socket/setsockopt and other routines are undefined under SCO ODT - # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary - # on later versions), says Simon Leinen: it contains gethostby* - # variants that don't use the name server (or something). -lsocket - # must be given before -lnsl if both are needed. We assume that - # if connect needs -lnsl, so does gethostbyname. - ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect" -if test "x$ac_cv_func_connect" = xyes; then : - -fi - - if test $ac_cv_func_connect = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 -$as_echo_n "checking for connect in -lsocket... " >&6; } -if ${ac_cv_lib_socket_connect+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsocket $X_EXTRA_LIBS $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char connect (); -int -main () -{ -return connect (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_socket_connect=yes -else - ac_cv_lib_socket_connect=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5 -$as_echo "$ac_cv_lib_socket_connect" >&6; } -if test "x$ac_cv_lib_socket_connect" = xyes; then : - X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" -fi - - fi - - # Guillermo Gomez says -lposix is necessary on A/UX. - ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove" -if test "x$ac_cv_func_remove" = xyes; then : - -fi - - if test $ac_cv_func_remove = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5 -$as_echo_n "checking for remove in -lposix... " >&6; } -if ${ac_cv_lib_posix_remove+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lposix $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char remove (); -int -main () -{ -return remove (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_posix_remove=yes -else - ac_cv_lib_posix_remove=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5 -$as_echo "$ac_cv_lib_posix_remove" >&6; } -if test "x$ac_cv_lib_posix_remove" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" -fi - - fi - - # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. - ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat" -if test "x$ac_cv_func_shmat" = xyes; then : - -fi - - if test $ac_cv_func_shmat = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5 -$as_echo_n "checking for shmat in -lipc... " >&6; } -if ${ac_cv_lib_ipc_shmat+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lipc $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shmat (); -int -main () -{ -return shmat (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ipc_shmat=yes -else - ac_cv_lib_ipc_shmat=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5 -$as_echo "$ac_cv_lib_ipc_shmat" >&6; } -if test "x$ac_cv_lib_ipc_shmat" = xyes; then : - X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" -fi - - fi - fi - - # Check for libraries that X11R6 Xt/Xaw programs need. - ac_save_LDFLAGS=$LDFLAGS - test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" - # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to - # check for ICE first), but we must link in the order -lSM -lICE or - # we get undefined symbols. So assume we have SM if we have ICE. - # These have to be linked with before -lX11, unlike the other - # libraries we check for below, so use a different variable. - # John Interrante, Karl Berry - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5 -$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } -if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lICE $X_EXTRA_LIBS $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char IceConnectionNumber (); -int -main () -{ -return IceConnectionNumber (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ICE_IceConnectionNumber=yes -else - ac_cv_lib_ICE_IceConnectionNumber=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 -$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } -if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then : - X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" -fi - - LDFLAGS=$ac_save_LDFLAGS - -fi - - CFLAGS_save=$CFLAGS - LIBS_save=$LIBS - - CFLAGS="$CFLAGS $X_CFLAGS" - LIBS="$LIBS $X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS" - for ac_header in X11/Xlib.h -do : - ac_fn_c_check_header_compile "$LINENO" "X11/Xlib.h" "ac_cv_header_X11_Xlib_h" "#include <X11/Xlib.h> - -" -if test "x$ac_cv_header_X11_Xlib_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_X11_XLIB_H 1 -_ACEOF - - for ac_header in X11/Xutil.h X11/keysym.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XOpenDisplay in -lX11" >&5 -$as_echo_n "checking for XOpenDisplay in -lX11... " >&6; } -if ${ac_cv_lib_X11_XOpenDisplay+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lX11 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char XOpenDisplay (); -int -main () -{ -return XOpenDisplay (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_X11_XOpenDisplay=yes -else - ac_cv_lib_X11_XOpenDisplay=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_X11_XOpenDisplay" >&5 -$as_echo "$ac_cv_lib_X11_XOpenDisplay" >&6; } -if test "x$ac_cv_lib_X11_XOpenDisplay" = xyes; then : - - enable_X11=yes - HWLOC_X11_LIBS="-lX11" - - -$as_echo "#define HWLOC_HAVE_X11 1" >>confdefs.h - - -fi - - -fi - -done - -fi - -done - - if test "x$enable_X11" != "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: X11 headers not found, Cairo/X11 back-end disabled" >&5 -$as_echo "$as_me: WARNING: X11 headers not found, Cairo/X11 back-end disabled" >&2;} - hwloc_cairo_happy=no - fi - - CFLAGS=$CFLAGS_save - LIBS=$LIBS_save - fi - fi - - if test "x$hwloc_cairo_happy" = "xyes"; then - -$as_echo "#define HWLOC_HAVE_CAIRO 1" >>confdefs.h - - else - if test "$enable_cairo" = "yes"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-cairo requested, but Cairo/X11 support was not found" >&5 -$as_echo "$as_me: WARNING: --enable-cairo requested, but Cairo/X11 support was not found" >&2;} - as_fn_error $? "Cannot continue" "$LINENO" 5 -fi - fi - - ac_fn_c_check_type "$LINENO" "wchar_t" "ac_cv_type_wchar_t" "#include <wchar.h> -" -if test "x$ac_cv_type_wchar_t" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_WCHAR_T 1 -_ACEOF - - - for ac_func in putwc -do : - ac_fn_c_check_func "$LINENO" "putwc" "ac_cv_func_putwc" -if test "x$ac_cv_func_putwc" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_PUTWC 1 -_ACEOF - -fi -done - - -fi - - - for ac_header in locale.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" -if test "x$ac_cv_header_locale_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LOCALE_H 1 -_ACEOF - - for ac_func in setlocale -do : - ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale" -if test "x$ac_cv_func_setlocale" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SETLOCALE 1 -_ACEOF - -fi -done - - -fi - -done - - for ac_header in langinfo.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default" -if test "x$ac_cv_header_langinfo_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LANGINFO_H 1 -_ACEOF - - for ac_func in nl_langinfo -do : - ac_fn_c_check_func "$LINENO" "nl_langinfo" "ac_cv_func_nl_langinfo" -if test "x$ac_cv_func_nl_langinfo" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_NL_LANGINFO 1 -_ACEOF - -fi -done - - -fi - -done - - hwloc_old_LIBS="$LIBS" - chosen_curses="" - for curses in ncurses curses - do - for lib in "" -ltermcap -l${curses}w -l$curses - do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking termcap support using $curses and $lib" >&5 -$as_echo_n "checking termcap support using $curses and $lib... " >&6; } - LIBS="$hwloc_old_LIBS $lib" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include <$curses.h> -#include <term.h> - -int -main () -{ -tparm(NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0) - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - HWLOC_TERMCAP_LIBS="$LIBS" - - -$as_echo "#define HWLOC_HAVE_LIBTERMCAP 1" >>confdefs.h - - chosen_curses=$curses - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - test "x$chosen_curses" != "x" && break - done - test "x$chosen_curses" != "x" && break - done - if test "$chosen_curses" = ncurses - then - -$as_echo "#define HWLOC_USE_NCURSES 1" >>confdefs.h - - fi - LIBS="$hwloc_old_LIBS" - unset hwloc_old_LIBS - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether diff accepts -u" >&5 -$as_echo_n "checking whether diff accepts -u... " >&6; } - if diff -u /dev/null /dev/null 2> /dev/null - then - HWLOC_DIFF_U="-u" - else - HWLOC_DIFF_U="" - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HWLOC_DIFF_U" >&5 -$as_echo "$HWLOC_DIFF_U" >&6; } - - - # Only generate this if we're building the utilities - ac_config_files="$ac_config_files utils/Makefile hwloc.pc" - - - - cat <<EOF - -### -### Configuring hwloc tests -### -EOF - - hwloc_build_tests=yes - - # linux-libnuma.h testing requires libnuma with numa_bitmask_alloc() - ac_fn_c_check_decl "$LINENO" "numa_bitmask_alloc" "ac_cv_have_decl_numa_bitmask_alloc" "#include <numa.h> -" -if test "x$ac_cv_have_decl_numa_bitmask_alloc" = xyes; then : - hwloc_have_linux_libnuma=yes -fi - - - for ac_header in infiniband/verbs.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "infiniband/verbs.h" "ac_cv_header_infiniband_verbs_h" "$ac_includes_default" -if test "x$ac_cv_header_infiniband_verbs_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_INFINIBAND_VERBS_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ibv_open_device in -libverbs" >&5 -$as_echo_n "checking for ibv_open_device in -libverbs... " >&6; } -if ${ac_cv_lib_ibverbs_ibv_open_device+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-libverbs $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char ibv_open_device (); -int -main () -{ -return ibv_open_device (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ibverbs_ibv_open_device=yes -else - ac_cv_lib_ibverbs_ibv_open_device=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ibverbs_ibv_open_device" >&5 -$as_echo "$ac_cv_lib_ibverbs_ibv_open_device" >&6; } -if test "x$ac_cv_lib_ibverbs_ibv_open_device" = xyes; then : - -$as_echo "#define HAVE_LIBIBVERBS 1" >>confdefs.h - - hwloc_have_libibverbs=yes -fi - - -fi - -done - - - for ac_header in myriexpress.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "myriexpress.h" "ac_cv_header_myriexpress_h" "$ac_includes_default" -if test "x$ac_cv_header_myriexpress_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MYRIEXPRESS_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if MX_NUMA_NODE exists" >&5 -$as_echo_n "checking if MX_NUMA_NODE exists... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <myriexpress.h> -int -main () -{ -int a = MX_NUMA_NODE; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -done - - - for ac_header in cuda.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "cuda.h" "ac_cv_header_cuda_h" "$ac_includes_default" -if test "x$ac_cv_header_cuda_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_CUDA_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if CUDA_VERSION >= 3020" >&5 -$as_echo_n "checking if CUDA_VERSION >= 3020... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include <cuda.h> -#ifndef CUDA_VERSION -#error CUDA_VERSION undefined -#elif CUDA_VERSION < 3020 -#error CUDA_VERSION too old -#endif -int -main () -{ -int i = 3; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cuInit in -lcuda" >&5 -$as_echo_n "checking for cuInit in -lcuda... " >&6; } -if ${ac_cv_lib_cuda_cuInit+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcuda $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char cuInit (); -int -main () -{ -return cuInit (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_cuda_cuInit=yes -else - ac_cv_lib_cuda_cuInit=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cuda_cuInit" >&5 -$as_echo "$ac_cv_lib_cuda_cuInit" >&6; } -if test "x$ac_cv_lib_cuda_cuInit" = xyes; then : - -$as_echo "#define HAVE_CUDA 1" >>confdefs.h - - hwloc_have_cuda=yes -fi - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -done - - - for ac_header in cuda_runtime_api.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "cuda_runtime_api.h" "ac_cv_header_cuda_runtime_api_h" "$ac_includes_default" -if test "x$ac_cv_header_cuda_runtime_api_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_CUDA_RUNTIME_API_H 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if CUDART_VERSION >= 3020" >&5 -$as_echo_n "checking if CUDART_VERSION >= 3020... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include <cuda_runtime_api.h> -#ifndef CUDART_VERSION -#error CUDART_VERSION undefined -#elif CUDART_VERSION < 3020 -#error CUDART_VERSION too old -#endif -int -main () -{ -int i = 3; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cudaGetDeviceCount in -lcudart" >&5 -$as_echo_n "checking for cudaGetDeviceCount in -lcudart... " >&6; } -if ${ac_cv_lib_cudart_cudaGetDeviceCount+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcudart $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char cudaGetDeviceCount (); -int -main () -{ -return cudaGetDeviceCount (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_cudart_cudaGetDeviceCount=yes -else - ac_cv_lib_cudart_cudaGetDeviceCount=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cudart_cudaGetDeviceCount" >&5 -$as_echo "$ac_cv_lib_cudart_cudaGetDeviceCount" >&6; } -if test "x$ac_cv_lib_cudart_cudaGetDeviceCount" = xyes; then : - -$as_echo "#define HAVE_CUDART 1" >>confdefs.h - - hwloc_have_cudart=yes -fi - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -done - - - if test "x$enable_xml" != "xno"; then - for ac_prog in xmllint -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_XMLLINT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$XMLLINT"; then - ac_cv_prog_XMLLINT="$XMLLINT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_XMLLINT="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -XMLLINT=$ac_cv_prog_XMLLINT -if test -n "$XMLLINT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XMLLINT" >&5 -$as_echo "$XMLLINT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$XMLLINT" && break -done - - fi - - for ac_prog in bunzip2 -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_BUNZIPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$BUNZIPP"; then - ac_cv_prog_BUNZIPP="$BUNZIPP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_BUNZIPP="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -BUNZIPP=$ac_cv_prog_BUNZIPP -if test -n "$BUNZIPP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUNZIPP" >&5 -$as_echo "$BUNZIPP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$BUNZIPP" && break -done -test -n "$BUNZIPP" || BUNZIPP="false" - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether diff accepts -u" >&5 -$as_echo_n "checking whether diff accepts -u... " >&6; } - if diff -u /dev/null /dev/null 2> /dev/null - then - HWLOC_DIFF_U="-u" - else - HWLOC_DIFF_U="" - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HWLOC_DIFF_U" >&5 -$as_echo "$HWLOC_DIFF_U" >&6; } - - - # Only generate these files if we're making the tests - ac_config_files="$ac_config_files tests/Makefile tests/linux/Makefile tests/linux/gather/Makefile tests/xml/Makefile tests/ports/Makefile tests/linux/hwloc-gather-topology tests/linux/gather/test-gather-topology.sh tests/linux/test-topology.sh tests/xml/test-topology.sh utils/test-hwloc-calc.sh utils/test-hwloc-distrib.sh" - - - ac_config_commands="$ac_config_commands chmoding-scripts" - - - # These links are only needed in standalone mode. It would - # be nice to m4 foreach this somehow, but whenever I tried - # it, I got obscure "invalid tag" errors from - # AC_CONFIG_LINKS. :-\ Since these tests are only run when - # built in standalone mode, only generate them in - # standalone mode. - ac_config_links="$ac_config_links tests/ports/topology.c:src/topology.c tests/ports/traversal.c:src/traversal.c tests/ports/topology-synthetic.c:src/topology-synthetic.c tests/ports/topology-solaris.c:src/topology-solaris.c tests/ports/topology-aix.c:src/topology-aix.c tests/ports/topology-osf.c:src/topology-osf.c tests/ports/topology-windows.c:src/topology-windows.c tests/ports/topology-darwin.c:src/topology-darwin.c tests/ports/topology-freebsd.c:src/topology-freebsd.c tests/ports/topology-hpux.c:src/topology-hpux.c" - - -fi - -# Run the AM_CONDITIONALs - - if test "$hwloc_did_am_conditionals" != "yes"; then : - - if test "$hwloc_mode" = "standalone"; then - HWLOC_BUILD_STANDALONE_TRUE= - HWLOC_BUILD_STANDALONE_FALSE='#' -else - HWLOC_BUILD_STANDALONE_TRUE='#' - HWLOC_BUILD_STANDALONE_FALSE= -fi - - - if test "x$GCC" = "xyes"; then - HWLOC_HAVE_GCC_TRUE= - HWLOC_HAVE_GCC_FALSE='#' -else - HWLOC_HAVE_GCC_TRUE='#' - HWLOC_HAVE_GCC_FALSE= -fi - - if test "x$HWLOC_MS_LIB" != "x"; then - HWLOC_HAVE_MS_LIB_TRUE= - HWLOC_HAVE_MS_LIB_FALSE='#' -else - HWLOC_HAVE_MS_LIB_TRUE='#' - HWLOC_HAVE_MS_LIB_FALSE= -fi - - if test "x$hwloc_have_openat" = "xyes"; then - HWLOC_HAVE_OPENAT_TRUE= - HWLOC_HAVE_OPENAT_FALSE='#' -else - HWLOC_HAVE_OPENAT_TRUE='#' - HWLOC_HAVE_OPENAT_FALSE= -fi - - if test "x$hwloc_have_linux_libnuma" = "xyes"; then - HWLOC_HAVE_LINUX_LIBNUMA_TRUE= - HWLOC_HAVE_LINUX_LIBNUMA_FALSE='#' -else - HWLOC_HAVE_LINUX_LIBNUMA_TRUE='#' - HWLOC_HAVE_LINUX_LIBNUMA_FALSE= -fi - - if test "x$hwloc_have_sched_setaffinity" = "xyes"; then - HWLOC_HAVE_SCHED_SETAFFINITY_TRUE= - HWLOC_HAVE_SCHED_SETAFFINITY_FALSE='#' -else - HWLOC_HAVE_SCHED_SETAFFINITY_TRUE='#' - HWLOC_HAVE_SCHED_SETAFFINITY_FALSE= -fi - - if test "x$hwloc_have_libibverbs" = "xyes"; then - HWLOC_HAVE_LIBIBVERBS_TRUE= - HWLOC_HAVE_LIBIBVERBS_FALSE='#' -else - HWLOC_HAVE_LIBIBVERBS_TRUE='#' - HWLOC_HAVE_LIBIBVERBS_FALSE= -fi - - if test "x$hwloc_have_cuda" = "xyes"; then - HWLOC_HAVE_CUDA_TRUE= - HWLOC_HAVE_CUDA_FALSE='#' -else - HWLOC_HAVE_CUDA_TRUE='#' - HWLOC_HAVE_CUDA_FALSE= -fi - - if test "x$hwloc_have_myriexpress" = "xyes"; then - HWLOC_HAVE_MYRIEXPRESS_TRUE= - HWLOC_HAVE_MYRIEXPRESS_FALSE='#' -else - HWLOC_HAVE_MYRIEXPRESS_TRUE='#' - HWLOC_HAVE_MYRIEXPRESS_FALSE= -fi - - if test "x$hwloc_have_cudart" = "xyes"; then - HWLOC_HAVE_CUDART_TRUE= - HWLOC_HAVE_CUDART_FALSE='#' -else - HWLOC_HAVE_CUDART_TRUE='#' - HWLOC_HAVE_CUDART_FALSE= -fi - - if test "x$enable_cairo" != "xno"; then - HWLOC_HAVE_CAIRO_TRUE= - HWLOC_HAVE_CAIRO_FALSE='#' -else - HWLOC_HAVE_CAIRO_TRUE='#' - HWLOC_HAVE_CAIRO_FALSE= -fi - - if test "$hwloc_xml_happy" = "yes"; then - HWLOC_HAVE_XML_TRUE= - HWLOC_HAVE_XML_FALSE='#' -else - HWLOC_HAVE_XML_TRUE='#' - HWLOC_HAVE_XML_FALSE= -fi - - if test "x$enable_set_mempolicy" != "xno"; then - HWLOC_HAVE_SET_MEMPOLICY_TRUE= - HWLOC_HAVE_SET_MEMPOLICY_FALSE='#' -else - HWLOC_HAVE_SET_MEMPOLICY_TRUE='#' - HWLOC_HAVE_SET_MEMPOLICY_FALSE= -fi - - if test "x$enable_mbind" != "xno"; then - HWLOC_HAVE_MBIND_TRUE= - HWLOC_HAVE_MBIND_FALSE='#' -else - HWLOC_HAVE_MBIND_TRUE='#' - HWLOC_HAVE_MBIND_FALSE= -fi - - if test "x$BUNZIPP" != "xfalse"; then - HWLOC_HAVE_BUNZIPP_TRUE= - HWLOC_HAVE_BUNZIPP_FALSE='#' -else - HWLOC_HAVE_BUNZIPP_TRUE='#' - HWLOC_HAVE_BUNZIPP_FALSE= -fi - - - if test "x$hwloc_generate_doxs" = "xyes"; then - HWLOC_BUILD_DOXYGEN_TRUE= - HWLOC_BUILD_DOXYGEN_FALSE='#' -else - HWLOC_BUILD_DOXYGEN_TRUE='#' - HWLOC_BUILD_DOXYGEN_FALSE= -fi - - if test "x$hwloc_generate_readme" = "xyes" -a \( "x$hwloc_install_doxs" = "xyes" -o "x$hwloc_generate_doxs" = "xyes" \) ; then - HWLOC_BUILD_README_TRUE= - HWLOC_BUILD_README_FALSE='#' -else - HWLOC_BUILD_README_TRUE='#' - HWLOC_BUILD_README_FALSE= -fi - - if test "x$hwloc_install_doxs" = "xyes"; then - HWLOC_INSTALL_DOXYGEN_TRUE= - HWLOC_INSTALL_DOXYGEN_FALSE='#' -else - HWLOC_INSTALL_DOXYGEN_TRUE='#' - HWLOC_INSTALL_DOXYGEN_FALSE= -fi - - - if test "x$hwloc_linux" = "xyes"; then - HWLOC_HAVE_LINUX_TRUE= - HWLOC_HAVE_LINUX_FALSE='#' -else - HWLOC_HAVE_LINUX_TRUE='#' - HWLOC_HAVE_LINUX_FALSE= -fi - - if test "x$hwloc_irix" = "xyes"; then - HWLOC_HAVE_IRIX_TRUE= - HWLOC_HAVE_IRIX_FALSE='#' -else - HWLOC_HAVE_IRIX_TRUE='#' - HWLOC_HAVE_IRIX_FALSE= -fi - - if test "x$hwloc_darwin" = "xyes"; then - HWLOC_HAVE_DARWIN_TRUE= - HWLOC_HAVE_DARWIN_FALSE='#' -else - HWLOC_HAVE_DARWIN_TRUE='#' - HWLOC_HAVE_DARWIN_FALSE= -fi - - if test "x$hwloc_freebsd" = "xyes"; then - HWLOC_HAVE_FREEBSD_TRUE= - HWLOC_HAVE_FREEBSD_FALSE='#' -else - HWLOC_HAVE_FREEBSD_TRUE='#' - HWLOC_HAVE_FREEBSD_FALSE= -fi - - if test "x$hwloc_solaris" = "xyes"; then - HWLOC_HAVE_SOLARIS_TRUE= - HWLOC_HAVE_SOLARIS_FALSE='#' -else - HWLOC_HAVE_SOLARIS_TRUE='#' - HWLOC_HAVE_SOLARIS_FALSE= -fi - - if test "x$hwloc_aix" = "xyes"; then - HWLOC_HAVE_AIX_TRUE= - HWLOC_HAVE_AIX_FALSE='#' -else - HWLOC_HAVE_AIX_TRUE='#' - HWLOC_HAVE_AIX_FALSE= -fi - - if test "x$hwloc_osf" = "xyes"; then - HWLOC_HAVE_OSF_TRUE= - HWLOC_HAVE_OSF_FALSE='#' -else - HWLOC_HAVE_OSF_TRUE='#' - HWLOC_HAVE_OSF_FALSE= -fi - - if test "x$hwloc_hpux" = "xyes"; then - HWLOC_HAVE_HPUX_TRUE= - HWLOC_HAVE_HPUX_FALSE='#' -else - HWLOC_HAVE_HPUX_TRUE='#' - HWLOC_HAVE_HPUX_FALSE= -fi - - if test "x$hwloc_windows" = "xyes"; then - HWLOC_HAVE_WINDOWS_TRUE= - HWLOC_HAVE_WINDOWS_FALSE='#' -else - HWLOC_HAVE_WINDOWS_TRUE='#' - HWLOC_HAVE_WINDOWS_FALSE= -fi - - if test "x$target_os" = "xmingw32"; then - HWLOC_HAVE_MINGW32_TRUE= - HWLOC_HAVE_MINGW32_FALSE='#' -else - HWLOC_HAVE_MINGW32_TRUE='#' - HWLOC_HAVE_MINGW32_FALSE= -fi - - - if test "x$hwloc_x86_32" = "xyes"; then - HWLOC_HAVE_X86_32_TRUE= - HWLOC_HAVE_X86_32_FALSE='#' -else - HWLOC_HAVE_X86_32_TRUE='#' - HWLOC_HAVE_X86_32_FALSE= -fi - - if test "x$hwloc_x86_64" = "xyes"; then - HWLOC_HAVE_X86_64_TRUE= - HWLOC_HAVE_X86_64_FALSE='#' -else - HWLOC_HAVE_X86_64_TRUE='#' - HWLOC_HAVE_X86_64_FALSE= -fi - - if test "$HWLOC_DOXYGEN_VERSION" = "1.6.2"; then - HWLOC_DOXYGEN_BROKEN_SHORT_NAMES_TRUE= - HWLOC_DOXYGEN_BROKEN_SHORT_NAMES_FALSE='#' -else - HWLOC_DOXYGEN_BROKEN_SHORT_NAMES_TRUE='#' - HWLOC_DOXYGEN_BROKEN_SHORT_NAMES_FALSE= -fi - - if test "x$hwloc_have_cpuid" = "xyes"; then - HWLOC_HAVE_CPUID_TRUE= - HWLOC_HAVE_CPUID_FALSE='#' -else - HWLOC_HAVE_CPUID_TRUE='#' - HWLOC_HAVE_CPUID_FALSE= -fi - - if test "$hwloc_build_utils" = "yes"; then - HWLOC_BUILD_UTILS_TRUE= - HWLOC_BUILD_UTILS_FALSE='#' -else - HWLOC_BUILD_UTILS_TRUE='#' - HWLOC_BUILD_UTILS_FALSE= -fi - - if test "$hwloc_build_tests" = "yes"; then - HWLOC_BUILD_TESTS_TRUE= - HWLOC_BUILD_TESTS_FALSE='#' -else - HWLOC_BUILD_TESTS_TRUE='#' - HWLOC_BUILD_TESTS_FALSE= -fi - - -fi - hwloc_did_am_conditionals=yes - - -# Set the final flags -CFLAGS="$HWLOC_EMBEDDED_CFLAGS $CFLAGS" -CPPFLAGS="$HWLOC_EMBEDDED_CPPFLAGS $CPPFLAGS" -LIBS="$HWLOC_EMBEDDED_LIBS $LIBS" - -# Setup libtool, but disable C++, F77, Java and Windows Resource -# Compiler support -- we don't need that stuff. -# Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - -# Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=no -fi - - - - - - - - - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4' -macro_revision='1.3293' - - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case "$ECHO" in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break - ;; - *) - test "$with_gnu_ld" != yes && break - ;; - esac - fi - done - IFS="$lt_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$lt_cv_path_LD" -if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 </dev/null` in -*GNU* | *'with BFD'*) - lt_cv_prog_gnu_ld=yes - ;; -*) - lt_cv_prog_gnu_ld=no - ;; -esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n $lt_cv_sys_max_cmd_len ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test "$GCC" != yes; then - reload_cmds=false - fi - ;; - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -# Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 -$as_echo "${with_sysroot}" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - - -# Set options -enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. -set dummy ${ac_tool_prefix}as; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AS+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AS"; then - ac_cv_prog_AS="$AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AS="${ac_tool_prefix}as" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AS=$ac_cv_prog_AS -if test -n "$AS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 -$as_echo "$AS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_AS"; then - ac_ct_AS=$AS - # Extract the first word of "as", so it can be a program name with args. -set dummy as; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AS+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AS"; then - ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AS="as" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AS=$ac_cv_prog_ac_ct_AS -if test -n "$ac_ct_AS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 -$as_echo "$ac_ct_AS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_AS" = x; then - AS="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AS=$ac_ct_AS - fi -else - AS="$ac_cv_prog_AS" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - - ;; -esac - -test -z "$AS" && AS=as - - - - - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - enable_dlopen=no - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; pic_mode="$withval" -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - lt_prog_compiler_pic='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach <jrb3@best.com> says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld='-rpath $libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - freebsd1*) - ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test x"$lt_cv_prog_compiler__b" = xyes; then - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test "$lt_cv_irix_exported_symbol" = yes; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib<name>.so - # instead of lib<name>.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report which library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - - - -# Party on -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_BUILD_STANDALONE_TRUE}" && test -z "${HWLOC_BUILD_STANDALONE_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_BUILD_STANDALONE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_GCC_TRUE}" && test -z "${HWLOC_HAVE_GCC_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_GCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_MS_LIB_TRUE}" && test -z "${HWLOC_HAVE_MS_LIB_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_MS_LIB\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_OPENAT_TRUE}" && test -z "${HWLOC_HAVE_OPENAT_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_OPENAT\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_LINUX_LIBNUMA_TRUE}" && test -z "${HWLOC_HAVE_LINUX_LIBNUMA_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_LINUX_LIBNUMA\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_SCHED_SETAFFINITY_TRUE}" && test -z "${HWLOC_HAVE_SCHED_SETAFFINITY_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_SCHED_SETAFFINITY\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_LIBIBVERBS_TRUE}" && test -z "${HWLOC_HAVE_LIBIBVERBS_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_LIBIBVERBS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_CUDA_TRUE}" && test -z "${HWLOC_HAVE_CUDA_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_CUDA\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_MYRIEXPRESS_TRUE}" && test -z "${HWLOC_HAVE_MYRIEXPRESS_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_MYRIEXPRESS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_CUDART_TRUE}" && test -z "${HWLOC_HAVE_CUDART_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_CUDART\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_CAIRO_TRUE}" && test -z "${HWLOC_HAVE_CAIRO_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_CAIRO\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_XML_TRUE}" && test -z "${HWLOC_HAVE_XML_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_XML\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_SET_MEMPOLICY_TRUE}" && test -z "${HWLOC_HAVE_SET_MEMPOLICY_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_SET_MEMPOLICY\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_MBIND_TRUE}" && test -z "${HWLOC_HAVE_MBIND_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_MBIND\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_BUNZIPP_TRUE}" && test -z "${HWLOC_HAVE_BUNZIPP_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_BUNZIPP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_BUILD_DOXYGEN_TRUE}" && test -z "${HWLOC_BUILD_DOXYGEN_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_BUILD_DOXYGEN\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_BUILD_README_TRUE}" && test -z "${HWLOC_BUILD_README_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_BUILD_README\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_INSTALL_DOXYGEN_TRUE}" && test -z "${HWLOC_INSTALL_DOXYGEN_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_INSTALL_DOXYGEN\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_LINUX_TRUE}" && test -z "${HWLOC_HAVE_LINUX_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_LINUX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_IRIX_TRUE}" && test -z "${HWLOC_HAVE_IRIX_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_IRIX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_DARWIN_TRUE}" && test -z "${HWLOC_HAVE_DARWIN_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_DARWIN\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_FREEBSD_TRUE}" && test -z "${HWLOC_HAVE_FREEBSD_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_FREEBSD\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_SOLARIS_TRUE}" && test -z "${HWLOC_HAVE_SOLARIS_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_SOLARIS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_AIX_TRUE}" && test -z "${HWLOC_HAVE_AIX_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_AIX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_OSF_TRUE}" && test -z "${HWLOC_HAVE_OSF_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_OSF\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_HPUX_TRUE}" && test -z "${HWLOC_HAVE_HPUX_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_HPUX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_WINDOWS_TRUE}" && test -z "${HWLOC_HAVE_WINDOWS_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_WINDOWS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_MINGW32_TRUE}" && test -z "${HWLOC_HAVE_MINGW32_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_MINGW32\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_X86_32_TRUE}" && test -z "${HWLOC_HAVE_X86_32_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_X86_32\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_X86_64_TRUE}" && test -z "${HWLOC_HAVE_X86_64_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_X86_64\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_DOXYGEN_BROKEN_SHORT_NAMES_TRUE}" && test -z "${HWLOC_DOXYGEN_BROKEN_SHORT_NAMES_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_DOXYGEN_BROKEN_SHORT_NAMES\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_HAVE_CPUID_TRUE}" && test -z "${HWLOC_HAVE_CPUID_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_HAVE_CPUID\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_BUILD_UTILS_TRUE}" && test -z "${HWLOC_BUILD_UTILS_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_BUILD_UTILS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HWLOC_BUILD_TESTS_TRUE}" && test -z "${HWLOC_BUILD_TESTS_FALSE}"; then - as_fn_error $? "conditional \"HWLOC_BUILD_TESTS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by hwloc $as_me 1.2.1, which was -generated by GNU Autoconf 2.68. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_links="$ac_config_links" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration links: -$config_links - -Configuration commands: -$config_commands - -Report bugs to <http://www.open-mpi.org/community/help/>." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -hwloc config.status 1.2.1 -configured by $0, generated by GNU Autoconf 2.68, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in AS \ -DLLTOOL \ -OBJDUMP \ -SHELL \ -ECHO \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -nm_file_list_spec \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "include/private/autogen/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/private/autogen/config.h" ;; - "include/hwloc/autogen/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/hwloc/autogen/config.h" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; - "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "doc/doxygen-config.cfg") CONFIG_FILES="$CONFIG_FILES doc/doxygen-config.cfg" ;; - "utils/Makefile") CONFIG_FILES="$CONFIG_FILES utils/Makefile" ;; - "hwloc.pc") CONFIG_FILES="$CONFIG_FILES hwloc.pc" ;; - "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; - "tests/linux/Makefile") CONFIG_FILES="$CONFIG_FILES tests/linux/Makefile" ;; - "tests/linux/gather/Makefile") CONFIG_FILES="$CONFIG_FILES tests/linux/gather/Makefile" ;; - "tests/xml/Makefile") CONFIG_FILES="$CONFIG_FILES tests/xml/Makefile" ;; - "tests/ports/Makefile") CONFIG_FILES="$CONFIG_FILES tests/ports/Makefile" ;; - "tests/linux/hwloc-gather-topology") CONFIG_FILES="$CONFIG_FILES tests/linux/hwloc-gather-topology" ;; - "tests/linux/gather/test-gather-topology.sh") CONFIG_FILES="$CONFIG_FILES tests/linux/gather/test-gather-topology.sh" ;; - "tests/linux/test-topology.sh") CONFIG_FILES="$CONFIG_FILES tests/linux/test-topology.sh" ;; - "tests/xml/test-topology.sh") CONFIG_FILES="$CONFIG_FILES tests/xml/test-topology.sh" ;; - "utils/test-hwloc-calc.sh") CONFIG_FILES="$CONFIG_FILES utils/test-hwloc-calc.sh" ;; - "utils/test-hwloc-distrib.sh") CONFIG_FILES="$CONFIG_FILES utils/test-hwloc-distrib.sh" ;; - "chmoding-scripts") CONFIG_COMMANDS="$CONFIG_COMMANDS chmoding-scripts" ;; - "tests/ports/topology.c") CONFIG_LINKS="$CONFIG_LINKS tests/ports/topology.c:src/topology.c" ;; - "tests/ports/traversal.c") CONFIG_LINKS="$CONFIG_LINKS tests/ports/traversal.c:src/traversal.c" ;; - "tests/ports/topology-synthetic.c") CONFIG_LINKS="$CONFIG_LINKS tests/ports/topology-synthetic.c:src/topology-synthetic.c" ;; - "tests/ports/topology-solaris.c") CONFIG_LINKS="$CONFIG_LINKS tests/ports/topology-solaris.c:src/topology-solaris.c" ;; - "tests/ports/topology-aix.c") CONFIG_LINKS="$CONFIG_LINKS tests/ports/topology-aix.c:src/topology-aix.c" ;; - "tests/ports/topology-osf.c") CONFIG_LINKS="$CONFIG_LINKS tests/ports/topology-osf.c:src/topology-osf.c" ;; - "tests/ports/topology-windows.c") CONFIG_LINKS="$CONFIG_LINKS tests/ports/topology-windows.c:src/topology-windows.c" ;; - "tests/ports/topology-darwin.c") CONFIG_LINKS="$CONFIG_LINKS tests/ports/topology-darwin.c:src/topology-darwin.c" ;; - "tests/ports/topology-freebsd.c") CONFIG_LINKS="$CONFIG_LINKS tests/ports/topology-freebsd.c:src/topology-freebsd.c" ;; - "tests/ports/topology-hpux.c") CONFIG_LINKS="$CONFIG_LINKS tests/ports/topology-hpux.c:src/topology-hpux.c" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' <conf$$subs.awk | sed ' -/^[^""]/{ - N - s/\n// -} -' >>$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' <confdefs.h | sed ' -s/'"$ac_delim"'/"\\\ -"/g' >>$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - :L) - # - # CONFIG_LINK - # - - if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then - : - else - # Prefer the file from the source tree if names are identical. - if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then - ac_source=$srcdir/$ac_source - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 -$as_echo "$as_me: linking $ac_source to $ac_file" >&6;} - - if test ! -r "$ac_source"; then - as_fn_error $? "$ac_source: file not found" "$LINENO" 5 - fi - rm -f "$ac_file" - - # Try a relative symlink, then a hard link, then a copy. - case $ac_source in - [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; - *) ac_rel_source=$ac_top_build_prefix$ac_source ;; - esac - ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || - ln "$ac_source" "$ac_file" 2>/dev/null || - cp -p "$ac_source" "$ac_file" || - as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 - fi - ;; - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "chmoding-scripts":C) chmod +x tests/linux/test-topology.sh tests/xml/test-topology.sh tests/linux/hwloc-gather-topology tests/linux/gather/test-gather-topology.sh utils/test-hwloc-calc.sh utils/test-hwloc-distrib.sh ;; - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="" - -# ### BEGIN LIBTOOL CONFIG - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Assembler program. -AS=$lt_AS - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Object dumper program. -OBJDUMP=$lt_OBJDUMP - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and in which our libraries should be installed. -lt_sysroot=$lt_sysroot - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - if test x"$xsi_shell" = xyes; then - sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ -func_dirname ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_basename ()$/,/^} # func_basename /c\ -func_basename ()\ -{\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ -func_dirname_and_basename ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ -func_stripname ()\ -{\ -\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ -\ # positional parameters, so assign one to ordinary parameter first.\ -\ func_stripname_result=${3}\ -\ func_stripname_result=${func_stripname_result#"${1}"}\ -\ func_stripname_result=${func_stripname_result%"${2}"}\ -} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ -func_split_long_opt ()\ -{\ -\ func_split_long_opt_name=${1%%=*}\ -\ func_split_long_opt_arg=${1#*=}\ -} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ -func_split_short_opt ()\ -{\ -\ func_split_short_opt_arg=${1#??}\ -\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ -} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ -func_lo2o ()\ -{\ -\ case ${1} in\ -\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ -\ *) func_lo2o_result=${1} ;;\ -\ esac\ -} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_xform ()$/,/^} # func_xform /c\ -func_xform ()\ -{\ - func_xform_result=${1%.*}.lo\ -} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_arith ()$/,/^} # func_arith /c\ -func_arith ()\ -{\ - func_arith_result=$(( $* ))\ -} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_len ()$/,/^} # func_len /c\ -func_len ()\ -{\ - func_len_result=${#1}\ -} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - -fi - -if test x"$lt_shell_append" = xyes; then - sed -e '/^func_append ()$/,/^} # func_append /c\ -func_append ()\ -{\ - eval "${1}+=\\${2}"\ -} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ -func_append_quoted ()\ -{\ -\ func_quote_for_eval "${2}"\ -\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ -} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 -$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} -fi - - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - diff --git a/hwloc-1.2.1/configure.ac b/hwloc-1.2.1/configure.ac deleted file mode 100644 index 21bf8853..00000000 --- a/hwloc-1.2.1/configure.ac +++ /dev/null @@ -1,156 +0,0 @@ -# -*- shell-script -*- -# -# Copyright © 2009 CNRS -# Copyright © 2009-2010 INRIA. All rights reserved. -# Copyright © 2009, 2011 Université Bordeaux 1 -# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved. -# -# See COPYING in top-level directory. -# -# Additional copyrights may follow -# -# $HEADER$ -# - -AC_INIT([hwloc], - [m4_normalize(esyscmd([config/hwloc_get_version.sh VERSION --base]))], - [http://www.open-mpi.org/community/help/], [hwloc]) -AC_PREREQ(2.63) -AC_CONFIG_AUX_DIR(./config) -# Note that this directory must *exactly* match what was specified via -# -I in ACLOCAL_AMFLAGS in the top-level Makefile.am. -AC_CONFIG_MACRO_DIR(./config) - -cat <<EOF - -### -### Configuring hwloc distribution tarball -### Startup tests -### -EOF - -# This must be before AM_INIT_AUTOMAKE -AC_CANONICAL_TARGET - -# Init automake -AM_INIT_AUTOMAKE([1.10 dist-bzip2 subdir-objects foreign tar-ustar -Wall -Werror]) -m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) - -# We want new Libtool. None of that old stuff. Pfft. -m4_ifdef([LT_PREREQ], [], - [m4_fatal([libtool version 2.2.6 or higher is required], [63])]) -LT_PREREQ([2.2.6]) - -AC_LANG([C]) - -# Make configure depend on the VERSION file, since it's used in AC_INIT -AC_SUBST([CONFIGURE_DEPENDENCIES], ['$(top_srcdir)/VERSION']) - -# Get the version of hwloc that we are installing -AC_MSG_CHECKING([for hwloc version]) -HWLOC_VERSION="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION`" -HWLOC_MAJOR_VERSION="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION --major`" -HWLOC_MINOR_VERSION="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION --minor`" -HWLOC_RELEASE_VERSION="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION --release`" -HWLOC_REPO_REV="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION --repo-rev`" -HWLOC_RELEASE_DATE="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION --release-date`" -AC_SUBST(HWLOC_VERSION) -AC_SUBST(HWLOC_SVN_R) -AC_SUBST(HWLOC_RELEASE_DATE) -AC_DEFINE_UNQUOTED([HWLOC_MAJOR_VERSION], [$HWLOC_MAJOR_VERSION], - [Major version of hwloc]) -AC_DEFINE_UNQUOTED([HWLOC_MINOR_VERSION], [$HWLOC_MINOR_VERSION], - [Minor version of hwloc]) -AC_DEFINE_UNQUOTED([HWLOC_RELEASE_VERSION], [$HWLOC_RELEASE_VERSION], - [Release version of hwloc]) -AC_MSG_RESULT([$HWLOC_VERSION]) - -# Override/fixup the version numbers set by AC_INIT, since on -# developer builds, there's no good way to know what the version is -# before running configure :(. We only use the base version number -# (ie, no svn r numbers) for the version set in AC_INIT. This will -# always match reality because we add the VERSION file (the only way -# to change the major.minor.release{greek}) into the configure -# dependencies. - -PACKAGE_VERSION="$HWLOC_VERSION" -PACKAGE_STRING="${PACKAGE_NAME} ${PACKAGE_VERSION}" -VERSION="${PACKAGE_VERSION}" - -# For standalone configurations, we also include a .so version number. - -. $srcdir/VERSION -AC_SUBST([libhwloc_so_version]) - -# Setup the header file -AH_TOP([/* -*- c -*- - * - * Copyright © 2009 CNRS, INRIA., Université Bordeaux 1 All rights reserved. - * Copyright © 2009 Cisco Systems, Inc. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - * - * This file is automatically generated by configure. Edits will be lost - * the next time you run configure! - */ - -#ifndef HWLOC_CONFIGURE_H -#define HWLOC_CONFIGURE_H -]) -AH_BOTTOM([ -#endif /* HWLOC_CONFIGURE_H */ -]) - -# Setup C compiler - -CFLAGS_save="$CFLAGS" -AC_PROG_CC -AM_PROG_CC_C_O -CFLAGS="$CFLAGS_save" - -# Define hwloc's configure arguments -HWLOC_DEFINE_ARGS - -# If debug mode, add -g -AS_IF([test "$hwloc_debug" = "1"], - [CFLAGS="$CFLAGS -g"]) - -# If the user didn't specifically ask for embedding mode, default to -# standalone mode -AS_IF([test "$enable_embedded_mode" != "yes"], - [AS_IF([test ! -d "$srcdir/doc"], - [AC_MSG_WARN([The hwloc source tree looks incomplete for a standalone]) - AC_MSG_WARN([build. Perhaps this hwloc tree is intended for an embedded]) - AC_MSG_WARN([build? Try using the --enable-embedded-mode switch.]) - AC_MSG_ERROR([Cannot build standalone hwloc])], - [HWLOC_BUILD_STANDALONE])]) - -# Setup the hwloc core -HWLOC_SETUP_CORE([], [], [AC_MSG_ERROR([Cannot build hwloc core])], [1]) - -# Setup hwloc's docs, utils, and tests -AS_IF([test "$hwloc_mode" = "standalone"], - [HWLOC_SETUP_DOCS - HWLOC_SETUP_UTILS - HWLOC_SETUP_TESTS]) - -# Run the AM_CONDITIONALs -HWLOC_DO_AM_CONDITIONALS - -# Set the final flags -CFLAGS="$HWLOC_EMBEDDED_CFLAGS $CFLAGS" -CPPFLAGS="$HWLOC_EMBEDDED_CPPFLAGS $CPPFLAGS" -LIBS="$HWLOC_EMBEDDED_LIBS $LIBS" - -# Setup libtool, but disable C++, F77, Java and Windows Resource -# Compiler support -- we don't need that stuff. -AM_ENABLE_SHARED -AM_DISABLE_STATIC -AM_PROG_LIBTOOL([win32-dll]) -LT_LANG([C]) - -# Party on -AC_OUTPUT diff --git a/hwloc-1.2.1/hwloc.pc.in b/hwloc-1.2.1/hwloc.pc.in deleted file mode 100644 index a5bb09ab..00000000 --- a/hwloc-1.2.1/hwloc.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: hwloc -Description: Hardware locality detection and management library -Version: @VERSION@ -Requires.private: @HWLOC_REQUIRES@ -Cflags: -I${includedir} -Libs: -L${libdir} -lhwloc -Libs.private: @LIBS@ diff --git a/hwloc-1.2.1/include/Makefile.am b/hwloc-1.2.1/include/Makefile.am deleted file mode 100644 index 690ad888..00000000 --- a/hwloc-1.2.1/include/Makefile.am +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright © 2009-2010 INRIA. All rights reserved. -# Copyright © 2009-2010 Université Bordeaux 1 -# Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. -# See COPYING in top-level directory. - -# Only install the headers if we're in standalone mode (meaning: -# *don't* install the headers if we're in embedded mode). - -if HWLOC_BUILD_STANDALONE -include_HEADERS = hwloc.h -include_hwlocdir = $(includedir)/hwloc -include_hwloc_HEADERS = \ - hwloc/bitmap.h \ - hwloc/cpuset.h \ - hwloc/helper.h \ - hwloc/myriexpress.h \ - hwloc/openfabrics-verbs.h \ - hwloc/cuda.h \ - hwloc/cudart.h \ - hwloc/rename.h -include_hwloc_autogendir = $(includedir)/hwloc/autogen -nodist_include_hwloc_autogen_HEADERS = hwloc/autogen/config.h - -noinst_HEADERS = \ - private/private.h \ - private/debug.h \ - private/misc.h \ - private/cpuid.h - -if HWLOC_HAVE_LINUX -include_hwloc_HEADERS += \ - hwloc/linux.h \ - hwloc/linux-libnuma.h -endif HWLOC_HAVE_LINUX - -if HWLOC_HAVE_SCHED_SETAFFINITY -include_hwloc_HEADERS += hwloc/glibc-sched.h -endif HWLOC_HAVE_SCHED_SETAFFINITY - -endif HWLOC_BUILD_STANDALONE diff --git a/hwloc-1.2.1/include/Makefile.in b/hwloc-1.2.1/include/Makefile.in deleted file mode 100644 index 131bccfe..00000000 --- a/hwloc-1.2.1/include/Makefile.in +++ /dev/null @@ -1,566 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Copyright © 2009-2010 INRIA. All rights reserved. -# Copyright © 2009-2010 Université Bordeaux 1 -# Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. -# See COPYING in top-level directory. - -# Only install the headers if we're in standalone mode (meaning: -# *don't* install the headers if we're in embedded mode). - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -@HWLOC_BUILD_STANDALONE_TRUE@@HWLOC_HAVE_LINUX_TRUE@am__append_1 = \ -@HWLOC_BUILD_STANDALONE_TRUE@@HWLOC_HAVE_LINUX_TRUE@ hwloc/linux.h \ -@HWLOC_BUILD_STANDALONE_TRUE@@HWLOC_HAVE_LINUX_TRUE@ hwloc/linux-libnuma.h - -@HWLOC_BUILD_STANDALONE_TRUE@@HWLOC_HAVE_SCHED_SETAFFINITY_TRUE@am__append_2 = hwloc/glibc-sched.h -subdir = hwloc-1.2.1/include -DIST_COMMON = $(am__include_HEADERS_DIST) \ - $(am__include_hwloc_HEADERS_DIST) $(am__noinst_HEADERS_DIST) \ - $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/hwloc-1.2.1/config/hwloc_check_attributes.m4 \ - $(top_srcdir)/hwloc-1.2.1/config/hwloc_check_visibility.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/hwloc-1.2.1/config/hwloc.m4 \ - $(top_srcdir)/hwloc-1.2.1/config/hwloc_pkg.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h \ - $(top_builddir)/hwloc-1.2.1/include/private/autogen/config.h \ - $(top_builddir)/hwloc-1.2.1/include/hwloc/autogen/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -am__include_HEADERS_DIST = hwloc.h -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__installdirs = "$(DESTDIR)$(includedir)" \ - "$(DESTDIR)$(include_hwlocdir)" \ - "$(DESTDIR)$(include_hwloc_autogendir)" -am__include_hwloc_HEADERS_DIST = hwloc/bitmap.h hwloc/cpuset.h \ - hwloc/helper.h hwloc/myriexpress.h hwloc/openfabrics-verbs.h \ - hwloc/cuda.h hwloc/cudart.h hwloc/rename.h hwloc/linux.h \ - hwloc/linux-libnuma.h hwloc/glibc-sched.h -am__noinst_HEADERS_DIST = private/private.h private/debug.h \ - private/misc.h private/cpuid.h -HEADERS = $(include_HEADERS) $(include_hwloc_HEADERS) \ - $(nodist_include_hwloc_autogen_HEADERS) $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BASH = @BASH@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -HWLOC_CFLAGS = @HWLOC_CFLAGS@ -HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ -HWLOC_EMBEDDED_CFLAGS = @HWLOC_EMBEDDED_CFLAGS@ -HWLOC_EMBEDDED_CPPFLAGS = @HWLOC_EMBEDDED_CPPFLAGS@ -HWLOC_EMBEDDED_LDADD = @HWLOC_EMBEDDED_LDADD@ -HWLOC_EMBEDDED_LIBS = @HWLOC_EMBEDDED_LIBS@ -HWLOC_HAVE_XML = @HWLOC_HAVE_XML@ -HWLOC_KERRIGHED_CFLAGS = @HWLOC_KERRIGHED_CFLAGS@ -HWLOC_KERRIGHED_LIBS = @HWLOC_KERRIGHED_LIBS@ -HWLOC_LDFLAGS = @HWLOC_LDFLAGS@ -HWLOC_LIBS = @HWLOC_LIBS@ -HWLOC_LINUX_LIBNUMA_LIBS = @HWLOC_LINUX_LIBNUMA_LIBS@ -HWLOC_MS_LIB = @HWLOC_MS_LIB@ -HWLOC_PKG_CONFIG = @HWLOC_PKG_CONFIG@ -HWLOC_REQUIRES = @HWLOC_REQUIRES@ -HWLOC_XML_CFLAGS = @HWLOC_XML_CFLAGS@ -HWLOC_XML_LIBS = @HWLOC_XML_LIBS@ -HWLOC_top_builddir = @HWLOC_top_builddir@ -HWLOC_top_srcdir = @HWLOC_top_srcdir@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -@HWLOC_BUILD_STANDALONE_TRUE@include_HEADERS = hwloc.h -@HWLOC_BUILD_STANDALONE_TRUE@include_hwlocdir = $(includedir)/hwloc -@HWLOC_BUILD_STANDALONE_TRUE@include_hwloc_HEADERS = hwloc/bitmap.h \ -@HWLOC_BUILD_STANDALONE_TRUE@ hwloc/cpuset.h hwloc/helper.h \ -@HWLOC_BUILD_STANDALONE_TRUE@ hwloc/myriexpress.h \ -@HWLOC_BUILD_STANDALONE_TRUE@ hwloc/openfabrics-verbs.h \ -@HWLOC_BUILD_STANDALONE_TRUE@ hwloc/cuda.h hwloc/cudart.h \ -@HWLOC_BUILD_STANDALONE_TRUE@ hwloc/rename.h $(am__append_1) \ -@HWLOC_BUILD_STANDALONE_TRUE@ $(am__append_2) -@HWLOC_BUILD_STANDALONE_TRUE@include_hwloc_autogendir = $(includedir)/hwloc/autogen -@HWLOC_BUILD_STANDALONE_TRUE@nodist_include_hwloc_autogen_HEADERS = hwloc/autogen/config.h -@HWLOC_BUILD_STANDALONE_TRUE@noinst_HEADERS = \ -@HWLOC_BUILD_STANDALONE_TRUE@ private/private.h \ -@HWLOC_BUILD_STANDALONE_TRUE@ private/debug.h \ -@HWLOC_BUILD_STANDALONE_TRUE@ private/misc.h \ -@HWLOC_BUILD_STANDALONE_TRUE@ private/cpuid.h - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu hwloc-1.2.1/include/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu hwloc-1.2.1/include/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-includeHEADERS: $(include_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" - @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ - done - -uninstall-includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(includedir)" && rm -f $$files -install-include_hwlocHEADERS: $(include_hwloc_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(include_hwlocdir)" || $(MKDIR_P) "$(DESTDIR)$(include_hwlocdir)" - @list='$(include_hwloc_HEADERS)'; test -n "$(include_hwlocdir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(include_hwlocdir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(include_hwlocdir)" || exit $$?; \ - done - -uninstall-include_hwlocHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(include_hwloc_HEADERS)'; test -n "$(include_hwlocdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(include_hwlocdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(include_hwlocdir)" && rm -f $$files -install-nodist_include_hwloc_autogenHEADERS: $(nodist_include_hwloc_autogen_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(include_hwloc_autogendir)" || $(MKDIR_P) "$(DESTDIR)$(include_hwloc_autogendir)" - @list='$(nodist_include_hwloc_autogen_HEADERS)'; test -n "$(include_hwloc_autogendir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(include_hwloc_autogendir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(include_hwloc_autogendir)" || exit $$?; \ - done - -uninstall-nodist_include_hwloc_autogenHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(nodist_include_hwloc_autogen_HEADERS)'; test -n "$(include_hwloc_autogendir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(include_hwloc_autogendir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(include_hwloc_autogendir)" && rm -f $$files - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(includedir)" "$(DESTDIR)$(include_hwlocdir)" "$(DESTDIR)$(include_hwloc_autogendir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-includeHEADERS install-include_hwlocHEADERS \ - install-nodist_include_hwloc_autogenHEADERS - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-includeHEADERS uninstall-include_hwlocHEADERS \ - uninstall-nodist_include_hwloc_autogenHEADERS - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool ctags distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am \ - install-includeHEADERS install-include_hwlocHEADERS \ - install-info install-info-am install-man \ - install-nodist_include_hwloc_autogenHEADERS install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-includeHEADERS \ - uninstall-include_hwlocHEADERS \ - uninstall-nodist_include_hwloc_autogenHEADERS - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/hwloc-1.2.1/include/hwloc.h b/hwloc-1.2.1/include/hwloc.h deleted file mode 100644 index 77a57e33..00000000 --- a/hwloc-1.2.1/include/hwloc.h +++ /dev/null @@ -1,1707 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2011 INRIA. All rights reserved. - * Copyright © 2009-2011 Université Bordeaux 1 - * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/** \file - * \brief The hwloc API. - * - * See hwloc/bitmap.h for bitmap specific macros. - * See hwloc/helper.h for high-level topology traversal helpers. - */ - -#ifndef HWLOC_H -#define HWLOC_H - -#include <hwloc/autogen/config.h> -#include <sys/types.h> -#include <stdio.h> -#include <string.h> -#include <limits.h> - -/* - * Symbol transforms - */ -#include <hwloc/rename.h> - -/* - * Bitmap definitions - */ - -#include <hwloc/bitmap.h> -#include <hwloc/cpuset.h> - - -#ifdef __cplusplus -extern "C" { -#endif - - -/** \defgroup hwlocality_api_version API version - * @{ - */ - -/** \brief Indicate at build time which hwloc API version is being used. */ -#define HWLOC_API_VERSION 0x00010200 - -/** \brief Indicate at runtime which hwloc API version was used at build time. */ -HWLOC_DECLSPEC unsigned hwloc_get_api_version(void); - -/** @} */ - - - -/** \defgroup hwlocality_topology Topology context - * @{ - */ - -struct hwloc_topology; -/** \brief Topology context - * - * To be initialized with hwloc_topology_init() and built with hwloc_topology_load(). - */ -typedef struct hwloc_topology * hwloc_topology_t; - -/** @} */ - - - -/** \defgroup hwlocality_sets Object sets (hwloc_cpuset_t and hwloc_nodeset_t) - * - * Hwloc uses bitmaps to represent two distinct kinds of object sets: - * CPU sets (::hwloc_cpuset_t) and NUMA node sets (::hwloc_nodeset_t). - * These types are both typedefs to a common back end type - * (::hwloc_bitmap_t), and therefore all the hwloc bitmap functions - * are applicable to both ::hwloc_cpuset_t and ::hwloc_nodeset_t (see - * \ref hwlocality_bitmap). - * - * The rationale for having two different types is that even though - * the actions one wants to perform on these types are the same (e.g., - * enable and disable individual items in the set/mask), they're used - * in very different contexts: one for specifying which processors to - * use and one for specifying which NUMA nodes to use. Hence, the - * name difference is really just to reflect the intent of where the - * type is used. - * - * @{ - */ - -/** \brief A CPU set is a bitmap whose bits are set according to CPU - * physical OS indexes. - * - * It may be consulted and modified with the bitmap API as any - * ::hwloc_bitmap_t (see hwloc/bitmap.h). - */ -typedef hwloc_bitmap_t hwloc_cpuset_t; -/** \brief A non-modifiable ::hwloc_cpuset_t. */ -typedef hwloc_const_bitmap_t hwloc_const_cpuset_t; - -/** \brief A node set is a bitmap whose bits are set according to NUMA - * memory node physical OS indexes. - * - * It may be consulted and modified with the bitmap API as any - * ::hwloc_bitmap_t (see hwloc/bitmap.h). - * - * When binding memory on a system without any NUMA node - * (when the whole memory is considered as a single memory bank), - * the nodeset may be either empty (no memory selected) - * or full (whole system memory selected). - * - * See also \ref hwlocality_helper_nodeset_convert. - */ -typedef hwloc_bitmap_t hwloc_nodeset_t; -/** \brief A non-modifiable ::hwloc_nodeset_t. - */ -typedef hwloc_const_bitmap_t hwloc_const_nodeset_t; - -/** @} */ - - - -/** \defgroup hwlocality_types Topology Object Types - * @{ - */ - -/** \brief Type of topology object. - * - * \note Do not rely on the ordering or completeness of the values as new ones - * may be defined in the future! If you need to compare types, use - * hwloc_compare_types() instead. - */ -typedef enum { - /* *************************************************************** - WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING - - If new enum values are added here, you MUST also go update the - obj_type_order[] and obj_order_type[] arrays in src/topology.c. - - WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING - *************************************************************** */ - - HWLOC_OBJ_SYSTEM, /**< \brief Whole system (may be a cluster of machines). - * The whole system that is accessible to hwloc. - * That may comprise several machines in SSI systems - * like Kerrighed. - */ - HWLOC_OBJ_MACHINE, /**< \brief Machine. - * The typical root object type. - * A set of processors and memory with cache - * coherency. - */ - HWLOC_OBJ_NODE, /**< \brief NUMA node. - * A set of processors around memory which the - * processors can directly access. - */ - HWLOC_OBJ_SOCKET, /**< \brief Socket, physical package, or chip. - * In the physical meaning, i.e. that you can add - * or remove physically. - */ - HWLOC_OBJ_CACHE, /**< \brief Data cache. - * Can be L1, L2, L3, ... - */ - HWLOC_OBJ_CORE, /**< \brief Core. - * A computation unit (may be shared by several - * logical processors). - */ - HWLOC_OBJ_PU, /**< \brief Processing Unit, or (Logical) Processor. - * An execution unit (may share a core with some - * other logical processors, e.g. in the case of - * an SMT core). - * - * Objects of this kind are always reported and can - * thus be used as fallback when others are not. - */ - - HWLOC_OBJ_GROUP, /**< \brief Group objects. - * Objects which do not fit in the above but are - * detected by hwloc and are useful to take into - * account for affinity. For instance, some operating systems - * expose their arbitrary processors aggregation this - * way. And hwloc may insert such objects to group - * NUMA nodes according to their distances. - * - * These objects are ignored when they do not bring - * any structure. - */ - - HWLOC_OBJ_MISC, /**< \brief Miscellaneous objects. - * Objects without particular meaning, that can e.g. be - * added by the application for its own use. - */ - - HWLOC_OBJ_TYPE_MAX /**< \private Sentinel value */ - - /* *************************************************************** - WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING - - If new enum values are added here, you MUST also go update the - obj_type_order[] and obj_order_type[] arrays in src/topology.c. - - WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING - *************************************************************** */ -} hwloc_obj_type_t; - -/** \brief Compare the depth of two object types - * - * Types shouldn't be compared as they are, since newer ones may be added in - * the future. This function returns less than, equal to, or greater than zero - * respectively if \p type1 objects usually include \p type2 objects, are the - * same as \p type2 objects, or are included in \p type2 objects. If the types - * can not be compared (because neither is usually contained in the other), - * HWLOC_TYPE_UNORDERED is returned. Object types containing CPUs can always - * be compared (usually, a system contains machines which contain nodes which - * contain sockets which contain caches, which contain cores, which contain - * processors). - * - * \note HWLOC_OBJ_PU will always be the deepest. - * \note This does not mean that the actual topology will respect that order: - * e.g. as of today cores may also contain caches, and sockets may also contain - * nodes. This is thus just to be seen as a fallback comparison method. - */ -HWLOC_DECLSPEC int hwloc_compare_types (hwloc_obj_type_t type1, hwloc_obj_type_t type2) __hwloc_attribute_const; - -enum hwloc_compare_types_e { - HWLOC_TYPE_UNORDERED = INT_MAX /**< \brief Value returned by hwloc_compare_types when types can not be compared. \hideinitializer */ -}; - -/** @} */ - - - -/** \defgroup hwlocality_objects Topology Objects - * @{ - */ - -union hwloc_obj_attr_u; - -/** \brief Object memory */ -struct hwloc_obj_memory_s { - hwloc_uint64_t total_memory; /**< \brief Total memory (in bytes) in this object and its children */ - hwloc_uint64_t local_memory; /**< \brief Local memory (in bytes) */ - - unsigned page_types_len; /**< \brief Size of array \p page_types */ - /** \brief Array of local memory page types, \c NULL if no local memory and \p page_types is 0. - * - * The array is sorted by increasing \p size fields. - * It contains \p page_types_len slots. - */ - struct hwloc_obj_memory_page_type_s { - hwloc_uint64_t size; /**< \brief Size of pages */ - hwloc_uint64_t count; /**< \brief Number of pages of this size */ - } * page_types; -}; - -/** \brief Structure of a topology object - * - * Applications must not modify any field except hwloc_obj.userdata. - */ -struct hwloc_obj { - /* physical information */ - hwloc_obj_type_t type; /**< \brief Type of object */ - unsigned os_index; /**< \brief OS-provided physical index number */ - char *name; /**< \brief Object description if any */ - - struct hwloc_obj_memory_s memory; /**< \brief Memory attributes */ - - union hwloc_obj_attr_u *attr; /**< \brief Object type-specific Attributes, - * may be \c NULL if no attribute value was found */ - - /* global position */ - unsigned depth; /**< \brief Vertical index in the hierarchy */ - unsigned logical_index; /**< \brief Horizontal index in the whole list of similar objects, - * could be a "cousin_rank" since it's the rank within the "cousin" list below */ - signed os_level; /**< \brief OS-provided physical level, -1 if unknown or meaningless */ - - /* cousins are all objects of the same type (and depth) across the entire topology */ - struct hwloc_obj *next_cousin; /**< \brief Next object of same type and depth */ - struct hwloc_obj *prev_cousin; /**< \brief Previous object of same type and depth */ - - /* children of the same parent are siblings, even if they may have different type and depth */ - struct hwloc_obj *parent; /**< \brief Parent, \c NULL if root (system object) */ - unsigned sibling_rank; /**< \brief Index in parent's \c children[] array */ - struct hwloc_obj *next_sibling; /**< \brief Next object below the same parent */ - struct hwloc_obj *prev_sibling; /**< \brief Previous object below the same parent */ - - /* children array below this object */ - unsigned arity; /**< \brief Number of children */ - struct hwloc_obj **children; /**< \brief Children, \c children[0 .. arity -1] */ - struct hwloc_obj *first_child; /**< \brief First child */ - struct hwloc_obj *last_child; /**< \brief Last child */ - - /* misc */ - void *userdata; /**< \brief Application-given private data pointer, initialized to \c NULL, use it as you wish */ - - /* cpusets and nodesets */ - hwloc_cpuset_t cpuset; /**< \brief CPUs covered by this object - * - * This is the set of CPUs for which there are PU objects in the topology - * under this object, i.e. which are known to be physically contained in this - * object and known how (the children path between this object and the PU - * objects). - * - * If the HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM configuration flag is set, some of - * these CPUs may be offline, or not allowed for binding, see online_cpuset - * and allowed_cpuset. - * - * \note Its value must not be changed, hwloc_bitmap_dup must be used instead. - */ - hwloc_cpuset_t complete_cpuset; /**< \brief The complete CPU set of logical processors of this object, - * - * This includes not only the same as the cpuset field, but also the CPUs for - * which topology information is unknown or incomplete, and the CPUs that are - * ignored when the HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM flag is not set. - * Thus no corresponding PU object may be found in the topology, because the - * precise position is undefined. It is however known that it would be somewhere - * under this object. - * - * \note Its value must not be changed, hwloc_bitmap_dup must be used instead. - */ - hwloc_cpuset_t online_cpuset; /**< \brief The CPU set of online logical processors - * - * This includes the CPUs contained in this object that are online, i.e. draw - * power and can execute threads. It may however not be allowed to bind to - * them due to administration rules, see allowed_cpuset. - * - * \note Its value must not be changed, hwloc_bitmap_dup must be used instead. - */ - hwloc_cpuset_t allowed_cpuset; /**< \brief The CPU set of allowed logical processors - * - * This includes the CPUs contained in this object which are allowed for - * binding, i.e. passing them to the hwloc binding functions should not return - * permission errors. This is usually restricted by administration rules. - * Some of them may however be offline so binding to them may still not be - * possible, see online_cpuset. - * - * \note Its value must not be changed, hwloc_bitmap_dup must be used instead. - */ - - hwloc_nodeset_t nodeset; /**< \brief NUMA nodes covered by this object or containing this object - * - * This is the set of NUMA nodes for which there are NODE objects in the - * topology under or above this object, i.e. which are known to be physically - * contained in this object or containing it and known how (the children path - * between this object and the NODE objects). - * - * In the end, these nodes are those that are close to the current object. - * - * If the HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM configuration flag is set, some of - * these nodes may not be allowed for allocation, see allowed_nodeset. - * - * If there are no NUMA nodes in the machine, all the memory is close to this - * object, so \p nodeset is full. - * - * \note Its value must not be changed, hwloc_bitmap_dup must be used instead. - */ - hwloc_nodeset_t complete_nodeset; /**< \brief The complete NUMA node set of this object, - * - * This includes not only the same as the nodeset field, but also the NUMA - * nodes for which topology information is unknown or incomplete, and the nodes - * that are ignored when the HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM flag is not set. - * Thus no corresponding NODE object may be found in the topology, because the - * precise position is undefined. It is however known that it would be - * somewhere under this object. - * - * If there are no NUMA nodes in the machine, all the memory is close to this - * object, so \p complete_nodeset is full. - * - * \note Its value must not be changed, hwloc_bitmap_dup must be used instead. - */ - hwloc_nodeset_t allowed_nodeset; /**< \brief The set of allowed NUMA memory nodes - * - * This includes the NUMA memory nodes contained in this object which are - * allowed for memory allocation, i.e. passing them to NUMA node-directed - * memory allocation should not return permission errors. This is usually - * restricted by administration rules. - * - * If there are no NUMA nodes in the machine, all the memory is close to this - * object, so \p allowed_nodeset is full. - * - * \note Its value must not be changed, hwloc_bitmap_dup must be used instead. - */ - - struct hwloc_distances_s **distances; /**< \brief Distances between all objects at same depth below this object */ - unsigned distances_count; - - struct hwloc_obj_info_s *infos; /**< \brief Array of stringified info type=name. */ - unsigned infos_count; /**< \brief Size of infos array. */ -}; -/** - * \brief Convenience typedef; a pointer to a struct hwloc_obj. - */ -typedef struct hwloc_obj * hwloc_obj_t; - -/** \brief Object type-specific Attributes */ -union hwloc_obj_attr_u { - /** \brief Cache-specific Object Attributes */ - struct hwloc_cache_attr_s { - hwloc_uint64_t size; /**< \brief Size of cache in bytes */ - unsigned depth; /**< \brief Depth of cache */ - unsigned linesize; /**< \brief Cache-line size in bytes */ - } cache; - /** \brief Group-specific Object Attributes */ - struct hwloc_group_attr_s { - unsigned depth; /**< \brief Depth of group object */ - } group; -}; - -/** \brief Distances between objects - * - * One object may contain a distance structure describing distances - * between all its descendants at a given relative depth. If the - * containing object is the root object of the topology, then the - * distances are available for all objects in the machine. - * - * The distance may be a memory latency, as defined by the ACPI SLIT - * specification. If so, the \p latency pointer will not be \c NULL - * and the pointed array will contain non-zero values. - * - * In the future, some other types of distances may be considered. - * In these cases, \p latency will be \c NULL. - */ -struct hwloc_distances_s { - unsigned relative_depth; /**< \brief Relative depth of the considered objects - * below the object containing this distance information. */ - unsigned nbobjs; /**< \brief Number of objects considered in the matrix. - * It is the number of descendant objects at \p relative_depth - * below the containing object. - * It corresponds to the result of hwloc_get_nbobjs_inside_cpuset_by_depth. */ - - float *latency; /**< \brief Matrix of latencies between objects, stored as a one-dimension array. - * May be \c NULL if the distances considered here are not latencies. - * Values are normalized to get 1.0 as the minimal value in the matrix. - * Latency from i-th to j-th object is stored in slot i*nbobjs+j. - */ - float latency_max; /**< \brief The maximal value in the latency matrix. */ - float latency_base; /**< \brief The multiplier that should be applied to latency matrix - * to retrieve the original OS-provided latencies. - * Usually 10 on Linux since ACPI SLIT uses 10 for local latency. - */ -}; - -/** \brief Object info */ -struct hwloc_obj_info_s { - char *name; /**< \brief Info name */ - char *value; /**< \brief Info value */ -}; - -/** @} */ - - - -/** \defgroup hwlocality_creation Create and Destroy Topologies - * @{ - */ - -/** \brief Allocate a topology context. - * - * \param[out] topologyp is assigned a pointer to the new allocated context. - * - * \return 0 on success, -1 on error. - */ -HWLOC_DECLSPEC int hwloc_topology_init (hwloc_topology_t *topologyp); - -/** \brief Build the actual topology - * - * Build the actual topology once initialized with hwloc_topology_init() and - * tuned with \ref hwlocality_configuration routines. - * No other routine may be called earlier using this topology context. - * - * \param topology is the topology to be loaded with objects. - * - * \return 0 on success, -1 on error. - * - * \sa hwlocality_configuration - */ -HWLOC_DECLSPEC int hwloc_topology_load(hwloc_topology_t topology); - -/** \brief Terminate and free a topology context - * - * \param topology is the topology to be freed - */ -HWLOC_DECLSPEC void hwloc_topology_destroy (hwloc_topology_t topology); - -/** \brief Run internal checks on a topology structure - * - * \param topology is the topology to be checked - */ -HWLOC_DECLSPEC void hwloc_topology_check(hwloc_topology_t topology); - -/** @} */ - - - -/** \defgroup hwlocality_configuration Configure Topology Detection - * - * These functions can optionally be called between hwloc_topology_init() and - * hwloc_topology_load() to configure how the detection should be performed, - * e.g. to ignore some objects types, define a synthetic topology, etc. - * - * If none of them is called, the default is to detect all the objects of the - * machine that the caller is allowed to access. - * - * This default behavior may also be modified through environment variables - * if the application did not modify it already. - * Setting HWLOC_XMLFILE in the environment enforces the discovery from a XML - * file as if hwloc_topology_set_xml() had been called. - * HWLOC_FSROOT switches to reading the topology from the specified Linux - * filesystem root as if hwloc_topology_set_fsroot() had been called. - * Finally, HWLOC_THISSYSTEM enforces the return value of - * hwloc_topology_is_thissystem(). - * - * @{ - */ - -/** \brief Ignore an object type. - * - * Ignore all objects from the given type. - * The bottom-level type HWLOC_OBJ_PU may not be ignored. - * The top-level object of the hierarchy will never be ignored, even if this function - * succeeds. - */ -HWLOC_DECLSPEC int hwloc_topology_ignore_type(hwloc_topology_t topology, hwloc_obj_type_t type); - -/** \brief Ignore an object type if it does not bring any structure. - * - * Ignore all objects from the given type as long as they do not bring any structure: - * Each ignored object should have a single children or be the only child of its parent. - * The bottom-level type HWLOC_OBJ_PU may not be ignored. - */ -HWLOC_DECLSPEC int hwloc_topology_ignore_type_keep_structure(hwloc_topology_t topology, hwloc_obj_type_t type); - -/** \brief Ignore all objects that do not bring any structure. - * - * Ignore all objects that do not bring any structure: - * Each ignored object should have a single children or be the only child of its parent. - */ -HWLOC_DECLSPEC int hwloc_topology_ignore_all_keep_structure(hwloc_topology_t topology); - -/** \brief Flags to be set onto a topology context before load. - * - * Flags should be given to hwloc_topology_set_flags(). - */ -enum hwloc_topology_flags_e { - HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM = (1<<0), - /**< \brief Detect the whole system, ignore reservations and offline settings. - * \hideinitializer - * - * Gather all resources, even if some were disabled by the administrator. - * For instance, ignore Linux Cpusets and gather all processors and memory nodes, - * and ignore the fact that some resources may be offline. - */ - - HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM = (1<<1) - /**< \brief Assume that the selected backend provides the topology for the - * system on which we are running. - * \hideinitializer - * - * This forces hwloc_topology_is_thissystem to return 1, i.e. makes hwloc assume that - * the selected backend provides the topology for the system on which we are running, - * even if it is not the OS-specific backend but the XML backend for instance. - * This means making the binding functions actually call the OS-specific - * system calls and really do binding, while the XML backend would otherwise - * provide empty hooks just returning success. - * - * Setting the environment variable HWLOC_THISSYSTEM may also result in the - * same behavior. - * - * This can be used for efficiency reasons to first detect the topology once, - * save it to an XML file, and quickly reload it later through the XML - * backend, but still having binding functions actually do bind. - */ -}; - -/** \brief Set OR'ed flags to non-yet-loaded topology. - * - * Set a OR'ed set of ::hwloc_topology_flags_e onto a topology that was not yet loaded. - */ -HWLOC_DECLSPEC int hwloc_topology_set_flags (hwloc_topology_t topology, unsigned long flags); - -/** \brief Change the file-system root path when building the topology from sysfs/procfs. - * - * On Linux system, use sysfs and procfs files as if they were mounted on the given - * \p fsroot_path instead of the main file-system root. Setting the environment - * variable HWLOC_FSROOT may also result in this behavior. - * Not using the main file-system root causes hwloc_topology_is_thissystem() - * to return 0. - * - * \note For conveniency, this backend provides empty binding hooks which just - * return success. To have hwloc still actually call OS-specific hooks, the - * HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM has to be set to assert that the loaded - * file is really the underlying system. - */ -HWLOC_DECLSPEC int hwloc_topology_set_fsroot(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict fsroot_path); - -/** \brief Change which pid the topology is viewed from - * - * On some systems, processes may have different views of the machine, for - * instance the set of allowed CPUs. By default, hwloc exposes the view from - * the current process. Calling hwloc_topology_set_pid() permits to make it - * expose the topology of the machine from the point of view of another - * process. - * - * \note hwloc_pid_t is pid_t on unix platforms, and HANDLE on native Windows - * platforms - * \note -1 is returned and errno is set to ENOSYS on platforms that do not - * support this feature. - */ -HWLOC_DECLSPEC int hwloc_topology_set_pid(hwloc_topology_t __hwloc_restrict topology, hwloc_pid_t pid); - -/** \brief Enable synthetic topology. - * - * Gather topology information from the given \p description - * which should be a space-separated string of numbers describing - * the arity of each level. - * Each number may be prefixed with a type and a colon to enforce the type - * of a level. If only some level types are enforced, hwloc will try to - * choose the other types according to usual topologies, but it may fail - * and you may have to specify more level types manually. - * - * If \p description was properly parsed and describes a valid topology - * configuration, this function returns 0. - * Otherwise -1 is returned and errno is set to EINVAL. - * - * \note For conveniency, this backend provides empty binding hooks which just - * return success. - */ -HWLOC_DECLSPEC int hwloc_topology_set_synthetic(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict description); - -/** \brief Enable XML-file based topology. - * - * Gather topology information from the XML file given at \p xmlpath. - * Setting the environment variable HWLOC_XMLFILE may also result in this behavior. - * This file may have been generated earlier with lstopo file.xml. - * - * \note For conveniency, this backend provides empty binding hooks which just - * return success. To have hwloc still actually call OS-specific hooks, the - * HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM has to be set to assert that the loaded - * file is really the underlying system. - */ -HWLOC_DECLSPEC int hwloc_topology_set_xml(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict xmlpath); - -/** \brief Enable XML based topology using a memory buffer instead of a file. - * - * Gather topology information from the XML memory buffer given at \p buffer - * and of length \p length. - */ -HWLOC_DECLSPEC int hwloc_topology_set_xmlbuffer(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict buffer, int size); - -/** \brief Provide a distance matrix. - * - * Provide the matrix of distances between a set of objects of the given type. - * The set may or may not contain all the existing objects of this type. - * The objects are specified by their OS/physical index in the \p os_index - * array. The \p distances matrix follows the same order. - * The distance from object i to object j in the i*nbobjs+j. - */ -HWLOC_DECLSPEC int hwloc_topology_set_distance_matrix(hwloc_topology_t __hwloc_restrict topology, - hwloc_obj_type_t type, unsigned nbobjs, - unsigned *os_index, float *distances); - -/** \brief Flags describing actual discovery support for this topology. */ -struct hwloc_topology_discovery_support { - /** \brief Detecting the number of PU objects is supported. */ - unsigned char pu; -}; - -/** \brief Flags describing actual PU binding support for this topology. */ -struct hwloc_topology_cpubind_support { - /** Binding the whole current process is supported. */ - unsigned char set_thisproc_cpubind; - /** Getting the binding of the whole current process is supported. */ - unsigned char get_thisproc_cpubind; - /** Binding a whole given process is supported. */ - unsigned char set_proc_cpubind; - /** Getting the binding of a whole given process is supported. */ - unsigned char get_proc_cpubind; - /** Binding the current thread only is supported. */ - unsigned char set_thisthread_cpubind; - /** Getting the binding of the current thread only is supported. */ - unsigned char get_thisthread_cpubind; - /** Binding a given thread only is supported. */ - unsigned char set_thread_cpubind; - /** Getting the binding of a given thread only is supported. */ - unsigned char get_thread_cpubind; - /** Getting the last processors where the whole current process ran is supported */ - unsigned char get_thisproc_last_cpu_location; - /** Getting the last processors where a whole process ran is supported */ - unsigned char get_proc_last_cpu_location; - /** Getting the last processors where the current thread ran is supported */ - unsigned char get_thisthread_last_cpu_location; -}; - -/** \brief Flags describing actual memory binding support for this topology. */ -struct hwloc_topology_membind_support { - /** Binding the whole current process is supported. */ - unsigned char set_thisproc_membind; - /** Getting the binding of the whole current process is supported. */ - unsigned char get_thisproc_membind; - /** Binding a whole given process is supported. */ - unsigned char set_proc_membind; - /** Getting the binding of a whole given process is supported. */ - unsigned char get_proc_membind; - /** Binding the current thread only is supported. */ - unsigned char set_thisthread_membind; - /** Getting the binding of the current thread only is supported. */ - unsigned char get_thisthread_membind; - /** Binding a given memory area is supported. */ - unsigned char set_area_membind; - /** Getting the binding of a given memory area is supported. */ - unsigned char get_area_membind; - /** Allocating a bound memory area is supported. */ - unsigned char alloc_membind; - /** First-touch policy is supported. */ - unsigned char firsttouch_membind; - /** Bind policy is supported. */ - unsigned char bind_membind; - /** Interleave policy is supported. */ - unsigned char interleave_membind; - /** Replication policy is supported. */ - unsigned char replicate_membind; - /** Next-touch migration policy is supported. */ - unsigned char nexttouch_membind; - - /** Migration flags is supported. */ - unsigned char migrate_membind; -}; - -/** \brief Set of flags describing actual support for this topology. - * - * This is retrieved with hwloc_topology_get_support() and will be valid until - * the topology object is destroyed. Note: the values are correct only after - * discovery. - */ -struct hwloc_topology_support { - struct hwloc_topology_discovery_support *discovery; - struct hwloc_topology_cpubind_support *cpubind; - struct hwloc_topology_membind_support *membind; -}; - -/** \brief Retrieve the topology support. */ -HWLOC_DECLSPEC const struct hwloc_topology_support *hwloc_topology_get_support(hwloc_topology_t __hwloc_restrict topology); - -/** @} */ - - - -/** \defgroup hwlocality_tinker Tinker with topologies. - * @{ - */ - -/** \brief Export the topology into an XML file. - * - * This file may be loaded later through hwloc_topology_set_xml(). - */ -HWLOC_DECLSPEC void hwloc_topology_export_xml(hwloc_topology_t topology, const char *xmlpath); - -/** \brief Export the topology into a newly-allocated XML memory buffer. - * - * \p xmlbuffer is allocated by the callee and should be freed with xmlFree later in the caller. - * - * This memory buffer may be loaded later through hwloc_topology_set_xmlbuffer(). - */ -HWLOC_DECLSPEC void hwloc_topology_export_xmlbuffer(hwloc_topology_t topology, char **xmlbuffer, int *buflen); - -/** \brief Add a MISC object to the topology - * - * A new MISC object will be created and inserted into the topology at the - * position given by bitmap \p cpuset. This offers a way to add new - * intermediate levels to the topology hierarchy. - * - * \p cpuset and \p name will be copied to setup the new object attributes. - * - * \return the newly-created object. - * \return \c NULL if the insertion conflicts with the existing topology tree. - */ -HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_insert_misc_object_by_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset, const char *name); - -/** \brief Add a MISC object as a leaf of the topology - * - * A new MISC object will be created and inserted into the topology at the - * position given by parent. It is appended to the list of existing children, - * without ever adding any intermediate hierarchy level. This is useful for - * annotating the topology without actually changing the hierarchy. - * - * \p name will be copied to the setup the new object attributes. - * However, the new leaf object will not have any \p cpuset. - * - * \return the newly-created object - */ -HWLOC_DECLSPEC hwloc_obj_t hwloc_topology_insert_misc_object_by_parent(hwloc_topology_t topology, hwloc_obj_t parent, const char *name); - -/** \brief Flags to be given to hwloc_topology_restrict(). */ -enum hwloc_restrict_flags_e { - HWLOC_RESTRICT_FLAG_ADAPT_DISTANCES = (1<<0), - /**< \brief Adapt distance matrices according to objects being removed during restriction. - * If this flag is not set, distance matrices are removed. - * \hideinitializer - */ - HWLOC_RESTRICT_FLAG_ADAPT_MISC = (1<<1) - /**< \brief Move Misc objects to ancestors if their parents are removed during restriction. - * If this flag is not set, Misc objects are removed when their parents are removed. - * \hideinitializer - */ -}; - -/** \brief Restrict the topology to the given CPU set. - * - * Topology \p topology is modified so as to remove all objects that - * are not included (or partially included) in the CPU set \p cpuset. - * All objects CPU and node sets are restricted accordingly. - * - * \p flags is a OR'ed set of ::hwloc_restrict_flags_e. - * - * \note This call may not be reverted by restricting back to a larger - * cpuset. Once dropped during restriction, objects may not be brought - * back, except by reloading the entire topology with hwloc_topology_load(). - */ -HWLOC_DECLSPEC int hwloc_topology_restrict(hwloc_topology_t __hwloc_restrict topology, hwloc_const_cpuset_t cpuset, unsigned long flags); - -/** @} */ - - - -/** \defgroup hwlocality_information Get some Topology Information - * @{ - */ - -/** \brief Get the depth of the hierachical tree of objects. - * - * This is the depth of HWLOC_OBJ_PU objects plus one. - */ -HWLOC_DECLSPEC unsigned hwloc_topology_get_depth(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure; - -/** \brief Returns the depth of objects of type \p type. - * - * If no object of this type is present on the underlying architecture, or if - * the OS doesn't provide this kind of information, the function returns - * HWLOC_TYPE_DEPTH_UNKNOWN. - * - * If type is absent but a similar type is acceptable, see also - * hwloc_get_type_or_below_depth() and hwloc_get_type_or_above_depth(). - * - * If some objects of the given type exist in different levels, for instance - * L1 and L2 caches, the function returns HWLOC_TYPE_DEPTH_MULTIPLE. - */ -HWLOC_DECLSPEC int hwloc_get_type_depth (hwloc_topology_t topology, hwloc_obj_type_t type); - -enum hwloc_get_type_depth_e { - HWLOC_TYPE_DEPTH_UNKNOWN = -1, /**< \brief No object of given type exists in the topology. \hideinitializer */ - HWLOC_TYPE_DEPTH_MULTIPLE = -2 /**< \brief Objects of given type exist at different depth in the topology. \hideinitializer */ -}; - -/** \brief Returns the type of objects at depth \p depth. - * - * \return -1 if depth \p depth does not exist. - */ -HWLOC_DECLSPEC hwloc_obj_type_t hwloc_get_depth_type (hwloc_topology_t topology, unsigned depth) __hwloc_attribute_pure; - -/** \brief Returns the width of level at depth \p depth */ -HWLOC_DECLSPEC unsigned hwloc_get_nbobjs_by_depth (hwloc_topology_t topology, unsigned depth) __hwloc_attribute_pure; - -/** \brief Returns the width of level type \p type - * - * If no object for that type exists, 0 is returned. - * If there are several levels with objects of that type, -1 is returned. - */ -static __hwloc_inline int __hwloc_attribute_pure -hwloc_get_nbobjs_by_type (hwloc_topology_t topology, hwloc_obj_type_t type) -{ - int depth = hwloc_get_type_depth(topology, type); - if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) - return 0; - if (depth == HWLOC_TYPE_DEPTH_MULTIPLE) - return -1; /* FIXME: agregate nbobjs from different levels? */ - return hwloc_get_nbobjs_by_depth(topology, depth); -} - -/** \brief Does the topology context come from this system? - * - * \return 1 if this topology context was built using the system - * running this program. - * \return 0 instead (for instance if using another file-system root, - * a XML topology file, or a synthetic topology). - */ -HWLOC_DECLSPEC int hwloc_topology_is_thissystem(hwloc_topology_t __hwloc_restrict topology) __hwloc_attribute_pure; - -/** @} */ - - - -/** \defgroup hwlocality_traversal Retrieve Objects - * @{ - */ - -/** \brief Returns the topology object at logical index \p idx from depth \p depth */ -HWLOC_DECLSPEC hwloc_obj_t hwloc_get_obj_by_depth (hwloc_topology_t topology, unsigned depth, unsigned idx) __hwloc_attribute_pure; - -/** \brief Returns the topology object at logical index \p idx with type \p type - * - * If no object for that type exists, \c NULL is returned. - * If there are several levels with objects of that type, \c NULL is returned - * and ther caller may fallback to hwloc_get_obj_by_depth(). - */ -static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure -hwloc_get_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type, unsigned idx) -{ - int depth = hwloc_get_type_depth(topology, type); - if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) - return NULL; - if (depth == HWLOC_TYPE_DEPTH_MULTIPLE) - return NULL; - return hwloc_get_obj_by_depth(topology, depth, idx); -} - -/** @} */ - - - -/** \defgroup hwlocality_conversion Object/String Conversion - * @{ - */ - -/** \brief Return a stringified topology object type */ -HWLOC_DECLSPEC const char * hwloc_obj_type_string (hwloc_obj_type_t type) __hwloc_attribute_const; - -/** \brief Return an object type from the string - * - * \return -1 if unrecognized. - */ -HWLOC_DECLSPEC hwloc_obj_type_t hwloc_obj_type_of_string (const char * string) __hwloc_attribute_pure; - -/** \brief Stringify the type of a given topology object into a human-readable form. - * - * It differs from hwloc_obj_type_string() because it prints type attributes such - * as cache depth. - * - * If \p size is 0, \p string may safely be \c NULL. - * - * \return the number of character that were actually written if not truncating, - * or that would have been written (not including the ending \\0). - */ -HWLOC_DECLSPEC int hwloc_obj_type_snprintf(char * __hwloc_restrict string, size_t size, hwloc_obj_t obj, - int verbose); - -/** \brief Stringify the attributes of a given topology object into a human-readable form. - * - * Attribute values are separated by \p separator. - * - * Only the major attributes are printed in non-verbose mode. - * - * If \p size is 0, \p string may safely be \c NULL. - * - * \return the number of character that were actually written if not truncating, - * or that would have been written (not including the ending \\0). - */ -HWLOC_DECLSPEC int hwloc_obj_attr_snprintf(char * __hwloc_restrict string, size_t size, hwloc_obj_t obj, const char * __hwloc_restrict separator, - int verbose); - -/** \brief Stringify a given topology object into a human-readable form. - * - * \note This function is deprecated in favor of hwloc_obj_type_snprintf() - * and hwloc_obj_attr_snprintf() since it is not very flexible and - * only prints physical/OS indexes. - * - * Fill string \p string up to \p size characters with the description - * of topology object \p obj in topology \p topology. - * - * If \p verbose is set, a longer description is used. Otherwise a - * short description is used. - * - * \p indexprefix is used to prefix the \p os_index attribute number of - * the object in the description. If \c NULL, the \c # character is used. - * - * If \p size is 0, \p string may safely be \c NULL. - * - * \return the number of character that were actually written if not truncating, - * or that would have been written (not including the ending \\0). - */ -HWLOC_DECLSPEC int hwloc_obj_snprintf(char * __hwloc_restrict string, size_t size, - hwloc_topology_t topology, hwloc_obj_t obj, - const char * __hwloc_restrict indexprefix, int verbose); - -/** \brief Stringify the cpuset containing a set of objects. - * - * If \p size is 0, \p string may safely be \c NULL. - * - * \return the number of character that were actually written if not truncating, - * or that would have been written (not including the ending \\0). - */ -HWLOC_DECLSPEC int hwloc_obj_cpuset_snprintf(char * __hwloc_restrict str, size_t size, size_t nobj, const hwloc_obj_t * __hwloc_restrict objs); - -/** \brief Search the given key name in object infos and return the corresponding value. - * - * \return \c NULL if no such key exists. - */ -static __hwloc_inline char * __hwloc_attribute_pure -hwloc_obj_get_info_by_name(hwloc_obj_t obj, const char *name) -{ - unsigned i; - for(i=0; i<obj->infos_count; i++) - if (!strcmp(obj->infos[i].name, name)) - return obj->infos[i].value; - return NULL; -} - -/** @} */ - - - -/** \defgroup hwlocality_cpubinding CPU binding - * - * It is often useful to call hwloc_bitmap_singlify() first so that a single CPU - * remains in the set. This way, the process will not even migrate between - * different CPUs. Some operating systems also only support that kind of binding. - * - * \note Some operating systems do not provide all hwloc-supported - * mechanisms to bind processes, threads, etc. and the corresponding - * binding functions may fail. -1 is returned and errno is set to - * ENOSYS when it is not possible to bind the requested kind of object - * processes/threads. errno is set to EXDEV when the requested cpuset - * can not be enforced (e.g. some systems only allow one CPU, and some - * other systems only allow one NUMA node). - * - * The most portable version that should be preferred over the others, whenever - * possible, is - * - * \code - * hwloc_set_cpubind(topology, set, 0), - * \endcode - * - * as it just binds the current program, assuming it is single-threaded, or - * - * \code - * hwloc_set_cpubind(topology, set, HWLOC_CPUBIND_THREAD), - * \endcode - * - * which binds the current thread of the current program (which may be - * multithreaded). - * - * \note To unbind, just call the binding function with either a full cpuset or - * a cpuset equal to the system cpuset. - * - * \note On some operating systems, CPU binding may have effects on memory binding, see - * ::HWLOC_CPUBIND_NOMEMBIND - * - * Running lstopo --top can be a very convenient tool to check how binding - * actually happened. - * @{ - */ - -/** \brief Process/Thread binding flags. - * - * These bit flags can be used to refine the binding policy. - * - * The default (0) is to bind the current process, assumed to be - * single-threaded, in a non-strict way. This is the most portable - * way to bind as all operating systems usually provide it. - * - * \note Not all systems support all kinds of binding. See the - * "Detailed Description" section of \ref hwlocality_cpubinding for a - * description of errors that can occur. - */ -typedef enum { - HWLOC_CPUBIND_PROCESS = (1<<0), /**< \brief Bind all threads of the current - * (possibly) multithreaded process. - * \hideinitializer */ - HWLOC_CPUBIND_THREAD = (1<<1), /**< \brief Bind current thread of current process. - * \hideinitializer */ - HWLOC_CPUBIND_STRICT = (1<<2), /**< \brief Request for strict binding from the OS. - * \hideinitializer - * - * By default, when the designated CPUs are - * all busy while other CPUs are idle, operating systems - * may execute the thread/process on those - * other CPUs instead of the designated CPUs, - * to let them progress anyway. Strict - * binding means that the thread/process will - * _never_ execute on other cpus than the - * designated CPUs, even when those are busy - * with other tasks and other CPUs are idle. - * - * \note Depending on the operating system, - * strict binding may not be - * possible (e.g., the OS does not implement it) or not - * allowed (e.g., for an administrative reasons), and the - * function will fail in that case. - * - * When retrieving the binding of a process, - * this flag checks whether all its threads - * actually have the same binding. - * If the flag is not given, the binding of - * each thread will be accumulated. - * - * \note This flag is meaningless when retrieving - * the binding of a thread. - */ - HWLOC_CPUBIND_NOMEMBIND = (1<<3)/**< \brief Avoid any effect on memory binding - * \hideinitializer - * - * On some operating systems, some CPU binding function - * would also bind the memory on the - * corresponding NUMA node. It is often not - * a problem for the application, but if it - * is, setting this flag will make hwloc - * avoid using OS functions that would also - * bind memory. This will however reduce the - * support of CPU bindings, i.e. potentially - * return -1 with errno set to ENOSYS in some - * cases. - */ -} hwloc_cpubind_flags_t; - -/** \brief Bind current process or thread on cpus given in bitmap \p set - * - * \return -1 with errno set to ENOSYS if the action is not supported - * \return -1 with errno set to EXDEV if the binding cannot be enforced - */ -HWLOC_DECLSPEC int hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags); - -/** \brief Get current process or thread binding - * - * Writes into \p set the cpuset which the process or thread (according to \e - * flags) was last bound to. - */ -HWLOC_DECLSPEC int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int flags); - -/** \brief Bind a process \p pid on cpus given in bitmap \p set - * - * \note hwloc_pid_t is pid_t on unix platforms, and HANDLE on native Windows - * platforms - * - * \note HWLOC_CPUBIND_THREAD can not be used in \p flags. - */ -HWLOC_DECLSPEC int hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int flags); - -/** \brief Get the current binding of process \p pid - * - * \note hwloc_pid_t is pid_t on unix platforms, and HANDLE on native Windows - * platforms - * - * \note HWLOC_CPUBIND_THREAD can not be used in \p flags. - */ -HWLOC_DECLSPEC int hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags); - -#ifdef hwloc_thread_t -/** \brief Bind a thread \p thread on cpus given in bitmap \p set - * - * \note hwloc_thread_t is pthread_t on unix platforms, and HANDLE on native - * Windows platforms - * - * \note HWLOC_CPUBIND_PROCESS can not be used in \p flags. - */ -HWLOC_DECLSPEC int hwloc_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_const_cpuset_t set, int flags); -#endif - -#ifdef hwloc_thread_t -/** \brief Get the current binding of thread \p tid - * - * \note hwloc_thread_t is pthread_t on unix platforms, and HANDLE on native - * Windows platforms - * - * \note HWLOC_CPUBIND_PROCESS can not be used in \p flags. - */ -HWLOC_DECLSPEC int hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_cpuset_t set, int flags); -#endif - -/** \brief Get the last CPU where the current process or thread ran. - * - * The operating system may move some tasks from one processor - * to another at any time according to their binding, - * so this function may return something that is already - * outdated. - */ -HWLOC_DECLSPEC int hwloc_get_last_cpu_location(hwloc_topology_t topology, hwloc_cpuset_t set, int flags); - -/** \brief Get the last CPU where a process ran. - * - * The operating system may move some tasks from one processor - * to another at any time according to their binding, - * so this function may return something that is already - * outdated. - * - * \note HWLOC_CPUBIND_THREAD can not be used in \p flags. - */ -HWLOC_DECLSPEC int hwloc_get_proc_last_cpu_location(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags); - -/** @} */ - - -/** \defgroup hwlocality_membinding Memory binding - * - * \note Not all operating systems support all ways to bind existing - * allocated memory (e.g., migration), future memory allocation, - * explicit memory allocation, etc. Using a binding flag or policy - * that is not supported by the underlying OS will cause hwloc's - * binding functions to fail and return -1. errno will be set to - * ENOSYS when the system does support the specified action or policy - * (e.g., some systems only allow binding memory on a per-thread - * basis, whereas other systems only allow binding memory for all - * threads in a process). errno will be set to EXDEV when the - * requested cpuset can not be enforced (e.g., some systems only allow - * binding memory to a single NUMA node). - * - * The most portable form that should be preferred over the others - * whenever possible is as follows: - * - * \code - * hwloc_alloc_membind_policy(topology, size, set, - * HWLOC_MEMBIND_DEFAULT, 0); - * \endcode - * - * This will allocate some memory hopefully bound to the specified set. - * To do so, hwloc will possibly have to change the current memory - * binding policy in order to actually get the memory bound, if the OS - * does not provide any other way to simply allocate bound memory - * without changing the policy for all allocations. That is the - * difference with hwloc_alloc_membind(), which will never change the - * current memory binding policy. Note that since HWLOC_MEMBIND_STRICT - * was not specified, failures to bind will not be reported -- - * generally, only memory allocation failures will be reported (e.g., - * even a plain malloc() would have failed with ENOMEM). - * - * Each hwloc memory binding function is available in two forms: one - * that takes a CPU set argument and another that takes a NUMA memory - * node set argument (see \ref hwlocality_sets and \ref - * hwlocality_bitmap for a discussion of CPU sets and NUMA memory node - * sets). The names of the latter form end with _nodeset. It is also - * possible to convert between CPU set and node set using - * hwloc_cpuset_to_nodeset() or hwloc_cpuset_from_nodeset(). - * - * \note On some operating systems, memory binding affects the CPU - * binding; see ::HWLOC_MEMBIND_NOCPUBIND - * @{ - */ - -/** \brief Memory binding policy. - * - * These constants can be used to choose the binding policy. Only one policy can - * be used at a time (i.e., the values cannot be OR'ed together). - * - * \note Not all systems support all kinds of binding. See the - * "Detailed Description" section of \ref hwlocality_membinding for a - * description of errors that can occur. - */ -typedef enum { - HWLOC_MEMBIND_DEFAULT = 0, /**< \brief Reset the memory allocation policy to the system default. - * \hideinitializer */ - HWLOC_MEMBIND_FIRSTTOUCH = 1, /**< \brief Allocate memory - * but do not immediately bind - * it to a specific locality. - * Instead, each page in the - * allocation is bound only - * when it is first touched. - * Pages are individually - * bound to the local NUMA - * node of the first thread - * that touches it. - * \hideinitializer */ - HWLOC_MEMBIND_BIND = 2, /**< \brief Allocate memory on the specified nodes. - * \hideinitializer */ - HWLOC_MEMBIND_INTERLEAVE = 3, /**< \brief Allocate memory on - * the given nodes in an - * interleaved / round-robin - * manner. The precise layout - * of the memory across - * multiple NUMA nodes is - * OS/system specific. - * Interleaving can be useful - * when threads distributed across - * the specified NUMA nodes - * will all be accessing the whole - * memory range concurrently, since - * the interleave will then balance - * the memory references. - * \hideinitializer */ - HWLOC_MEMBIND_REPLICATE = 4, /**< \brief Replicate memory - * on the given nodes; reads - * from this memory will - * attempt to be serviced from - * the NUMA node local to the - * reading thread. - * Replicating can be useful - * when multiple threads from - * the specified NUMA nodes - * will be sharing the same - * read-only data. - * - * This policy can only be - * used with existing memory - * allocations (i.e., the - * hwloc_set_*membind*() - * functions); it cannot be - * used with functions that - * allocate new memory (i.e., - * the hwloc_alloc*() - * functions). - * \hideinitializer */ - HWLOC_MEMBIND_NEXTTOUCH = 5, /**< \brief For each page bound - * with this policy, by next time - * it is touched (and next time only), - * it is moved from - * its current location to the - * local NUMA node of the - * thread where the memory - * reference occurred (if it - * needs to be moved at all). - * \hideinitializer */ - HWLOC_MEMBIND_MIXED = -1 /**< \brief Returned by hwloc_get_membind*() - * functions when multiple threads or - * parts of a memory area have - * differing memory binding policies. - * \hideinitializer */ -} hwloc_membind_policy_t; - -/** \brief Memory binding flags. - * - * These flags can be used to refine the binding policy. All flags - * can be logically OR'ed together with the exception of - * HWLOC_MEMBIND_PROCESS and HWLOC_MEMBIND_THREAD; these two flags are - * mutually exclusive. - * - * \note Not all systems support all kinds of binding. See the - * "Detailed Description" section of \ref hwlocality_membinding for a - * description of errors that can occur. - */ -typedef enum { - HWLOC_MEMBIND_PROCESS = (1<<0), /**< \brief Set policy for all - * threads of the specified - * (possibly multithreaded) - * process. This flag is - * mutually exclusive with - * HWLOC_MEMBIND_THREAD. - * \hideinitializer */ - HWLOC_MEMBIND_THREAD = (1<<1), /**< \brief Set policy for a - * specific thread of the - * current process. This flag - * is mutually exclusive with - * HWLOC_MEMBIND_PROCESS. - * \hideinitializer */ - HWLOC_MEMBIND_STRICT = (1<<2), /**< Request strict binding - * from the OS. The function - * will fail if the binding - * can not be guaranteed / - * completely enforced. - * - * This flag has slightly - * different meanings - * depending on which function - * it is used with. - * \hideinitializer */ - HWLOC_MEMBIND_MIGRATE = (1<<3), /**< \brief Migrate existing - * allocated memory. If the - * memory cannot be migrated - * and the - * HWLOC_MEMBIND_STRICT flag - * is passed, an error will be - * returned. - * \hideinitializer */ - HWLOC_MEMBIND_NOCPUBIND = (1<<4) /**< \brief Avoid any effect - * on CPU binding. - * - * On some operating systems, - * some underlying memory - * binding functions also bind - * the application to the - * corresponding CPU(s). - * Using this flag will cause - * hwloc to avoid using OS - * functions that could - * potentially affect CPU - * bindings. Note, however, - * that using NOCPUBIND may - * reduce hwloc's overall - * memory binding support. - * Specifically: some of - * hwloc's memory binding - * functions may fail with - * errno set to ENOSYS when - * used with NOCPUBIND. - * \hideinitializer - */ -} hwloc_membind_flags_t; - -/** \brief Set the default memory binding policy of the current - * process or thread to prefer the NUMA node(s) specified by \p nodeset - * - * If neither HWLOC_MEMBIND_PROCESS nor HWLOC_MEMBIND_THREAD is - * specified, the current process is assumed to be single-threaded. - * This is the most portable form as it permits hwloc to use either - * process-based OS functions or thread-based OS functions, depending - * on which are available. - * - * \return -1 with errno set to ENOSYS if the action is not supported - * \return -1 with errno set to EXDEV if the binding cannot be enforced - */ -HWLOC_DECLSPEC int hwloc_set_membind_nodeset(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags); - -/** \brief Set the default memory binding policy of the current - * process or thread to prefer the NUMA node(s) near the specified \p - * cpuset - * - * If neither HWLOC_MEMBIND_PROCESS nor HWLOC_MEMBIND_THREAD is - * specified, the current process is assumed to be single-threaded. - * This is the most portable form as it permits hwloc to use either - * process-based OS functions or thread-based OS functions, depending - * on which are available. - * - * \return -1 with errno set to ENOSYS if the action is not supported - * \return -1 with errno set to EXDEV if the binding cannot be enforced - */ -HWLOC_DECLSPEC int hwloc_set_membind(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags); - -/** \brief Query the default memory binding policy and locality of the - * current process or thread. - * - * This function has two output parameters: \p nodeset and \p policy. - * The values returned in these parameters depend on both the \p flags - * passed in and the current memory binding policies and nodesets in - * the queried target. - * - * Passing the HWLOC_MEMBIND_PROCESS flag specifies that the query - * target is the current policies and nodesets for all the threads in - * the current process. Passing HWLOC_MEMBIND_THREAD specifies that - * the query target is the current policy and nodeset for only the - * thread invoking this function. - * - * If neither of these flags are passed (which is the most portable - * method), the process is assumed to be single threaded. This allows - * hwloc to use either process-based OS functions or thread-based OS - * functions, depending on which are available. - * - * HWLOC_MEMBIND_STRICT is only meaningful when HWLOC_MEMBIND_PROCESS - * is also specified. In this case, hwloc will check the default - * memory policies and nodesets for all threads in the process. If - * they are not identical, -1 is returned and errno is set to EXDEV. - * If they are identical, the values are returned in \p nodeset and \p - * policy. - * - * Otherwise, if HWLOC_MEMBIND_PROCESS is specified (and - * HWLOC_MEMBIND_STRICT is \em not specified), \p nodeset is set to - * the logical OR of all threads' default nodeset. If all threads' - * default policies are the same, \p policy is set to that policy. If - * they are different, \p policy is set to HWLOC_MEMBIND_MIXED. - * - * In the HWLOC_MEMBIND_THREAD case (or when neither - * HWLOC_MEMBIND_PROCESS or HWLOC_MEMBIND_THREAD is specified), there - * is only one nodeset and policy; they are returned in \p nodeset and - * \p policy, respectively. - * - * If any other flags are specified, -1 is returned and errno is set - * to EINVAL. - */ -HWLOC_DECLSPEC int hwloc_get_membind_nodeset(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags); - -/** \brief Query the default memory binding policy and locality of the - * current process or thread (the locality is returned in \p cpuset as - * CPUs near the locality's actual NUMA node(s)). - * - * This function has two output parameters: \p cpuset and \p policy. - * The values returned in these parameters depend on both the \p flags - * passed in and the current memory binding policies and nodesets in - * the queried target. - * - * Passing the HWLOC_MEMBIND_PROCESS flag specifies that the query - * target is the current policies and nodesets for all the threads in - * the current process. Passing HWLOC_MEMBIND_THREAD specifies that - * the query target is the current policy and nodeset for only the - * thread invoking this function. - * - * If neither of these flags are passed (which is the most portable - * method), the process is assumed to be single threaded. This allows - * hwloc to use either process-based OS functions or thread-based OS - * functions, depending on which are available. - * - * HWLOC_MEMBIND_STRICT is only meaningful when HWLOC_MEMBIND_PROCESS - * is also specified. In this case, hwloc will check the default - * memory policies and nodesets for all threads in the process. If - * they are not identical, -1 is returned and errno is set to EXDEV. - * If they are identical, the policy is returned in \p policy. \p - * cpuset is set to the union of CPUs near the NUMA node(s) in the - * nodeset. - * - * Otherwise, if HWLOC_MEMBIND_PROCESS is specified (and - * HWLOC_MEMBIND_STRICT is \em not specified), the default nodeset - * from each thread is logically OR'ed together. \p cpuset is set to - * the union of CPUs near the NUMA node(s) in the resulting nodeset. - * If all threads' default policies are the same, \p policy is set to - * that policy. If they are different, \p policy is set to - * HWLOC_MEMBIND_MIXED. - * - * In the HWLOC_MEMBIND_THREAD case (or when neither - * HWLOC_MEMBIND_PROCESS or HWLOC_MEMBIND_THREAD is specified), there - * is only one nodeset and policy. The policy is returned in \p - * policy; \p cpuset is set to the union of CPUs near the NUMA node(s) - * in the \p nodeset. - * - * If any other flags are specified, -1 is returned and errno is set - * to EINVAL. - */ -HWLOC_DECLSPEC int hwloc_get_membind(hwloc_topology_t topology, hwloc_cpuset_t cpuset, hwloc_membind_policy_t * policy, int flags); - -/** \brief Set the default memory binding policy of the specified - * process to prefer the NUMA node(s) specified by \p nodeset - * - * \return -1 with errno set to ENOSYS if the action is not supported - * \return -1 with errno set to EXDEV if the binding cannot be enforced - */ -HWLOC_DECLSPEC int hwloc_set_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags); - -/** \brief Set the default memory binding policy of the specified - * process to prefer the NUMA node(s) near the specified \p cpuset - * - * \return -1 with errno set to ENOSYS if the action is not supported - * \return -1 with errno set to EXDEV if the binding cannot be enforced - */ -HWLOC_DECLSPEC int hwloc_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags); - -/** \brief Query the default memory binding policy and locality of the - * specified process. - * - * This function has two output parameters: \p nodeset and \p policy. - * The values returned in these parameters depend on both the \p flags - * passed in and the current memory binding policies and nodesets in - * the queried target. - * - * Passing the HWLOC_MEMBIND_PROCESS flag specifies that the query - * target is the current policies and nodesets for all the threads in - * the specified process. If HWLOC_MEMBIND_PROCESS is not specified - * (which is the most portable method), the process is assumed to be - * single threaded. This allows hwloc to use either process-based OS - * functions or thread-based OS functions, depending on which are - * available. - * - * Note that it does not make sense to pass HWLOC_MEMBIND_THREAD to - * this function. - * - * If HWLOC_MEMBIND_STRICT is specified, hwloc will check the default - * memory policies and nodesets for all threads in the specified - * process. If they are not identical, -1 is returned and errno is - * set to EXDEV. If they are identical, the values are returned in \p - * nodeset and \p policy. - * - * Otherwise, \p nodeset is set to the logical OR of all threads' - * default nodeset. If all threads' default policies are the same, \p - * policy is set to that policy. If they are different, \p policy is - * set to HWLOC_MEMBIND_MIXED. - * - * If any other flags are specified, -1 is returned and errno is set - * to EINVAL. - */ -HWLOC_DECLSPEC int hwloc_get_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags); - -/** \brief Query the default memory binding policy and locality of the - * specified process (the locality is returned in \p cpuset as CPUs - * near the locality's actual NUMA node(s)). - * - * This function has two output parameters: \p cpuset and \p policy. - * The values returned in these parameters depend on both the \p flags - * passed in and the current memory binding policies and nodesets in - * the queried target. - * - * Passing the HWLOC_MEMBIND_PROCESS flag specifies that the query - * target is the current policies and nodesets for all the threads in - * the specified process. If HWLOC_MEMBIND_PROCESS is not specified - * (which is the most portable method), the process is assumed to be - * single threaded. This allows hwloc to use either process-based OS - * functions or thread-based OS functions, depending on which are - * available. - * - * Note that it does not make sense to pass HWLOC_MEMBIND_THREAD to - * this function. - * - * If HWLOC_MEMBIND_STRICT is specified, hwloc will check the default - * memory policies and nodesets for all threads in the specified - * process. If they are not identical, -1 is returned and errno is - * set to EXDEV. If they are identical, the policy is returned in \p - * policy. \p cpuset is set to the union of CPUs near the NUMA - * node(s) in the nodeset. - * - * Otherwise, the default nodeset from each thread is logically OR'ed - * together. \p cpuset is set to the union of CPUs near the NUMA - * node(s) in the resulting nodeset. If all threads' default policies - * are the same, \p policy is set to that policy. If they are - * different, \p policy is set to HWLOC_MEMBIND_MIXED. - * - * If any other flags are specified, -1 is returned and errno is set - * to EINVAL. - */ -HWLOC_DECLSPEC int hwloc_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t cpuset, hwloc_membind_policy_t * policy, int flags); - -/** \brief Bind the already-allocated memory identified by (addr, len) - * to the NUMA node(s) in \p nodeset. - * - * \return -1 with errno set to ENOSYS if the action is not supported - * \return -1 with errno set to EXDEV if the binding cannot be enforced - */ -HWLOC_DECLSPEC int hwloc_set_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags); - -/** \brief Bind the already-allocated memory identified by (addr, len) - * to the NUMA node(s) near \p cpuset. - * - * \return -1 with errno set to ENOSYS if the action is not supported - * \return -1 with errno set to EXDEV if the binding cannot be enforced - */ -HWLOC_DECLSPEC int hwloc_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags); - -/** \brief Query the NUMA node(s) and binding policy of the memory - * identified by (\p addr, \p len ). - * - * This function has two output parameters: \p nodeset and \p policy. - * The values returned in these parameters depend on both the \p flags - * passed in and the memory binding policies and nodesets of the pages - * in the address range. - * - * If HWLOC_MEMBIND_STRICT is specified, the target pages are first - * checked to see if they all have the same memory binding policy and - * nodeset. If they do not, -1 is returned and errno is set to EXDEV. - * If they are identical across all pages, the nodeset and policy are - * returned in \p nodeset and \p policy, respectively. - * - * If HWLOC_MEMBIND_STRICT is not specified, \p nodeset is set to the - * union of all NUMA node(s) containing pages in the address range. - * If all pages in the target have the same policy, it is returned in - * \p policy. Otherwise, \p policy is set to HWLOC_MEMBIND_MIXED. - * - * If any other flags are specified, -1 is returned and errno is set - * to EINVAL. - */ -HWLOC_DECLSPEC int hwloc_get_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags); - -/** \brief Query the CPUs near the NUMA node(s) and binding policy of - * the memory identified by (\p addr, \p len ). - * - * This function has two output parameters: \p cpuset and \p policy. - * The values returned in these parameters depend on both the \p flags - * passed in and the memory binding policies and nodesets of the pages - * in the address range. - * - * If HWLOC_MEMBIND_STRICT is specified, the target pages are first - * checked to see if they all have the same memory binding policy and - * nodeset. If they do not, -1 is returned and errno is set to EXDEV. - * If they are identical across all pages, the policy is returned in - * \p policy. \p cpuset is set to the union of CPUs near the NUMA - * node(s) in the nodeset. - * - * If HWLOC_MEMBIND_STRICT is not specified, the union of all NUMA - * node(s) containing pages in the address range is calculated. \p - * cpuset is then set to the CPUs near the NUMA node(s) in this union. - * If all pages in the target have the same policy, it is returned in - * \p policy. Otherwise, \p policy is set to HWLOC_MEMBIND_MIXED. - * - * If any other flags are specified, -1 is returned and errno is set - * to EINVAL. - */ -HWLOC_DECLSPEC int hwloc_get_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_cpuset_t cpuset, hwloc_membind_policy_t * policy, int flags); - -/** \brief Allocate some memory - * - * This is equivalent to malloc(), except that it tries to allocate - * page-aligned memory from the OS. - * - * \note The allocated memory should be freed with hwloc_free(). - */ -HWLOC_DECLSPEC void *hwloc_alloc(hwloc_topology_t topology, size_t len); - -/** \brief Allocate some memory on the given nodeset \p nodeset - * - * \return -1 with errno set to ENOSYS if the action is not supported - * and HWLOC_MEMBIND_STRICT is given - * \return -1 with errno set to EXDEV if the binding cannot be enforced - * and HWLOC_MEMBIND_STRICT is given - * - * \note The allocated memory should be freed with hwloc_free(). - */ -HWLOC_DECLSPEC void *hwloc_alloc_membind_nodeset(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc; - -/** \brief Allocate some memory on memory nodes near the given cpuset \p cpuset - * - * \return -1 with errno set to ENOSYS if the action is not supported - * and HWLOC_MEMBIND_STRICT is given - * \return -1 with errno set to EXDEV if the binding cannot be enforced - * and HWLOC_MEMBIND_STRICT is given - * - * \note The allocated memory should be freed with hwloc_free(). - */ -HWLOC_DECLSPEC void *hwloc_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc; - -/** \brief Free memory that was previously allocated by hwloc_alloc() - * or hwloc_alloc_membind(). - */ -HWLOC_DECLSPEC int hwloc_free(hwloc_topology_t topology, void *addr, size_t len); - -/** @} */ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - - -/* high-level helpers */ -#include <hwloc/helper.h> - - -#endif /* HWLOC_H */ diff --git a/hwloc-1.2.1/include/hwloc/autogen/config.h b/hwloc-1.2.1/include/hwloc/autogen/config.h deleted file mode 100644 index 76e4c1b9..00000000 --- a/hwloc-1.2.1/include/hwloc/autogen/config.h +++ /dev/null @@ -1,137 +0,0 @@ -/* hwloc-1.2.1/include/hwloc/autogen/config.h. Generated from config.h.in by configure. */ -/* -*- c -*- - * Copyright © 2009 CNRS - * Copyright © 2009-2010 INRIA. All rights reserved. - * Copyright © 2009-2011 Université Bordeaux 1 - * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/* The configuration file */ - -#ifndef HWLOC_CONFIG_H -#define HWLOC_CONFIG_H - -#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) -# define __hwloc_restrict __restrict -#else -# if __STDC_VERSION__ >= 199901L -# define __hwloc_restrict restrict -# else -# define __hwloc_restrict -# endif -#endif - -#define __hwloc_inline __inline__ - -/* - * Note: this is public. We can not assume anything from the compiler used - * by the application and thus the HWLOC_HAVE_* macros below are not - * fetched from the autoconf result here. We only automatically use a few - * well-known easy cases. - */ - -/* Maybe before gcc 2.95 too */ -#if defined(HWLOC_HAVE_ATTRIBUTE_UNUSED) || (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) -# if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) || HWLOC_HAVE_ATTRIBUTE_UNUSED -# define __hwloc_attribute_unused __attribute__((__unused__)) -# else -# define __hwloc_attribute_unused -# endif -#else -# define __hwloc_attribute_unused -#endif - -#if defined(HWLOC_HAVE_ATTRIBUTE_MALLOC) || (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) -# if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) || HWLOC_HAVE_ATTRIBUTE_MALLOC -# define __hwloc_attribute_malloc __attribute__((__malloc__)) -# else -# define __hwloc_attribute_malloc -# endif -#else -# define __hwloc_attribute_malloc -#endif - -#if defined(HWLOC_HAVE_ATTRIBUTE_CONST) || (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) -# if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) || HWLOC_HAVE_ATTRIBUTE_CONST -# define __hwloc_attribute_const __attribute__((__const__)) -# else -# define __hwloc_attribute_const -# endif -#else -# define __hwloc_attribute_const -#endif - -#if defined(HWLOC_HAVE_ATTRIBUTE_PURE) || (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) -# if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) || HWLOC_HAVE_ATTRIBUTE_PURE -# define __hwloc_attribute_pure __attribute__((__pure__)) -# else -# define __hwloc_attribute_pure -# endif -#else -# define __hwloc_attribute_pure -#endif - -#if defined(HWLOC_HAVE_ATTRIBUTE_DEPRECATED) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) -# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) || HWLOC_HAVE_ATTRIBUTE_DEPRECATED -# define __hwloc_attribute_deprecated __attribute__((__deprecated__)) -# else -# define __hwloc_attribute_deprecated -# endif -#else -# define __hwloc_attribute_deprecated -#endif - -#ifdef HWLOC_C_HAVE_VISIBILITY -# if HWLOC_C_HAVE_VISIBILITY -# define HWLOC_DECLSPEC __attribute__((__visibility__("default"))) -# else -# define HWLOC_DECLSPEC -# endif -#else -# define HWLOC_DECLSPEC -#endif - -/* Defined to 1 on Linux */ -#define HWLOC_LINUX_SYS 1 - -/* Defined to 1 if the CPU_SET macro works */ -#define HWLOC_HAVE_CPU_SET 1 - -/* Defined to 1 if you have the `windows.h' header. */ -/* #undef HWLOC_HAVE_WINDOWS_H */ -#define hwloc_pid_t pid_t -#define hwloc_thread_t pthread_t - -#ifdef HWLOC_HAVE_WINDOWS_H - -# include <windows.h> -typedef DWORDLONG hwloc_uint64_t; - -#else /* HWLOC_HAVE_WINDOWS_H */ - -# ifdef hwloc_thread_t -# include <pthread.h> -# endif /* hwloc_thread_t */ - -/* Defined to 1 if you have the <stdint.h> header file. */ -# define HWLOC_HAVE_STDINT_H 1 - -# include <unistd.h> -# ifdef HWLOC_HAVE_STDINT_H -# include <stdint.h> -# endif -typedef uint64_t hwloc_uint64_t; - -#endif /* HWLOC_HAVE_WINDOWS_H */ - -/* Whether we need to re-define all the hwloc public symbols or not */ -#define HWLOC_SYM_TRANSFORM 0 - -/* The hwloc symbol prefix */ -#define HWLOC_SYM_PREFIX hwloc_ - -/* The hwloc symbol prefix in all caps */ -#define HWLOC_SYM_PREFIX_CAPS HWLOC_ - -#endif /* HWLOC_CONFIG_H */ diff --git a/hwloc-1.2.1/include/hwloc/autogen/config.h.in b/hwloc-1.2.1/include/hwloc/autogen/config.h.in deleted file mode 100644 index 7dbbfb6f..00000000 --- a/hwloc-1.2.1/include/hwloc/autogen/config.h.in +++ /dev/null @@ -1,136 +0,0 @@ -/* -*- c -*- - * Copyright © 2009 CNRS - * Copyright © 2009-2010 INRIA. All rights reserved. - * Copyright © 2009-2011 Université Bordeaux 1 - * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/* The configuration file */ - -#ifndef HWLOC_CONFIG_H -#define HWLOC_CONFIG_H - -#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) -# define __hwloc_restrict __restrict -#else -# if __STDC_VERSION__ >= 199901L -# define __hwloc_restrict restrict -# else -# define __hwloc_restrict -# endif -#endif - -#undef __hwloc_inline - -/* - * Note: this is public. We can not assume anything from the compiler used - * by the application and thus the HWLOC_HAVE_* macros below are not - * fetched from the autoconf result here. We only automatically use a few - * well-known easy cases. - */ - -/* Maybe before gcc 2.95 too */ -#if defined(HWLOC_HAVE_ATTRIBUTE_UNUSED) || (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) -# if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) || HWLOC_HAVE_ATTRIBUTE_UNUSED -# define __hwloc_attribute_unused __attribute__((__unused__)) -# else -# define __hwloc_attribute_unused -# endif -#else -# define __hwloc_attribute_unused -#endif - -#if defined(HWLOC_HAVE_ATTRIBUTE_MALLOC) || (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) -# if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) || HWLOC_HAVE_ATTRIBUTE_MALLOC -# define __hwloc_attribute_malloc __attribute__((__malloc__)) -# else -# define __hwloc_attribute_malloc -# endif -#else -# define __hwloc_attribute_malloc -#endif - -#if defined(HWLOC_HAVE_ATTRIBUTE_CONST) || (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) -# if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) || HWLOC_HAVE_ATTRIBUTE_CONST -# define __hwloc_attribute_const __attribute__((__const__)) -# else -# define __hwloc_attribute_const -# endif -#else -# define __hwloc_attribute_const -#endif - -#if defined(HWLOC_HAVE_ATTRIBUTE_PURE) || (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) -# if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) || HWLOC_HAVE_ATTRIBUTE_PURE -# define __hwloc_attribute_pure __attribute__((__pure__)) -# else -# define __hwloc_attribute_pure -# endif -#else -# define __hwloc_attribute_pure -#endif - -#if defined(HWLOC_HAVE_ATTRIBUTE_DEPRECATED) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) -# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) || HWLOC_HAVE_ATTRIBUTE_DEPRECATED -# define __hwloc_attribute_deprecated __attribute__((__deprecated__)) -# else -# define __hwloc_attribute_deprecated -# endif -#else -# define __hwloc_attribute_deprecated -#endif - -#ifdef HWLOC_C_HAVE_VISIBILITY -# if HWLOC_C_HAVE_VISIBILITY -# define HWLOC_DECLSPEC __attribute__((__visibility__("default"))) -# else -# define HWLOC_DECLSPEC -# endif -#else -# define HWLOC_DECLSPEC -#endif - -/* Defined to 1 on Linux */ -#undef HWLOC_LINUX_SYS - -/* Defined to 1 if the CPU_SET macro works */ -#undef HWLOC_HAVE_CPU_SET - -/* Defined to 1 if you have the `windows.h' header. */ -#undef HWLOC_HAVE_WINDOWS_H -#undef hwloc_pid_t -#undef hwloc_thread_t - -#ifdef HWLOC_HAVE_WINDOWS_H - -# include <windows.h> -typedef DWORDLONG hwloc_uint64_t; - -#else /* HWLOC_HAVE_WINDOWS_H */ - -# ifdef hwloc_thread_t -# include <pthread.h> -# endif /* hwloc_thread_t */ - -/* Defined to 1 if you have the <stdint.h> header file. */ -# undef HWLOC_HAVE_STDINT_H - -# include <unistd.h> -# ifdef HWLOC_HAVE_STDINT_H -# include <stdint.h> -# endif -typedef uint64_t hwloc_uint64_t; - -#endif /* HWLOC_HAVE_WINDOWS_H */ - -/* Whether we need to re-define all the hwloc public symbols or not */ -#undef HWLOC_SYM_TRANSFORM - -/* The hwloc symbol prefix */ -#undef HWLOC_SYM_PREFIX - -/* The hwloc symbol prefix in all caps */ -#undef HWLOC_SYM_PREFIX_CAPS - -#endif /* HWLOC_CONFIG_H */ diff --git a/hwloc-1.2.1/include/hwloc/autogen/stamp-h3 b/hwloc-1.2.1/include/hwloc/autogen/stamp-h3 deleted file mode 100644 index a48c3fd7..00000000 --- a/hwloc-1.2.1/include/hwloc/autogen/stamp-h3 +++ /dev/null @@ -1 +0,0 @@ -timestamp for hwloc-1.2.1/include/hwloc/autogen/config.h diff --git a/hwloc-1.2.1/include/hwloc/bitmap.h b/hwloc-1.2.1/include/hwloc/bitmap.h deleted file mode 100644 index 3985c11c..00000000 --- a/hwloc-1.2.1/include/hwloc/bitmap.h +++ /dev/null @@ -1,335 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2011 INRIA. All rights reserved. - * Copyright © 2009-2011 Université Bordeaux 1 - * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/** \file - * \brief The bitmap API, for use in hwloc itself. - */ - -#ifndef HWLOC_BITMAP_H -#define HWLOC_BITMAP_H - -#include <hwloc/autogen/config.h> -#include <assert.h> - - -#ifdef __cplusplus -extern "C" { -#endif - - -/** \defgroup hwlocality_bitmap The bitmap API - * - * The ::hwloc_bitmap_t type represents a set of objects, typically OS - * processors -- which may actually be hardware threads (represented - * by ::hwloc_cpuset_t, which is a typedef for ::hwloc_bitmap_t) -- or - * memory nodes (represented by ::hwloc_nodeset_t, which is also a - * typedef for ::hwloc_bitmap_t). - * - * <em>Both CPU and node sets are always indexed by OS physical number.</em> - * - * \note CPU sets and nodesets are described in \ref hwlocality_sets. - * - * A bitmap may be of infinite size. - * @{ - */ - - -/** \brief - * Set of bits represented as an opaque pointer to an internal bitmap. - */ -typedef struct hwloc_bitmap_s * hwloc_bitmap_t; -/** \brief a non-modifiable ::hwloc_bitmap_t */ -typedef const struct hwloc_bitmap_s * hwloc_const_bitmap_t; - - -/* - * Bitmap allocation, freeing and copying. - */ - -/** \brief Allocate a new empty bitmap. - * - * \returns A valid bitmap or \c NULL. - * - * The bitmap should be freed by a corresponding call to - * hwloc_bitmap_free(). - */ -HWLOC_DECLSPEC hwloc_bitmap_t hwloc_bitmap_alloc(void) __hwloc_attribute_malloc; - -/** \brief Allocate a new full bitmap. */ -HWLOC_DECLSPEC hwloc_bitmap_t hwloc_bitmap_alloc_full(void) __hwloc_attribute_malloc; - -/** \brief Free bitmap \p bitmap. - * - * If \p bitmap is \c NULL, no operation is performed. - */ -HWLOC_DECLSPEC void hwloc_bitmap_free(hwloc_bitmap_t bitmap); - -/** \brief Duplicate bitmap \p bitmap by allocating a new bitmap and copying \p bitmap contents. - * - * If \p bitmap is \c NULL, \c NULL is returned. - */ -HWLOC_DECLSPEC hwloc_bitmap_t hwloc_bitmap_dup(hwloc_const_bitmap_t bitmap) __hwloc_attribute_malloc; - -/** \brief Copy the contents of bitmap \p src into the already allocated bitmap \p dst */ -HWLOC_DECLSPEC void hwloc_bitmap_copy(hwloc_bitmap_t dst, hwloc_const_bitmap_t src); - - -/* - * Bitmap/String Conversion - */ - -/** \brief Stringify a bitmap. - * - * Up to \p buflen characters may be written in buffer \p buf. - * - * If \p buflen is 0, \p buf may safely be \c NULL. - * - * \return the number of character that were actually written if not truncating, - * or that would have been written (not including the ending \\0). - */ -HWLOC_DECLSPEC int hwloc_bitmap_snprintf(char * __hwloc_restrict buf, size_t buflen, hwloc_const_bitmap_t bitmap); - -/** \brief Stringify a bitmap into a newly allocated string. - */ -HWLOC_DECLSPEC int hwloc_bitmap_asprintf(char ** strp, hwloc_const_bitmap_t bitmap); - -/** \brief Parse a bitmap string and stores it in bitmap \p bitmap. - */ -HWLOC_DECLSPEC int hwloc_bitmap_sscanf(hwloc_bitmap_t bitmap, const char * __hwloc_restrict string); - -/** \brief Stringify a bitmap in the list format. - * - * Lists are comma-separated indexes or ranges. - * Ranges are dash separated indexes. - * The last range may not have a ending indexes if the bitmap is infinite. - * - * Up to \p buflen characters may be written in buffer \p buf. - * - * If \p buflen is 0, \p buf may safely be \c NULL. - * - * \return the number of character that were actually written if not truncating, - * or that would have been written (not including the ending \\0). - */ -HWLOC_DECLSPEC int hwloc_bitmap_list_snprintf(char * __hwloc_restrict buf, size_t buflen, hwloc_const_bitmap_t bitmap); - -/** \brief Stringify a bitmap into a newly allocated list string. - */ -HWLOC_DECLSPEC int hwloc_bitmap_list_asprintf(char ** strp, hwloc_const_bitmap_t bitmap); - -/** \brief Parse a list string and stores it in bitmap \p bitmap. - */ -HWLOC_DECLSPEC int hwloc_bitmap_list_sscanf(hwloc_bitmap_t bitmap, const char * __hwloc_restrict string); - -/** \brief Stringify a bitmap in the taskset-specific format. - * - * The taskset command manipulates bitmap strings that contain a single - * (possible very long) hexadecimal number starting with 0x. - * - * Up to \p buflen characters may be written in buffer \p buf. - * - * If \p buflen is 0, \p buf may safely be \c NULL. - * - * \return the number of character that were actually written if not truncating, - * or that would have been written (not including the ending \\0). - */ -HWLOC_DECLSPEC int hwloc_bitmap_taskset_snprintf(char * __hwloc_restrict buf, size_t buflen, hwloc_const_bitmap_t bitmap); - -/** \brief Stringify a bitmap into a newly allocated taskset-specific string. - */ -HWLOC_DECLSPEC int hwloc_bitmap_taskset_asprintf(char ** strp, hwloc_const_bitmap_t bitmap); - -/** \brief Parse a taskset-specific bitmap string and stores it in bitmap \p bitmap. - */ -HWLOC_DECLSPEC int hwloc_bitmap_taskset_sscanf(hwloc_bitmap_t bitmap, const char * __hwloc_restrict string); - - -/* - * Building bitmaps. - */ - -/** \brief Empty the bitmap \p bitmap */ -HWLOC_DECLSPEC void hwloc_bitmap_zero(hwloc_bitmap_t bitmap); - -/** \brief Fill bitmap \p bitmap with all possible indexes (even if those objects don't exist or are otherwise unavailable) */ -HWLOC_DECLSPEC void hwloc_bitmap_fill(hwloc_bitmap_t bitmap); - -/** \brief Empty the bitmap \p bitmap and add bit \p id */ -HWLOC_DECLSPEC void hwloc_bitmap_only(hwloc_bitmap_t bitmap, unsigned id); - -/** \brief Fill the bitmap \p and clear the index \p id */ -HWLOC_DECLSPEC void hwloc_bitmap_allbut(hwloc_bitmap_t bitmap, unsigned id); - -/** \brief Setup bitmap \p bitmap from unsigned long \p mask */ -HWLOC_DECLSPEC void hwloc_bitmap_from_ulong(hwloc_bitmap_t bitmap, unsigned long mask); - -/** \brief Setup bitmap \p bitmap from unsigned long \p mask used as \p i -th subset */ -HWLOC_DECLSPEC void hwloc_bitmap_from_ith_ulong(hwloc_bitmap_t bitmap, unsigned i, unsigned long mask); - - -/* - * Modifying bitmaps. - */ - -/** \brief Add index \p id in bitmap \p bitmap */ -HWLOC_DECLSPEC void hwloc_bitmap_set(hwloc_bitmap_t bitmap, unsigned id); - -/** \brief Add indexes from \p begin to \p end in bitmap \p bitmap. - * - * If \p end is \c -1, the range is infinite. - */ -HWLOC_DECLSPEC void hwloc_bitmap_set_range(hwloc_bitmap_t bitmap, unsigned begin, int end); - -/** \brief Replace \p i -th subset of bitmap \p bitmap with unsigned long \p mask */ -HWLOC_DECLSPEC void hwloc_bitmap_set_ith_ulong(hwloc_bitmap_t bitmap, unsigned i, unsigned long mask); - -/** \brief Remove index \p id from bitmap \p bitmap */ -HWLOC_DECLSPEC void hwloc_bitmap_clr(hwloc_bitmap_t bitmap, unsigned id); - -/** \brief Remove indexes from \p begin to \p end in bitmap \p bitmap. - * - * If \p end is \c -1, the range is infinite. - */ -HWLOC_DECLSPEC void hwloc_bitmap_clr_range(hwloc_bitmap_t bitmap, unsigned begin, int end); - -/** \brief Keep a single index among those set in bitmap \p bitmap - * - * May be useful before binding so that the process does not - * have a chance of migrating between multiple logical CPUs - * in the original mask. - */ -HWLOC_DECLSPEC void hwloc_bitmap_singlify(hwloc_bitmap_t bitmap); - - -/* - * Consulting bitmaps. - */ - -/** \brief Convert the beginning part of bitmap \p bitmap into unsigned long \p mask */ -HWLOC_DECLSPEC unsigned long hwloc_bitmap_to_ulong(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure; - -/** \brief Convert the \p i -th subset of bitmap \p bitmap into unsigned long mask */ -HWLOC_DECLSPEC unsigned long hwloc_bitmap_to_ith_ulong(hwloc_const_bitmap_t bitmap, unsigned i) __hwloc_attribute_pure; - -/** \brief Test whether index \p id is part of bitmap \p bitmap */ -HWLOC_DECLSPEC int hwloc_bitmap_isset(hwloc_const_bitmap_t bitmap, unsigned id) __hwloc_attribute_pure; - -/** \brief Test whether bitmap \p bitmap is empty */ -HWLOC_DECLSPEC int hwloc_bitmap_iszero(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure; - -/** \brief Test whether bitmap \p bitmap is completely full */ -HWLOC_DECLSPEC int hwloc_bitmap_isfull(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure; - -/** \brief Compute the first index (least significant bit) in bitmap \p bitmap - * - * \return -1 if no index is set. - */ -HWLOC_DECLSPEC int hwloc_bitmap_first(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure; - -/** \brief Compute the next index in bitmap \p bitmap which is after index \p prev - * - * If \p prev is -1, the first index is returned. - * - * \return -1 if no index with higher index is bitmap. - */ -HWLOC_DECLSPEC int hwloc_bitmap_next(hwloc_const_bitmap_t bitmap, int prev) __hwloc_attribute_pure; - -/** \brief Compute the last index (most significant bit) in bitmap \p bitmap - * - * \return -1 if no index is bitmap, or if the index bitmap is infinite. - */ -HWLOC_DECLSPEC int hwloc_bitmap_last(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure; - -/** \brief Compute the "weight" of bitmap \p bitmap (i.e., number of - * indexes that are in the bitmap). - * - * \return the number of indexes that are in the bitmap. - */ -HWLOC_DECLSPEC int hwloc_bitmap_weight(hwloc_const_bitmap_t bitmap) __hwloc_attribute_pure; - -/** \brief Loop macro iterating on bitmap \p bitmap - * \hideinitializer - * - * \p index is the loop variable; it should be an unsigned int. The - * first iteration will set \p index to the lowest index in the bitmap. - * Successive iterations will iterate through, in order, all remaining - * indexes that in the bitmap. To be specific: each iteration will return a - * value for \p index such that hwloc_bitmap_isset(bitmap, index) is true. - * - * The assert prevents the loop from being infinite if the bitmap is infinite. - */ -#define hwloc_bitmap_foreach_begin(id, bitmap) \ -do { \ - assert(hwloc_bitmap_weight(bitmap) != -1); \ - for (id = hwloc_bitmap_first(bitmap); \ - (unsigned) id != (unsigned) -1; \ - id = hwloc_bitmap_next(bitmap, id)) { \ -/** \brief End of loop. Needs a terminating ';'. - * \hideinitializer - * - * \sa hwloc_bitmap_foreach_begin */ -#define hwloc_bitmap_foreach_end() \ - } \ -} while (0) - - -/* - * Combining bitmaps. - */ - -/** \brief Or bitmaps \p bitmap1 and \p bitmap2 and store the result in bitmap \p res */ -HWLOC_DECLSPEC void hwloc_bitmap_or (hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2); - -/** \brief And bitmaps \p bitmap1 and \p bitmap2 and store the result in bitmap \p res */ -HWLOC_DECLSPEC void hwloc_bitmap_and (hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2); - -/** \brief And bitmap \p bitmap1 and the negation of \p bitmap2 and store the result in bitmap \p res */ -HWLOC_DECLSPEC void hwloc_bitmap_andnot (hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2); - -/** \brief Xor bitmaps \p bitmap1 and \p bitmap2 and store the result in bitmap \p res */ -HWLOC_DECLSPEC void hwloc_bitmap_xor (hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2); - -/** \brief Negate bitmap \p bitmap and store the result in bitmap \p res */ -HWLOC_DECLSPEC void hwloc_bitmap_not (hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap); - - -/* - * Comparing bitmaps. - */ - -/** \brief Test whether bitmaps \p bitmap1 and \p bitmap2 intersects */ -HWLOC_DECLSPEC int hwloc_bitmap_intersects (hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) __hwloc_attribute_pure; - -/** \brief Test whether bitmap \p sub_bitmap is part of bitmap \p super_bitmap */ -HWLOC_DECLSPEC int hwloc_bitmap_isincluded (hwloc_const_bitmap_t sub_bitmap, hwloc_const_bitmap_t super_bitmap) __hwloc_attribute_pure; - -/** \brief Test whether bitmap \p bitmap1 is equal to bitmap \p bitmap2 */ -HWLOC_DECLSPEC int hwloc_bitmap_isequal (hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) __hwloc_attribute_pure; - -/** \brief Compare bitmaps \p bitmap1 and \p bitmap2 using their lowest index. - * - * Smaller least significant bit is smaller. - * The empty bitmap is considered higher than anything. - */ -HWLOC_DECLSPEC int hwloc_bitmap_compare_first(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) __hwloc_attribute_pure; - -/** \brief Compare bitmaps \p bitmap1 and \p bitmap2 using their highest index. - * - * Higher most significant bit is higher. - * The empty bitmap is considered lower than anything. - */ -HWLOC_DECLSPEC int hwloc_bitmap_compare(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) __hwloc_attribute_pure; - -/** @} */ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - - -#endif /* HWLOC_BITMAP_H */ diff --git a/hwloc-1.2.1/include/hwloc/cpuset.h b/hwloc-1.2.1/include/hwloc/cpuset.h deleted file mode 100644 index 9260a0c6..00000000 --- a/hwloc-1.2.1/include/hwloc/cpuset.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2010 INRIA. All rights reserved. - * Copyright © 2009-2010 Université Bordeaux 1 - * Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/** \file - * \brief The old deprecated Cpuset API. - * This interface should not be used anymore, it will be dropped in a later release. - * - * hwloc/bitmap.h should be used instead. Most hwloc_cpuset_foo functions are - * replaced with hwloc_bitmap_foo. The only exceptions are: - * - hwloc_cpuset_from_string -> hwloc_bitmap_sscanf - * - hwloc_cpuset_cpu -> hwloc_bitmap_only - * - hwloc_cpuset_all_but_cpu -> hwloc_bitmap_allbut - */ - -#ifndef HWLOC_CPUSET_H -#define HWLOC_CPUSET_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "hwloc/bitmap.h" - -static __hwloc_inline hwloc_bitmap_t __hwloc_attribute_deprecated hwloc_cpuset_alloc(void) { return hwloc_bitmap_alloc(); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_free(hwloc_bitmap_t bitmap) { hwloc_bitmap_free(bitmap); } -static __hwloc_inline hwloc_bitmap_t __hwloc_attribute_deprecated hwloc_cpuset_dup(hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_dup(bitmap); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_copy(hwloc_bitmap_t dst, hwloc_const_bitmap_t src) { hwloc_bitmap_copy(dst, src); } -static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_snprintf(char * __hwloc_restrict buf, size_t buflen, hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_snprintf(buf, buflen, bitmap); } -static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_asprintf(char ** strp, hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_asprintf(strp, bitmap); } -static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_from_string(hwloc_bitmap_t bitmap, const char * __hwloc_restrict string) { return hwloc_bitmap_sscanf(bitmap, string); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_zero(hwloc_bitmap_t bitmap) { hwloc_bitmap_zero(bitmap); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_fill(hwloc_bitmap_t bitmap) { hwloc_bitmap_fill(bitmap); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_from_ulong(hwloc_bitmap_t bitmap, unsigned long mask) { hwloc_bitmap_from_ulong(bitmap, mask); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_from_ith_ulong(hwloc_bitmap_t bitmap, unsigned i, unsigned long mask) { hwloc_bitmap_from_ith_ulong(bitmap, i, mask); } -static __hwloc_inline unsigned __hwloc_attribute_deprecated long hwloc_cpuset_to_ulong(hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_to_ulong(bitmap); } -static __hwloc_inline unsigned __hwloc_attribute_deprecated long hwloc_cpuset_to_ith_ulong(hwloc_const_bitmap_t bitmap, unsigned i) { return hwloc_bitmap_to_ith_ulong(bitmap, i); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_cpu(hwloc_bitmap_t bitmap, unsigned index_) { hwloc_bitmap_only(bitmap, index_); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_all_but_cpu(hwloc_bitmap_t bitmap, unsigned index_) { hwloc_bitmap_allbut(bitmap, index_); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_set(hwloc_bitmap_t bitmap, unsigned index_) { hwloc_bitmap_set(bitmap, index_); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_set_range(hwloc_bitmap_t bitmap, unsigned begin, unsigned end) { hwloc_bitmap_set_range(bitmap, begin, end); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_set_ith_ulong(hwloc_bitmap_t bitmap, unsigned i, unsigned long mask) { hwloc_bitmap_set_ith_ulong(bitmap, i, mask); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_clr(hwloc_bitmap_t bitmap, unsigned index_) { hwloc_bitmap_clr(bitmap, index_); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_clr_range(hwloc_bitmap_t bitmap, unsigned begin, unsigned end) { hwloc_bitmap_clr_range(bitmap, begin, end); } -static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_isset(hwloc_const_bitmap_t bitmap, unsigned index_) { return hwloc_bitmap_isset(bitmap, index_); } -static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_iszero(hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_iszero(bitmap); } -static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_isfull(hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_isfull(bitmap); } -static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_isequal(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) { return hwloc_bitmap_isequal(bitmap1, bitmap2); } -static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_intersects(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) { return hwloc_bitmap_intersects(bitmap1, bitmap2); } -static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_isincluded(hwloc_const_bitmap_t sub_bitmap, hwloc_const_bitmap_t super_bitmap) { return hwloc_bitmap_isincluded(sub_bitmap, super_bitmap); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_or(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) { hwloc_bitmap_or(res, bitmap1, bitmap2); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_and(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) { hwloc_bitmap_and(res, bitmap1, bitmap2); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_andnot(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) { hwloc_bitmap_andnot(res, bitmap1, bitmap2); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_xor(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) { hwloc_bitmap_xor(res, bitmap1, bitmap2); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_not(hwloc_bitmap_t res, hwloc_const_bitmap_t bitmap) { hwloc_bitmap_not(res, bitmap); } -static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_first(hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_first(bitmap); } -static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_last(hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_last(bitmap); } -static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_next(hwloc_const_bitmap_t bitmap, unsigned prev) { return hwloc_bitmap_next(bitmap, prev); } -static __hwloc_inline void __hwloc_attribute_deprecated hwloc_cpuset_singlify(hwloc_bitmap_t bitmap) { hwloc_bitmap_singlify(bitmap); } -static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_compare_first(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) { return hwloc_bitmap_compare_first(bitmap1, bitmap2); } -static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_compare(hwloc_const_bitmap_t bitmap1, hwloc_const_bitmap_t bitmap2) { return hwloc_bitmap_compare(bitmap1, bitmap2); } -static __hwloc_inline int __hwloc_attribute_deprecated hwloc_cpuset_weight(hwloc_const_bitmap_t bitmap) { return hwloc_bitmap_weight(bitmap); } - -#define hwloc_cpuset_foreach_begin hwloc_bitmap_foreach_begin -#define hwloc_cpuset_foreach_end hwloc_bitmap_foreach_end - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* HWLOC_CPUSET_H */ diff --git a/hwloc-1.2.1/include/hwloc/cuda.h b/hwloc-1.2.1/include/hwloc/cuda.h deleted file mode 100644 index eacb1985..00000000 --- a/hwloc-1.2.1/include/hwloc/cuda.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright © 2010 INRIA. All rights reserved. - * Copyright © 2010 Université Bordeaux 1 - * Copyright © 2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/** \file - * \brief Macros to help interaction between hwloc and the CUDA Driver API. - * - * Applications that use both hwloc and the CUDA Driver API may want to - * include this file so as to get topology information for CUDA devices. - * - */ - -#ifndef HWLOC_CUDA_H -#define HWLOC_CUDA_H - -#include <hwloc.h> -#include <hwloc/autogen/config.h> -#include <hwloc/linux.h> - -#include <cuda.h> - - -#ifdef __cplusplus -extern "C" { -#endif - - -/** \defgroup hwlocality_cuda CUDA Driver API Specific Functions - * @{ - */ - -/** \brief Get the CPU set of logical processors that are physically - * close to device \p cudevice. - * - * For the given CUDA Driver API device \p cudevice, read the corresponding - * kernel-provided cpumap file and return the corresponding CPU set. - * This function is currently only implemented in a meaningful way for - * Linux; other systems will simply get a full cpuset. - */ -static __hwloc_inline int -hwloc_cuda_get_device_cpuset(hwloc_topology_t topology __hwloc_attribute_unused, - CUdevice cudevice, hwloc_cpuset_t set) -{ -#ifdef HWLOC_LINUX_SYS - /* If we're on Linux, use the sysfs mechanism to get the local cpus */ -#define HWLOC_CUDA_DEVICE_SYSFS_PATH_MAX 128 - CUresult cres; - int deviceid; - int busid; - char path[HWLOC_CUDA_DEVICE_SYSFS_PATH_MAX]; - FILE *sysfile = NULL; - - cres = cuDeviceGetAttribute(&busid, CU_DEVICE_ATTRIBUTE_PCI_BUS_ID, cudevice); - if (cres != CUDA_SUCCESS) { - errno = ENOSYS; - return -1; - } - cres = cuDeviceGetAttribute(&deviceid, CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID, cudevice); - if (cres != CUDA_SUCCESS) { - errno = ENOSYS; - return -1; - } - - sprintf(path, "/sys/bus/pci/devices/0000:%02x:%02x.0/local_cpus", busid, deviceid); - sysfile = fopen(path, "r"); - if (!sysfile) - return -1; - - hwloc_linux_parse_cpumap_file(sysfile, set); - - fclose(sysfile); -#else - /* Non-Linux systems simply get a full cpuset */ - hwloc_bitmap_copy(set, hwloc_topology_get_complete_cpuset(topology)); -#endif - return 0; -} - -/** @} */ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - - -#endif /* HWLOC_CUDA_H */ diff --git a/hwloc-1.2.1/include/hwloc/cudart.h b/hwloc-1.2.1/include/hwloc/cudart.h deleted file mode 100644 index 0e8e6a16..00000000 --- a/hwloc-1.2.1/include/hwloc/cudart.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright © 2010 INRIA. All rights reserved. - * Copyright © 2010 Université Bordeaux 1 - * Copyright © 2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/** \file - * \brief Macros to help interaction between hwloc and the CUDA Runtime API. - * - * Applications that use both hwloc and the CUDA Runtime API may want to - * include this file so as to get topology information for CUDA devices. - * - */ - -#ifndef HWLOC_CUDART_H -#define HWLOC_CUDART_H - -#include <hwloc.h> -#include <hwloc/autogen/config.h> -#include <hwloc/linux.h> - -#include <cuda_runtime_api.h> - - -#ifdef __cplusplus -extern "C" { -#endif - - -/** \defgroup hwlocality_cudart CUDA Runtime API Specific Functions - * @{ - */ - -/** \brief Get the CPU set of logical processors that are physically - * close to device \p cudevice. - * - * For the given CUDA Runtime API device \p cudevice, read the corresponding - * kernel-provided cpumap file and return the corresponding CPU set. - * This function is currently only implemented in a meaningful way for - * Linux; other systems will simply get a full cpuset. - */ -static __hwloc_inline int -hwloc_cudart_get_device_cpuset(hwloc_topology_t topology __hwloc_attribute_unused, - int device, hwloc_cpuset_t set) -{ -#ifdef HWLOC_LINUX_SYS - /* If we're on Linux, use the sysfs mechanism to get the local cpus */ -#define HWLOC_CUDART_DEVICE_SYSFS_PATH_MAX 128 - cudaError_t cerr; - struct cudaDeviceProp prop; - char path[HWLOC_CUDART_DEVICE_SYSFS_PATH_MAX]; - FILE *sysfile = NULL; - - cerr = cudaGetDeviceProperties(&prop, device); - if (cerr) { - errno = ENOSYS; - return -1; - } - - sprintf(path, "/sys/bus/pci/devices/0000:%02x:%02x.0/local_cpus", prop.pciBusID, prop.pciDeviceID); - sysfile = fopen(path, "r"); - if (!sysfile) - return -1; - - hwloc_linux_parse_cpumap_file(sysfile, set); - - fclose(sysfile); -#else - /* Non-Linux systems simply get a full cpuset */ - hwloc_bitmap_copy(set, hwloc_topology_get_complete_cpuset(topology)); -#endif - return 0; -} - -/** @} */ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - - -#endif /* HWLOC_CUDART_H */ diff --git a/hwloc-1.2.1/include/hwloc/glibc-sched.h b/hwloc-1.2.1/include/hwloc/glibc-sched.h deleted file mode 100644 index d7af092d..00000000 --- a/hwloc-1.2.1/include/hwloc/glibc-sched.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2010 INRIA. All rights reserved. - * Copyright © 2009-2011 Université Bordeaux 1 - * Copyright © 2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/** \file - * \brief Macros to help interaction between hwloc and glibc scheduling routines. - * - * Applications that use both hwloc and glibc scheduling routines such as - * sched_getaffinity may want to include this file so as to ease conversion - * between their respective types. - */ - -#ifndef HWLOC_GLIBC_SCHED_H -#define HWLOC_GLIBC_SCHED_H - -#include <hwloc.h> -#include <hwloc/helper.h> -#include <assert.h> - -#if !defined _GNU_SOURCE || !defined _SCHED_H || !defined CPU_SETSIZE -#error Please make sure to include sched.h before including glibc-sched.h, and define _GNU_SOURCE before any inclusion of sched.h -#endif - - -#ifdef __cplusplus -extern "C" { -#endif - - -#ifdef HWLOC_HAVE_CPU_SET - - -/** \defgroup hwlocality_glibc_sched Helpers for manipulating glibc sched affinity - * @{ - */ - - -/** \brief Convert hwloc CPU set \p toposet into glibc sched affinity CPU set \p schedset - * - * This function may be used before calling sched_setaffinity or any other function - * that takes a cpu_set_t as input parameter. - * - * \p schedsetsize should be sizeof(cpu_set_t) unless \p schedset was dynamically allocated with CPU_ALLOC - */ -static __hwloc_inline int -hwloc_cpuset_to_glibc_sched_affinity(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_cpuset_t hwlocset, - cpu_set_t *schedset, size_t schedsetsize) -{ -#ifdef CPU_ZERO_S - unsigned cpu; - CPU_ZERO_S(schedsetsize, schedset); - hwloc_bitmap_foreach_begin(cpu, hwlocset) - CPU_SET_S(cpu, schedsetsize, schedset); - hwloc_bitmap_foreach_end(); -#else /* !CPU_ZERO_S */ - unsigned cpu; - CPU_ZERO(schedset); - assert(schedsetsize == sizeof(cpu_set_t)); - hwloc_bitmap_foreach_begin(cpu, hwlocset) - CPU_SET(cpu, schedset); - hwloc_bitmap_foreach_end(); -#endif /* !CPU_ZERO_S */ - return 0; -} - -/** \brief Convert glibc sched affinity CPU set \p schedset into hwloc CPU set - * - * This function may be used before calling sched_setaffinity or any other function - * that takes a cpu_set_t as input parameter. - * - * \p schedsetsize should be sizeof(cpu_set_t) unless \p schedset was dynamically allocated with CPU_ALLOC - */ -static __hwloc_inline int -hwloc_cpuset_from_glibc_sched_affinity(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_cpuset_t hwlocset, - const cpu_set_t *schedset, size_t schedsetsize) -{ -#ifdef CPU_ZERO_S - int cpu, count; -#endif - hwloc_bitmap_zero(hwlocset); -#ifdef CPU_ZERO_S - count = CPU_COUNT_S(schedsetsize, schedset); - cpu = 0; - while (count) { - if (CPU_ISSET_S(cpu, schedsetsize, schedset)) { - hwloc_bitmap_set(hwlocset, cpu); - count--; - } - cpu++; - } -#else /* !CPU_ZERO_S */ - /* sched.h does not support dynamic cpu_set_t (introduced in glibc 2.7), - * assume we have a very old interface without CPU_COUNT (added in 2.6) - */ - int cpu; - assert(schedsetsize == sizeof(cpu_set_t)); - for(cpu=0; cpu<CPU_SETSIZE; cpu++) - if (CPU_ISSET(cpu, schedset)) - hwloc_bitmap_set(hwlocset, cpu); -#endif /* !CPU_ZERO_S */ - return 0; -} - -/** @} */ - - -#endif /* CPU_SET */ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - - -#endif /* HWLOC_GLIBC_SCHED_H */ diff --git a/hwloc-1.2.1/include/hwloc/helper.h b/hwloc-1.2.1/include/hwloc/helper.h deleted file mode 100644 index 45a53849..00000000 --- a/hwloc-1.2.1/include/hwloc/helper.h +++ /dev/null @@ -1,1083 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2011 INRIA. All rights reserved. - * Copyright © 2009-2011 Université Bordeaux 1 - * Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/** \file - * \brief High-level hwloc traversal helpers. - */ - -#ifndef HWLOC_HELPER_H -#define HWLOC_HELPER_H - -#ifndef HWLOC_H -#error Please include the main hwloc.h instead -#endif - -#include <stdlib.h> -#include <errno.h> - - -#ifdef __cplusplus -extern "C" { -#endif - - -/** \defgroup hwlocality_helper_types Object Type Helpers - * @{ - */ - -/** \brief Returns the depth of objects of type \p type or below - * - * If no object of this type is present on the underlying architecture, the - * function returns the depth of the first "present" object typically found - * inside \p type. - */ -static __hwloc_inline int __hwloc_attribute_pure -hwloc_get_type_or_below_depth (hwloc_topology_t topology, hwloc_obj_type_t type) -{ - int depth = hwloc_get_type_depth(topology, type); - - if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) - return depth; - - /* find the highest existing level with type order >= */ - for(depth = hwloc_get_type_depth(topology, HWLOC_OBJ_PU); ; depth--) - if (hwloc_compare_types(hwloc_get_depth_type(topology, depth), type) < 0) - return depth+1; - - /* Shouldn't ever happen, as there is always a SYSTEM level with lower order and known depth. */ - /* abort(); */ -} - -/** \brief Returns the depth of objects of type \p type or above - * - * If no object of this type is present on the underlying architecture, the - * function returns the depth of the first "present" object typically - * containing \p type. - */ -static __hwloc_inline int __hwloc_attribute_pure -hwloc_get_type_or_above_depth (hwloc_topology_t topology, hwloc_obj_type_t type) -{ - int depth = hwloc_get_type_depth(topology, type); - - if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) - return depth; - - /* find the lowest existing level with type order <= */ - for(depth = 0; ; depth++) - if (hwloc_compare_types(hwloc_get_depth_type(topology, depth), type) > 0) - return depth-1; - - /* Shouldn't ever happen, as there is always a PU level with higher order and known depth. */ - /* abort(); */ -} - -/** @} */ - - - -/** \defgroup hwlocality_helper_traversal_basic Basic Traversal Helpers - * @{ - */ - -/** \brief Returns the top-object of the topology-tree. - * - * Its type is typically ::HWLOC_OBJ_MACHINE but it could be different - * for complex topologies. This function replaces the old deprecated - * hwloc_get_system_obj(). - */ -static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure -hwloc_get_root_obj (hwloc_topology_t topology) -{ - return hwloc_get_obj_by_depth (topology, 0, 0); -} - -/** \brief Returns the ancestor object of \p obj at depth \p depth. */ -static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure -hwloc_get_ancestor_obj_by_depth (hwloc_topology_t topology __hwloc_attribute_unused, unsigned depth, hwloc_obj_t obj) -{ - hwloc_obj_t ancestor = obj; - if (obj->depth < depth) - return NULL; - while (ancestor && ancestor->depth > depth) - ancestor = ancestor->parent; - return ancestor; -} - -/** \brief Returns the ancestor object of \p obj with type \p type. */ -static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure -hwloc_get_ancestor_obj_by_type (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_type_t type, hwloc_obj_t obj) -{ - hwloc_obj_t ancestor = obj->parent; - while (ancestor && ancestor->type != type) - ancestor = ancestor->parent; - return ancestor; -} - -/** \brief Returns the next object at depth \p depth. - * - * If \p prev is \c NULL, return the first object at depth \p depth. - */ -static __hwloc_inline hwloc_obj_t -hwloc_get_next_obj_by_depth (hwloc_topology_t topology, unsigned depth, hwloc_obj_t prev) -{ - if (!prev) - return hwloc_get_obj_by_depth (topology, depth, 0); - if (prev->depth != depth) - return NULL; - return prev->next_cousin; -} - -/** \brief Returns the next object of type \p type. - * - * If \p prev is \c NULL, return the first object at type \p type. If - * there are multiple or no depth for given type, return \c NULL and - * let the caller fallback to hwloc_get_next_obj_by_depth(). - */ -static __hwloc_inline hwloc_obj_t -hwloc_get_next_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type, - hwloc_obj_t prev) -{ - int depth = hwloc_get_type_depth(topology, type); - if (depth == HWLOC_TYPE_DEPTH_UNKNOWN || depth == HWLOC_TYPE_DEPTH_MULTIPLE) - return NULL; - return hwloc_get_next_obj_by_depth (topology, depth, prev); -} - -/** \brief Returns the object of type ::HWLOC_OBJ_PU with \p os_index. - * - * \note The \p os_index field of object should most of the times only be - * used for pretty-printing purpose. Type ::HWLOC_OBJ_PU is the only case - * where \p os_index could actually be useful, when manually binding to - * processors. - * However, using CPU sets to hide this complexity should often be preferred. - */ -static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure -hwloc_get_pu_obj_by_os_index(hwloc_topology_t topology, unsigned os_index) -{ - hwloc_obj_t obj = NULL; - while ((obj = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_PU, obj)) != NULL) - if (obj->os_index == os_index) - return obj; - return NULL; -} - -/** \brief Return the next child. - * - * If \p prev is \c NULL, return the first child. - */ -static __hwloc_inline hwloc_obj_t -hwloc_get_next_child (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t parent, hwloc_obj_t prev) -{ - if (!prev) - return parent->first_child; - if (prev->parent != parent) - return NULL; - return prev->next_sibling; -} - -/** \brief Returns the common parent object to objects lvl1 and lvl2 */ -static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure -hwloc_get_common_ancestor_obj (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t obj1, hwloc_obj_t obj2) -{ - /* the loop isn't so easy since intermediate ancestors may have - * different depth, causing us to alternate between using obj1->parent - * and obj2->parent. Also, even if at some point we find ancestors of - * of the same depth, their ancestors may have different depth again. - */ - while (obj1 != obj2) { - while (obj1->depth > obj2->depth) - obj1 = obj1->parent; - while (obj2->depth > obj1->depth) - obj2 = obj2->parent; - if (obj1 != obj2 && obj1->depth == obj2->depth) { - obj1 = obj1->parent; - obj2 = obj2->parent; - } - } - return obj1; -} - -/** \brief Returns true if \p obj is inside the subtree beginning with \p subtree_root. - * - * \note This function assumes that both \p obj and \p subtree_root have a \p cpuset. - */ -static __hwloc_inline int __hwloc_attribute_pure -hwloc_obj_is_in_subtree (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t obj, hwloc_obj_t subtree_root) -{ - return hwloc_bitmap_isincluded(obj->cpuset, subtree_root->cpuset); -} - -/** @} */ - - - -/** \defgroup hwlocality_helper_find_inside Finding Objects Inside a CPU set - * @{ - */ - -/** \brief Get the first largest object included in the given cpuset \p set. - * - * \return the first object that is included in \p set and whose parent is not. - * - * This is convenient for iterating over all largest objects within a CPU set - * by doing a loop getting the first largest object and clearing its CPU set - * from the remaining CPU set. - */ -static __hwloc_inline hwloc_obj_t -hwloc_get_first_largest_obj_inside_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t set) -{ - hwloc_obj_t obj = hwloc_get_root_obj(topology); - /* FIXME: what if !root->cpuset? */ - if (!hwloc_bitmap_intersects(obj->cpuset, set)) - return NULL; - while (!hwloc_bitmap_isincluded(obj->cpuset, set)) { - /* while the object intersects without being included, look at its children */ - hwloc_obj_t child = NULL; - while ((child = hwloc_get_next_child(topology, obj, child)) != NULL) { - if (child->cpuset && hwloc_bitmap_intersects(child->cpuset, set)) - break; - } - if (!child) - /* no child intersects, return their father */ - return obj; - /* found one intersecting child, look at its children */ - obj = child; - } - /* obj is included, return it */ - return obj; -} - -/** \brief Get the set of largest objects covering exactly a given cpuset \p set - * - * \return the number of objects returned in \p objs. - */ -HWLOC_DECLSPEC int hwloc_get_largest_objs_inside_cpuset (hwloc_topology_t topology, hwloc_const_cpuset_t set, - hwloc_obj_t * __hwloc_restrict objs, int max); - -/** \brief Return the next object at depth \p depth included in CPU set \p set. - * - * If \p prev is \c NULL, return the first object at depth \p depth - * included in \p set. The next invokation should pass the previous - * return value in \p prev so as to obtain the next object in \p set. - */ -static __hwloc_inline hwloc_obj_t -hwloc_get_next_obj_inside_cpuset_by_depth (hwloc_topology_t topology, hwloc_const_cpuset_t set, - unsigned depth, hwloc_obj_t prev) -{ - hwloc_obj_t next = hwloc_get_next_obj_by_depth(topology, depth, prev); - /* no need to check next->cpuset because objects in levels always have a cpuset */ - while (next && !hwloc_bitmap_isincluded(next->cpuset, set)) - next = next->next_cousin; - return next; -} - -/** \brief Return the next object of type \p type included in CPU set \p set. - * - * If there are multiple or no depth for given type, return \c NULL - * and let the caller fallback to - * hwloc_get_next_obj_inside_cpuset_by_depth(). - */ -static __hwloc_inline hwloc_obj_t -hwloc_get_next_obj_inside_cpuset_by_type (hwloc_topology_t topology, hwloc_const_cpuset_t set, - hwloc_obj_type_t type, hwloc_obj_t prev) -{ - int depth = hwloc_get_type_depth(topology, type); - if (depth == HWLOC_TYPE_DEPTH_UNKNOWN || depth == HWLOC_TYPE_DEPTH_MULTIPLE) - return NULL; - return hwloc_get_next_obj_inside_cpuset_by_depth(topology, set, depth, prev); -} - -/** \brief Return the (logically) \p idx -th object at depth \p depth included in CPU set \p set. - */ -static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure -hwloc_get_obj_inside_cpuset_by_depth (hwloc_topology_t topology, hwloc_const_cpuset_t set, - unsigned depth, unsigned idx) -{ - unsigned count = 0; - hwloc_obj_t obj = hwloc_get_obj_by_depth (topology, depth, 0); - while (obj) { - /* no need to check obj->cpuset because objects in levels always have a cpuset */ - if (hwloc_bitmap_isincluded(obj->cpuset, set)) { - if (count == idx) - return obj; - count++; - } - obj = obj->next_cousin; - } - return NULL; -} - -/** \brief Return the \p idx -th object of type \p type included in CPU set \p set. - * - * If there are multiple or no depth for given type, return \c NULL - * and let the caller fallback to - * hwloc_get_obj_inside_cpuset_by_depth(). - */ -static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure -hwloc_get_obj_inside_cpuset_by_type (hwloc_topology_t topology, hwloc_const_cpuset_t set, - hwloc_obj_type_t type, unsigned idx) -{ - int depth = hwloc_get_type_depth(topology, type); - if (depth == HWLOC_TYPE_DEPTH_UNKNOWN || depth == HWLOC_TYPE_DEPTH_MULTIPLE) - return NULL; - return hwloc_get_obj_inside_cpuset_by_depth(topology, set, depth, idx); -} - -/** \brief Return the number of objects at depth \p depth included in CPU set \p set. */ -static __hwloc_inline unsigned __hwloc_attribute_pure -hwloc_get_nbobjs_inside_cpuset_by_depth (hwloc_topology_t topology, hwloc_const_cpuset_t set, - unsigned depth) -{ - hwloc_obj_t obj = hwloc_get_obj_by_depth (topology, depth, 0); - int count = 0; - while (obj) { - /* no need to check obj->cpuset because objects in levels always have a cpuset */ - if (hwloc_bitmap_isincluded(obj->cpuset, set)) - count++; - obj = obj->next_cousin; - } - return count; -} - -/** \brief Return the number of objects of type \p type included in CPU set \p set. - * - * If no object for that type exists inside CPU set \p set, 0 is - * returned. If there are several levels with objects of that type - * inside CPU set \p set, -1 is returned. - */ -static __hwloc_inline int __hwloc_attribute_pure -hwloc_get_nbobjs_inside_cpuset_by_type (hwloc_topology_t topology, hwloc_const_cpuset_t set, - hwloc_obj_type_t type) -{ - int depth = hwloc_get_type_depth(topology, type); - if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) - return 0; - if (depth == HWLOC_TYPE_DEPTH_MULTIPLE) - return -1; /* FIXME: agregate nbobjs from different levels? */ - return hwloc_get_nbobjs_inside_cpuset_by_depth(topology, set, depth); -} - -/** @} */ - - - -/** \defgroup hwlocality_helper_find_covering Finding a single Object covering at least CPU set - * @{ - */ - -/** \brief Get the child covering at least CPU set \p set. - * - * \return \c NULL if no child matches or if \p set is empty. - */ -static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure -hwloc_get_child_covering_cpuset (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_cpuset_t set, - hwloc_obj_t parent) -{ - hwloc_obj_t child; - - if (hwloc_bitmap_iszero(set)) - return NULL; - - child = parent->first_child; - while (child) { - if (child->cpuset && hwloc_bitmap_isincluded(set, child->cpuset)) - return child; - child = child->next_sibling; - } - return NULL; -} - -/** \brief Get the lowest object covering at least CPU set \p set - * - * \return \c NULL if no object matches or if \p set is empty. - */ -static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure -hwloc_get_obj_covering_cpuset (hwloc_topology_t topology, hwloc_const_cpuset_t set) -{ - struct hwloc_obj *current = hwloc_get_root_obj(topology); - - if (hwloc_bitmap_iszero(set)) - return NULL; - - /* FIXME: what if !root->cpuset? */ - if (!hwloc_bitmap_isincluded(set, current->cpuset)) - return NULL; - - while (1) { - hwloc_obj_t child = hwloc_get_child_covering_cpuset(topology, set, current); - if (!child) - return current; - current = child; - } -} - - -/** @} */ - - - -/** \defgroup hwlocality_helper_find_coverings Finding a set of similar Objects covering at least a CPU set - * @{ - */ - -/** \brief Iterate through same-depth objects covering at least CPU set \p set - * - * If object \p prev is \c NULL, return the first object at depth \p - * depth covering at least part of CPU set \p set. The next - * invokation should pass the previous return value in \p prev so as - * to obtain the next object covering at least another part of \p set. - */ -static __hwloc_inline hwloc_obj_t -hwloc_get_next_obj_covering_cpuset_by_depth(hwloc_topology_t topology, hwloc_const_cpuset_t set, - unsigned depth, hwloc_obj_t prev) -{ - hwloc_obj_t next = hwloc_get_next_obj_by_depth(topology, depth, prev); - /* no need to check next->cpuset because objects in levels always have a cpuset */ - while (next && !hwloc_bitmap_intersects(set, next->cpuset)) - next = next->next_cousin; - return next; -} - -/** \brief Iterate through same-type objects covering at least CPU set \p set - * - * If object \p prev is \c NULL, return the first object of type \p - * type covering at least part of CPU set \p set. The next invokation - * should pass the previous return value in \p prev so as to obtain - * the next object of type \p type covering at least another part of - * \p set. - * - * If there are no or multiple depths for type \p type, \c NULL is returned. - * The caller may fallback to hwloc_get_next_obj_covering_cpuset_by_depth() - * for each depth. - */ -static __hwloc_inline hwloc_obj_t -hwloc_get_next_obj_covering_cpuset_by_type(hwloc_topology_t topology, hwloc_const_cpuset_t set, - hwloc_obj_type_t type, hwloc_obj_t prev) -{ - int depth = hwloc_get_type_depth(topology, type); - if (depth == HWLOC_TYPE_DEPTH_UNKNOWN || depth == HWLOC_TYPE_DEPTH_MULTIPLE) - return NULL; - return hwloc_get_next_obj_covering_cpuset_by_depth(topology, set, depth, prev); -} - -/** @} */ - - - -/** \defgroup hwlocality_helper_find_cache Cache-specific Finding Helpers - * @{ - */ - -/** \brief Get the first cache covering a cpuset \p set - * - * \return \c NULL if no cache matches - */ -static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure -hwloc_get_cache_covering_cpuset (hwloc_topology_t topology, hwloc_const_cpuset_t set) -{ - hwloc_obj_t current = hwloc_get_obj_covering_cpuset(topology, set); - while (current) { - if (current->type == HWLOC_OBJ_CACHE) - return current; - current = current->parent; - } - return NULL; -} - -/** \brief Get the first cache shared between an object and somebody else. - * - * \return \c NULL if no cache matches or if an invalid object is given. - */ -static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure -hwloc_get_shared_cache_covering_obj (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t obj) -{ - hwloc_obj_t current = obj->parent; - if (!obj->cpuset) - return NULL; - while (current && current->cpuset) { - if (!hwloc_bitmap_isequal(current->cpuset, obj->cpuset) - && current->type == HWLOC_OBJ_CACHE) - return current; - current = current->parent; - } - return NULL; -} - -/** @} */ - - - -/** \defgroup hwlocality_helper_traversal Advanced Traversal Helpers - * @{ - */ - -/** \brief Do a depth-first traversal of the topology to find and sort - * - * all objects that are at the same depth than \p src. - * Report in \p objs up to \p max physically closest ones to \p src. - * - * \return the number of objects returned in \p objs. - */ -/* TODO: rather provide an iterator? Provide a way to know how much should be allocated? By returning the total number of objects instead? */ -HWLOC_DECLSPEC unsigned hwloc_get_closest_objs (hwloc_topology_t topology, hwloc_obj_t src, hwloc_obj_t * __hwloc_restrict objs, unsigned max); - -/** \brief Find an object below another object, both specified by types and indexes. - * - * Start from the top system object and find object of type \p type1 - * and logical index \p idx1. Then look below this object and find another - * object of type \p type2 and logical index \p idx2. Indexes are specified - * within the parent, not withing the entire system. - * - * For instance, if type1 is SOCKET, idx1 is 2, type2 is CORE and idx2 - * is 3, return the fourth core object below the third socket. - */ -static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure -hwloc_get_obj_below_by_type (hwloc_topology_t topology, - hwloc_obj_type_t type1, unsigned idx1, - hwloc_obj_type_t type2, unsigned idx2) -{ - hwloc_obj_t obj; - - obj = hwloc_get_obj_by_type (topology, type1, idx1); - if (!obj) - return NULL; - - return hwloc_get_obj_inside_cpuset_by_type(topology, obj->cpuset, type2, idx2); -} - -/** \brief Find an object below a chain of objects specified by types and indexes. - * - * This is a generalized version of hwloc_get_obj_below_by_type(). - * - * Arrays \p typev and \p idxv must contain \p nr types and indexes. - * - * Start from the top system object and walk the arrays \p typev and \p idxv. - * For each type and logical index couple in the arrays, look under the previously found - * object to find the index-th object of the given type. - * Indexes are specified within the parent, not withing the entire system. - * - * For instance, if nr is 3, typev contains NODE, SOCKET and CORE, - * and idxv contains 0, 1 and 2, return the third core object below - * the second socket below the first NUMA node. - */ -static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure -hwloc_get_obj_below_array_by_type (hwloc_topology_t topology, int nr, hwloc_obj_type_t *typev, unsigned *idxv) -{ - hwloc_obj_t obj = hwloc_get_root_obj(topology); - int i; - - /* FIXME: what if !root->cpuset? */ - for(i=0; i<nr; i++) { - obj = hwloc_get_obj_inside_cpuset_by_type(topology, obj->cpuset, typev[i], idxv[i]); - if (!obj) - return NULL; - } - - return obj; -} - -/** @} */ - - - -/** \defgroup hwlocality_helper_binding Binding Helpers - * @{ - */ - -/** \brief Distribute \p n items over the topology under \p root - * - * Array \p cpuset will be filled with \p n cpusets recursively distributed - * linearly over the topology under \p root, down to depth \p until (which can - * be INT_MAX to distribute down to the finest level). - * - * This is typically useful when an application wants to distribute \p n - * threads over a machine, giving each of them as much private cache as - * possible and keeping them locally in number order. - * - * The caller may typically want to also call hwloc_bitmap_singlify() - * before binding a thread so that it does not move at all. - */ -static __hwloc_inline void -hwloc_distributev(hwloc_topology_t topology, hwloc_obj_t *root, unsigned n_roots, hwloc_cpuset_t *cpuset, unsigned n, unsigned until); -static __hwloc_inline void -hwloc_distribute(hwloc_topology_t topology, hwloc_obj_t root, hwloc_cpuset_t *cpuset, unsigned n, unsigned until) -{ - unsigned i; - - /* FIXME: what if !root->cpuset? */ - if (!root->arity || n == 1 || root->depth >= until) { - /* Got to the bottom, we can't split any more, put everything there. */ - for (i=0; i<n; i++) - cpuset[i] = hwloc_bitmap_dup(root->cpuset); - return; - } - - hwloc_distributev(topology, root->children, root->arity, cpuset, n, until); -} - -/** \brief Distribute \p n items over the topology under \p roots - * - * This is the same as hwloc_distribute, but takes an array of roots instead of - * just one root. - */ -static __hwloc_inline void -hwloc_distributev(hwloc_topology_t topology, hwloc_obj_t *roots, unsigned n_roots, hwloc_cpuset_t *cpuset, unsigned n, unsigned until) -{ - unsigned i; - unsigned tot_weight; - hwloc_cpuset_t *cpusetp = cpuset; - - tot_weight = 0; - for (i = 0; i < n_roots; i++) - if (roots[i]->cpuset) - tot_weight += hwloc_bitmap_weight(roots[i]->cpuset); - - for (i = 0; i < n_roots && tot_weight; i++) { - /* Give to roots[i] a portion proportional to its weight */ - unsigned weight = roots[i]->cpuset ? hwloc_bitmap_weight(roots[i]->cpuset) : 0; - unsigned chunk = (n * weight + tot_weight-1) / tot_weight; - hwloc_distribute(topology, roots[i], cpusetp, chunk, until); - cpusetp += chunk; - tot_weight -= weight; - n -= chunk; - } -} - -/** \brief Allocate some memory on the given nodeset \p nodeset - * - * This is similar to hwloc_alloc_membind except that it is allowed to change - * the current memory binding policy, thus providing more binding support, at - * the expense of changing the current state. - */ -static __hwloc_inline void * -hwloc_alloc_membind_policy_nodeset(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - void *p = hwloc_alloc_membind_nodeset(topology, len, nodeset, policy, flags); - if (p) - return p; - hwloc_set_membind_nodeset(topology, nodeset, policy, flags); - p = hwloc_alloc(topology, len); - if (p && policy != HWLOC_MEMBIND_FIRSTTOUCH) - /* Enforce the binding by touching the data */ - memset(p, 0, len); - return p; -} - -/** \brief Allocate some memory on the memory nodes near given cpuset \p cpuset - * - * This is similar to hwloc_alloc_membind_policy_nodeset, but for a given cpuset. - */ -static __hwloc_inline void * -hwloc_alloc_membind_policy(hwloc_topology_t topology, size_t len, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags) -{ - void *p = hwloc_alloc_membind(topology, len, cpuset, policy, flags); - if (p) - return p; - hwloc_set_membind(topology, cpuset, policy, flags); - p = hwloc_alloc(topology, len); - if (p && policy != HWLOC_MEMBIND_FIRSTTOUCH) - /* Enforce the binding by touching the data */ - memset(p, 0, len); - return p; -} - -/** @} */ - - - -/** \defgroup hwlocality_helper_cpuset Cpuset Helpers - * @{ - */ -/** \brief Get complete CPU set - * - * \return the complete CPU set of logical processors of the system. If the - * topology is the result of a combination of several systems, NULL is - * returned. - * - * \note The returned cpuset is not newly allocated and should thus not be - * changed or freed; hwloc_cpuset_dup must be used to obtain a local copy. - */ -static __hwloc_inline hwloc_const_cpuset_t __hwloc_attribute_pure -hwloc_topology_get_complete_cpuset(hwloc_topology_t topology) -{ - return hwloc_get_root_obj(topology)->complete_cpuset; -} - -/** \brief Get topology CPU set - * - * \return the CPU set of logical processors of the system for which hwloc - * provides topology information. This is equivalent to the cpuset of the - * system object. If the topology is the result of a combination of several - * systems, NULL is returned. - * - * \note The returned cpuset is not newly allocated and should thus not be - * changed or freed; hwloc_cpuset_dup must be used to obtain a local copy. - */ -static __hwloc_inline hwloc_const_cpuset_t __hwloc_attribute_pure -hwloc_topology_get_topology_cpuset(hwloc_topology_t topology) -{ - return hwloc_get_root_obj(topology)->cpuset; -} - -/** \brief Get online CPU set - * - * \return the CPU set of online logical processors of the system. If the - * topology is the result of a combination of several systems, NULL is - * returned. - * - * \note The returned cpuset is not newly allocated and should thus not be - * changed or freed; hwloc_cpuset_dup must be used to obtain a local copy. - */ -static __hwloc_inline hwloc_const_cpuset_t __hwloc_attribute_pure -hwloc_topology_get_online_cpuset(hwloc_topology_t topology) -{ - return hwloc_get_root_obj(topology)->online_cpuset; -} - -/** \brief Get allowed CPU set - * - * \return the CPU set of allowed logical processors of the system. If the - * topology is the result of a combination of several systems, NULL is - * returned. - * - * \note The returned cpuset is not newly allocated and should thus not be - * changed or freed, hwloc_cpuset_dup must be used to obtain a local copy. - */ -static __hwloc_inline hwloc_const_cpuset_t __hwloc_attribute_pure -hwloc_topology_get_allowed_cpuset(hwloc_topology_t topology) -{ - return hwloc_get_root_obj(topology)->allowed_cpuset; -} - -/** @} */ - - - -/** \defgroup hwlocality_helper_nodeset Nodeset Helpers - * @{ - */ -/** \brief Get complete node set - * - * \return the complete node set of memory of the system. If the - * topology is the result of a combination of several systems, NULL is - * returned. - * - * \note The returned nodeset is not newly allocated and should thus not be - * changed or freed; hwloc_nodeset_dup must be used to obtain a local copy. - */ -static __hwloc_inline hwloc_const_nodeset_t __hwloc_attribute_pure -hwloc_topology_get_complete_nodeset(hwloc_topology_t topology) -{ - return hwloc_get_root_obj(topology)->complete_nodeset; -} - -/** \brief Get topology node set - * - * \return the node set of memory of the system for which hwloc - * provides topology information. This is equivalent to the nodeset of the - * system object. If the topology is the result of a combination of several - * systems, NULL is returned. - * - * \note The returned nodeset is not newly allocated and should thus not be - * changed or freed; hwloc_nodeset_dup must be used to obtain a local copy. - */ -static __hwloc_inline hwloc_const_nodeset_t __hwloc_attribute_pure -hwloc_topology_get_topology_nodeset(hwloc_topology_t topology) -{ - return hwloc_get_root_obj(topology)->nodeset; -} - -/** \brief Get allowed node set - * - * \return the node set of allowed memory of the system. If the - * topology is the result of a combination of several systems, NULL is - * returned. - * - * \note The returned nodeset is not newly allocated and should thus not be - * changed or freed, hwloc_nodeset_dup must be used to obtain a local copy. - */ -static __hwloc_inline hwloc_const_nodeset_t __hwloc_attribute_pure -hwloc_topology_get_allowed_nodeset(hwloc_topology_t topology) -{ - return hwloc_get_root_obj(topology)->allowed_nodeset; -} - -/** @} */ - - - -/** \defgroup hwlocality_helper_nodeset_convert Conversion between cpuset and nodeset - * - * There are two semantics for converting cpusets to nodesets depending on how - * non-NUMA machines are handled. - * - * When manipulating nodesets for memory binding, non-NUMA machines should be - * considered as having a single NUMA node. The standard conversion routines - * below should be used so that marking the first bit of the nodeset means - * that memory should be bound to a non-NUMA whole machine. - * - * When manipulating nodesets as an actual list of NUMA nodes without any - * need to handle memory binding on non-NUMA machines, the strict conversion - * routines may be used instead. - * @{ - */ - -/** \brief Convert a CPU set into a NUMA node set and handle non-NUMA cases - * - * If some NUMA nodes have no CPUs at all, this function never sets their - * indexes in the output node set, even if a full CPU set is given in input. - * - * If the topology contains no NUMA nodes, the machine is considered - * as a single memory node, and the following behavior is used: - * If \p cpuset is empty, \p nodeset will be emptied as well. - * Otherwise \p nodeset will be entirely filled. - */ -static __hwloc_inline void -hwloc_cpuset_to_nodeset(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset, hwloc_nodeset_t nodeset) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - hwloc_obj_t obj; - - if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) { - if (hwloc_bitmap_iszero(cpuset)) - hwloc_bitmap_zero(nodeset); - else - /* Assume the whole system */ - hwloc_bitmap_fill(nodeset); - return; - } - - hwloc_bitmap_zero(nodeset); - obj = NULL; - while ((obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, cpuset, depth, obj)) != NULL) - hwloc_bitmap_set(nodeset, obj->os_index); -} - -/** \brief Convert a CPU set into a NUMA node set without handling non-NUMA cases - * - * This is the strict variant of ::hwloc_cpuset_to_nodeset. It does not fix - * non-NUMA cases. If the topology contains some NUMA nodes, behave exactly - * the same. However, if the topology contains no NUMA nodes, return an empty - * nodeset. - */ -static __hwloc_inline void -hwloc_cpuset_to_nodeset_strict(struct hwloc_topology *topology, hwloc_const_cpuset_t cpuset, hwloc_nodeset_t nodeset) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - hwloc_obj_t obj; - if (depth == HWLOC_TYPE_DEPTH_UNKNOWN ) - return; - hwloc_bitmap_zero(nodeset); - obj = NULL; - while ((obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, cpuset, depth, obj)) != NULL) - hwloc_bitmap_set(nodeset, obj->os_index); -} - -/** \brief Convert a NUMA node set into a CPU set and handle non-NUMA cases - * - * If the topology contains no NUMA nodes, the machine is considered - * as a single memory node, and the following behavior is used: - * If \p nodeset is empty, \p cpuset will be emptied as well. - * Otherwise \p cpuset will be entirely filled. - * This is useful for manipulating memory binding sets. - */ -static __hwloc_inline void -hwloc_cpuset_from_nodeset(hwloc_topology_t topology, hwloc_cpuset_t cpuset, hwloc_const_nodeset_t nodeset) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - hwloc_obj_t obj; - - if (depth == HWLOC_TYPE_DEPTH_UNKNOWN ) { - if (hwloc_bitmap_iszero(nodeset)) - hwloc_bitmap_zero(cpuset); - else - /* Assume the whole system */ - hwloc_bitmap_fill(cpuset); - return; - } - - hwloc_bitmap_zero(cpuset); - obj = NULL; - while ((obj = hwloc_get_next_obj_by_depth(topology, depth, obj)) != NULL) { - if (hwloc_bitmap_isset(nodeset, obj->os_index)) - /* no need to check obj->cpuset because objects in levels always have a cpuset */ - hwloc_bitmap_or(cpuset, cpuset, obj->cpuset); - } -} - -/** \brief Convert a NUMA node set into a CPU set without handling non-NUMA cases - * - * This is the strict variant of ::hwloc_cpuset_from_nodeset. It does not fix - * non-NUMA cases. If the topology contains some NUMA nodes, behave exactly - * the same. However, if the topology contains no NUMA nodes, return an empty - * cpuset. - */ -static __hwloc_inline void -hwloc_cpuset_from_nodeset_strict(struct hwloc_topology *topology, hwloc_cpuset_t cpuset, hwloc_const_nodeset_t nodeset) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - hwloc_obj_t obj; - if (depth == HWLOC_TYPE_DEPTH_UNKNOWN ) - return; - hwloc_bitmap_zero(cpuset); - obj = NULL; - while ((obj = hwloc_get_next_obj_by_depth(topology, depth, obj)) != NULL) - if (hwloc_bitmap_isset(nodeset, obj->os_index)) - /* no need to check obj->cpuset because objects in levels always have a cpuset */ - hwloc_bitmap_or(cpuset, cpuset, obj->cpuset); -} - -/** @} */ - - - -/** \defgroup hwlocality_distances Distances - * @{ - */ - -/** \brief Get the distances between all objects at the given depth. - * - * \return a distances structure containing a matrix with all distances - * between all objects at the given depth. - * - * Slot i+nbobjs*j contains the distance from the object of logical index i - * the object of logical index j. - * - * \note This function only returns matrices covering the whole topology, - * without any unknown distance value. Those matrices are available in - * top-level object of the hierarchy. Matrices of lower objects are not - * reported here since they cover only part of the machine. - * - * The returned structure belongs to the hwloc library. The caller should - * not modify or free it. - * - * \return \c NULL if no such distance matrix exists. - */ - -static __hwloc_inline const struct hwloc_distances_s * -hwloc_get_whole_distance_matrix_by_depth(hwloc_topology_t topology, unsigned depth) -{ - hwloc_obj_t root = hwloc_get_root_obj(topology); - unsigned i; - for(i=0; i<root->distances_count; i++) - if (root->distances[i]->relative_depth == depth) - return root->distances[i]; - return NULL; -} - -/** \brief Get the distances between all objects of a given type. - * - * \return a distances structure containing a matrix with all distances - * between all objects of the given type. - * - * Slot i+nbobjs*j contains the distance from the object of logical index i - * the object of logical index j. - * - * \note This function only returns matrices covering the whole topology, - * without any unknown distance value. Those matrices are available in - * top-level object of the hierarchy. Matrices of lower objects are not - * reported here since they cover only part of the machine. - * - * The returned structure belongs to the hwloc library. The caller should - * not modify or free it. - * - * \return \c NULL if no such distance matrix exists. - */ - -static __hwloc_inline const struct hwloc_distances_s * -hwloc_get_whole_distance_matrix_by_type(hwloc_topology_t topology, hwloc_obj_type_t type) -{ - int depth = hwloc_get_type_depth(topology, type); - if (depth < 0) - return NULL; - return hwloc_get_whole_distance_matrix_by_depth(topology, depth); -} - -/** \brief Get distances for the given depth and covering some objects - * - * Return a distance matrix that describes depth \p depth and covers at - * least object \p obj and all its ancestors. - * - * When looking for the distance between some objects, a common ancestor should - * be passed in \p obj. - * - * \p firstp is set to logical index of the first object described by the matrix. - * - * The returned structure belongs to the hwloc library. The caller should - * not modify or free it. - */ -static __hwloc_inline const struct hwloc_distances_s * -hwloc_get_distance_matrix_covering_obj_by_depth(hwloc_topology_t topology, - hwloc_obj_t obj, unsigned depth, - unsigned *firstp) -{ - while (obj && obj->cpuset) { - unsigned i; - for(i=0; i<obj->distances_count; i++) - if (obj->distances[i]->relative_depth == depth - obj->depth) { - if (!obj->distances[i]->nbobjs) - continue; - *firstp = hwloc_get_next_obj_inside_cpuset_by_depth(topology, obj->cpuset, depth, NULL)->logical_index; - return obj->distances[i]; - } - obj = obj->parent; - } - return NULL; -} - -/** \brief Get the latency in both directions between two objects. - * - * Look at ancestor objects from the bottom to the top until one of them - * contains a distance matrix that matches the objects exactly. - * - * \p latency gets the value from object \p obj1 to \p obj2, while - * \p reverse_latency gets the reverse-direction value, which - * may be different on some architectures. - * - * \return -1 if no ancestor contains a matching latency matrix. - */ -static __hwloc_inline int -hwloc_get_latency(hwloc_topology_t topology, - hwloc_obj_t obj1, hwloc_obj_t obj2, - float *latency, float *reverse_latency) -{ - hwloc_obj_t ancestor; - const struct hwloc_distances_s * distances; - unsigned first_logical ; - - if (obj1->depth != obj2->depth) { - errno = EINVAL; - return -1; - } - - ancestor = hwloc_get_common_ancestor_obj(topology, obj1, obj2); - distances = hwloc_get_distance_matrix_covering_obj_by_depth(topology, ancestor, obj1->depth, &first_logical); - if (distances && distances->latency) { - const float * latency_matrix = distances->latency; - unsigned nbobjs = distances->nbobjs; - unsigned l1 = obj1->logical_index - first_logical; - unsigned l2 = obj2->logical_index - first_logical; - *latency = latency_matrix[l1*nbobjs+l2]; - *reverse_latency = latency_matrix[l2*nbobjs+l1]; - return 0; - } - - errno = ENOSYS; - return -1; -} - -/** @} */ - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - - -#endif /* HWLOC_HELPER_H */ diff --git a/hwloc-1.2.1/include/hwloc/linux-libnuma.h b/hwloc-1.2.1/include/hwloc/linux-libnuma.h deleted file mode 100644 index 399b265f..00000000 --- a/hwloc-1.2.1/include/hwloc/linux-libnuma.h +++ /dev/null @@ -1,462 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2010 INRIA. All rights reserved. - * Copyright © 2009-2010 Université Bordeaux 1 - * See COPYING in top-level directory. - */ - -/** \file - * \brief Macros to help interaction between hwloc and Linux libnuma. - * - * Applications that use both Linux libnuma and hwloc may want to - * include this file so as to ease conversion between their respective types. - */ - -#ifndef HWLOC_LINUX_LIBNUMA_H -#define HWLOC_LINUX_LIBNUMA_H - -#include <hwloc.h> -#include <numa.h> - - -#ifdef __cplusplus -extern "C" { -#endif - - -/** \defgroup hwlocality_linux_libnuma_ulongs Helpers for manipulating Linux libnuma unsigned long masks - * @{ - */ - - -/** \brief Convert hwloc CPU set \p cpuset into the array of unsigned long \p mask - * - * \p mask is the array of unsigned long that will be filled. - * \p maxnode contains the maximal node number that may be stored in \p mask. - * \p maxnode will be set to the maximal node number that was found, plus one. - * - * This function may be used before calling set_mempolicy, mbind, migrate_pages - * or any other function that takes an array of unsigned long and a maximal - * node number as input parameter. - */ -static __hwloc_inline int -hwloc_cpuset_to_linux_libnuma_ulongs(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset, - unsigned long *mask, unsigned long *maxnode) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - unsigned long outmaxnode = -1; - - /* round-up to the next ulong and clear all bytes */ - *maxnode = (*maxnode + 8*sizeof(*mask) - 1) & ~(8*sizeof(*mask) - 1); - memset(mask, 0, *maxnode/8); - - if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) { - hwloc_obj_t node = NULL; - while ((node = hwloc_get_next_obj_covering_cpuset_by_type(topology, cpuset, HWLOC_OBJ_NODE, node)) != NULL) { - if (node->os_index >= *maxnode) - continue; - mask[node->os_index/sizeof(*mask)/8] |= 1UL << (node->os_index % (sizeof(*mask)*8)); - if (outmaxnode == (unsigned long) -1 || outmaxnode < node->os_index) - outmaxnode = node->os_index; - } - - } else { - /* if no numa, libnuma assumes we have a single node */ - if (!hwloc_bitmap_iszero(cpuset)) { - mask[0] = 1; - outmaxnode = 0; - } - } - - *maxnode = outmaxnode+1; - return 0; -} - -/** \brief Convert hwloc NUMA node set \p nodeset into the array of unsigned long \p mask - * - * \p mask is the array of unsigned long that will be filled. - * \p maxnode contains the maximal node number that may be stored in \p mask. - * \p maxnode will be set to the maximal node number that was found, plus one. - * - * This function may be used before calling set_mempolicy, mbind, migrate_pages - * or any other function that takes an array of unsigned long and a maximal - * node number as input parameter. - */ -static __hwloc_inline int -hwloc_nodeset_to_linux_libnuma_ulongs(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, - unsigned long *mask, unsigned long *maxnode) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - unsigned long outmaxnode = -1; - - /* round-up to the next ulong and clear all bytes */ - *maxnode = (*maxnode + 8*sizeof(*mask) - 1) & ~(8*sizeof(*mask) - 1); - memset(mask, 0, *maxnode/8); - - if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) { - hwloc_obj_t node = NULL; - while ((node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NODE, node)) != NULL) { - if (node->os_index >= *maxnode) - continue; - if (!hwloc_bitmap_isset(nodeset, node->os_index)) - continue; - mask[node->os_index/sizeof(*mask)/8] |= 1UL << (node->os_index % (sizeof(*mask)*8)); - if (outmaxnode == (unsigned long) -1 || outmaxnode < node->os_index) - outmaxnode = node->os_index; - } - - } else { - /* if no numa, libnuma assumes we have a single node */ - if (!hwloc_bitmap_iszero(nodeset)) { - mask[0] = 1; - outmaxnode = 0; - } - } - - *maxnode = outmaxnode+1; - return 0; -} - -/** \brief Convert the array of unsigned long \p mask into hwloc CPU set - * - * \p mask is a array of unsigned long that will be read. - * \p maxnode contains the maximal node number that may be read in \p mask. - * - * This function may be used after calling get_mempolicy or any other function - * that takes an array of unsigned long as output parameter (and possibly - * a maximal node number as input parameter). - */ -static __hwloc_inline int -hwloc_cpuset_from_linux_libnuma_ulongs(hwloc_topology_t topology, hwloc_cpuset_t cpuset, - const unsigned long *mask, unsigned long maxnode) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - - if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) { - hwloc_obj_t node; - unsigned i; - hwloc_bitmap_zero(cpuset); - for(i=0; i<maxnode; i++) - if (mask[i/sizeof(*mask)/8] & (1UL << (i% (sizeof(*mask)*8)))) { - node = hwloc_get_obj_by_depth(topology, depth, i); - if (node) - hwloc_bitmap_or(cpuset, cpuset, node->cpuset); - } - } else { - /* if no numa, libnuma assumes we have a single node */ - if (mask[0] & 1) - hwloc_bitmap_copy(cpuset, hwloc_topology_get_complete_cpuset(topology)); - else - hwloc_bitmap_zero(cpuset); - } - - return 0; -} - -/** \brief Convert the array of unsigned long \p mask into hwloc NUMA node set - * - * \p mask is a array of unsigned long that will be read. - * \p maxnode contains the maximal node number that may be read in \p mask. - * - * This function may be used after calling get_mempolicy or any other function - * that takes an array of unsigned long as output parameter (and possibly - * a maximal node number as input parameter). - */ -static __hwloc_inline int -hwloc_nodeset_from_linux_libnuma_ulongs(hwloc_topology_t topology, hwloc_nodeset_t nodeset, - const unsigned long *mask, unsigned long maxnode) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - - if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) { - hwloc_obj_t node; - unsigned i; - hwloc_bitmap_zero(nodeset); - for(i=0; i<maxnode; i++) - if (mask[i/sizeof(*mask)/8] & (1UL << (i% (sizeof(*mask)*8)))) { - node = hwloc_get_obj_by_depth(topology, depth, i); - if (node) - hwloc_bitmap_set(nodeset, node->os_index); - } - } else { - /* if no numa, libnuma assumes we have a single node */ - if (mask[0] & 1) - hwloc_bitmap_fill(nodeset); - else - hwloc_bitmap_zero(nodeset); - } - - return 0; -} - -/** @} */ - - - -/** \defgroup hwlocality_linux_libnuma_bitmask Helpers for manipulating Linux libnuma bitmask - * @{ - */ - - -/** \brief Convert hwloc CPU set \p cpuset into the returned libnuma bitmask - * - * The returned bitmask should later be freed with numa_bitmask_free. - * - * This function may be used before calling many numa_ functions - * that use a struct bitmask as an input parameter. - * - * \return newly allocated struct bitmask. - */ -static __hwloc_inline struct bitmask * __hwloc_attribute_malloc -hwloc_cpuset_to_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - struct bitmask *bitmask = numa_allocate_cpumask(); - if (!bitmask) - return NULL; - - if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) { - hwloc_obj_t node = NULL; - while ((node = hwloc_get_next_obj_covering_cpuset_by_type(topology, cpuset, HWLOC_OBJ_NODE, node)) != NULL) - numa_bitmask_setbit(bitmask, node->os_index); - } else { - /* if no numa, libnuma assumes we have a single node */ - if (!hwloc_bitmap_iszero(cpuset)) - numa_bitmask_setbit(bitmask, 0); - } - - return bitmask; -} - -/** \brief Convert hwloc NUMA node set \p nodeset into the returned libnuma bitmask - * - * The returned bitmask should later be freed with numa_bitmask_free. - * - * This function may be used before calling many numa_ functions - * that use a struct bitmask as an input parameter. - * - * \return newly allocated struct bitmask. - */ -static __hwloc_inline struct bitmask * __hwloc_attribute_malloc -hwloc_nodeset_to_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - struct bitmask *bitmask = numa_allocate_cpumask(); - if (!bitmask) - return NULL; - - if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) { - hwloc_obj_t node = NULL; - while ((node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NODE, node)) != NULL) - if (hwloc_bitmap_isset(nodeset, node->os_index)) - numa_bitmask_setbit(bitmask, node->os_index); - } else { - /* if no numa, libnuma assumes we have a single node */ - if (!hwloc_bitmap_iszero(nodeset)) - numa_bitmask_setbit(bitmask, 0); - } - - return bitmask; -} - -/** \brief Convert libnuma bitmask \p bitmask into hwloc CPU set \p cpuset - * - * This function may be used after calling many numa_ functions - * that use a struct bitmask as an output parameter. - */ -static __hwloc_inline int -hwloc_cpuset_from_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_cpuset_t cpuset, - const struct bitmask *bitmask) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - - if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) { - hwloc_obj_t node; - int i; - hwloc_bitmap_zero(cpuset); - for(i=0; i<NUMA_NUM_NODES; i++) - if (numa_bitmask_isbitset(bitmask, i)) { - node = hwloc_get_obj_by_depth(topology, depth, i); - if (node) - hwloc_bitmap_or(cpuset, cpuset, node->cpuset); - } - } else { - /* if no numa, libnuma assumes we have a single node */ - if (numa_bitmask_isbitset(bitmask, 0)) - hwloc_bitmap_copy(cpuset, hwloc_topology_get_complete_cpuset(topology)); - else - hwloc_bitmap_zero(cpuset); - } - - return 0; -} - -/** \brief Convert libnuma bitmask \p bitmask into hwloc NUMA node set \p nodeset - * - * This function may be used after calling many numa_ functions - * that use a struct bitmask as an output parameter. - */ -static __hwloc_inline int -hwloc_nodeset_from_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_nodeset_t nodeset, - const struct bitmask *bitmask) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - - if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) { - hwloc_obj_t node; - int i; - hwloc_bitmap_zero(nodeset); - for(i=0; i<NUMA_NUM_NODES; i++) - if (numa_bitmask_isbitset(bitmask, i)) { - node = hwloc_get_obj_by_depth(topology, depth, i); - if (node) - hwloc_bitmap_set(nodeset, node->os_index); - } - } else { - /* if no numa, libnuma assumes we have a single node */ - if (numa_bitmask_isbitset(bitmask, 0)) - hwloc_bitmap_fill(nodeset); - else - hwloc_bitmap_zero(nodeset); - } - - return 0; -} - -/** @} */ - - - -#ifdef NUMA_VERSION1_COMPATIBILITY -/** \defgroup hwlocality_linux_libnuma_nodemask Helpers for manipulating Linux libnuma nodemask_t - * @{ - */ - - -/** \brief Convert hwloc CPU set \p cpuset into libnuma nodemask \p nodemask - * - * This function may be used before calling some old libnuma functions - * that use a nodemask_t as an input parameter. - */ -static __hwloc_inline int -hwloc_cpuset_to_linux_libnuma_nodemask(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset, - nodemask_t *nodemask) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - - nodemask_zero(nodemask); - - if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) { - hwloc_obj_t node = NULL; - while ((node = hwloc_get_next_obj_covering_cpuset_by_type(topology, cpuset, HWLOC_OBJ_NODE, node)) != NULL) - nodemask_set(nodemask, node->os_index); - } else { - /* if no numa, libnuma assumes we have a single node */ - if (!hwloc_bitmap_iszero(cpuset)) - nodemask_set(nodemask, 0); - } - - return 0; -} - -/** \brief Convert hwloc NUMA node set \p nodeset into libnuma nodemask \p nodemask - * - * This function may be used before calling some old libnuma functions - * that use a nodemask_t as an input parameter. - */ -static __hwloc_inline int -hwloc_nodeset_to_linux_libnuma_nodemask(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, - nodemask_t *nodemask) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - - nodemask_zero(nodemask); - - if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) { - hwloc_obj_t node = NULL; - while ((node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NODE, node)) != NULL) - if (hwloc_bitmap_isset(nodeset, node->os_index)) - nodemask_set(nodemask, node->os_index); - } else { - /* if no numa, libnuma assumes we have a single node */ - if (!hwloc_bitmap_iszero(nodeset)) - nodemask_set(nodemask, 0); - } - - return 0; -} - -/** \brief Convert libnuma nodemask \p nodemask into hwloc CPU set \p cpuset - * - * This function may be used before calling some old libnuma functions - * that use a nodemask_t as an output parameter. - */ -static __hwloc_inline int -hwloc_cpuset_from_linux_libnuma_nodemask(hwloc_topology_t topology, hwloc_cpuset_t cpuset, - const nodemask_t *nodemask) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - - if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) { - hwloc_obj_t node; - int i; - hwloc_bitmap_zero(cpuset); - for(i=0; i<NUMA_NUM_NODES; i++) - if (nodemask_isset(nodemask, i)) { - node = hwloc_get_obj_by_depth(topology, depth, i); - if (node) - hwloc_bitmap_or(cpuset, cpuset, node->cpuset); - } - } else { - /* if no numa, libnuma assumes we have a single node */ - if (nodemask_isset(nodemask, 0)) - hwloc_bitmap_copy(cpuset, hwloc_topology_get_complete_cpuset(topology)); - else - hwloc_bitmap_zero(cpuset); - } - - return 0; -} - -/** \brief Convert libnuma nodemask \p nodemask into hwloc NUMA node set \p nodeset - * - * This function may be used before calling some old libnuma functions - * that use a nodemask_t as an output parameter. - */ -static __hwloc_inline int -hwloc_nodeset_from_linux_libnuma_nodemask(hwloc_topology_t topology, hwloc_nodeset_t nodeset, - const nodemask_t *nodemask) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - - if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) { - hwloc_obj_t node; - int i; - hwloc_bitmap_zero(nodeset); - for(i=0; i<NUMA_NUM_NODES; i++) - if (nodemask_isset(nodemask, i)) { - node = hwloc_get_obj_by_depth(topology, depth, i); - if (node) - hwloc_bitmap_set(nodeset, node->os_index); - } - } else { - /* if no numa, libnuma assumes we have a single node */ - if (nodemask_isset(nodemask, 0)) - hwloc_bitmap_fill(nodeset); - else - hwloc_bitmap_zero(nodeset); - } - - return 0; -} - -/** @} */ -#endif /* NUMA_VERSION1_COMPATIBILITY */ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - - -#endif /* HWLOC_LINUX_NUMA_H */ diff --git a/hwloc-1.2.1/include/hwloc/linux.h b/hwloc-1.2.1/include/hwloc/linux.h deleted file mode 100644 index b48d901c..00000000 --- a/hwloc-1.2.1/include/hwloc/linux.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2010 INRIA. All rights reserved. - * Copyright © 2009-2011 Université Bordeaux 1 - * See COPYING in top-level directory. - */ - -/** \file - * \brief Macros to help interaction between hwloc and Linux. - * - * Applications that use hwloc on Linux may want to include this file - * if using some low-level Linux features. - */ - -#ifndef HWLOC_LINUX_H -#define HWLOC_LINUX_H - -#include <hwloc.h> -#include <stdio.h> - - -#ifdef __cplusplus -extern "C" { -#endif - - -/** \defgroup hwlocality_linux Linux-only helpers - * - * This includes helpers for manipulating linux kernel cpumap files, and hwloc - * equivalents of the Linux sched_setaffinity and sched_getaffinity system calls. - * - * @{ - */ - -/** \brief Convert a linux kernel cpumap file \p file into hwloc CPU set. - * - * Might be used when reading CPU set from sysfs attributes such as topology - * and caches for processors, or local_cpus for devices. - */ -HWLOC_DECLSPEC int hwloc_linux_parse_cpumap_file(FILE *file, hwloc_cpuset_t set); - -/** \brief Bind a thread \p tid on cpus given in cpuset \p set - * - * The behavior is exactly the same as the Linux sched_setaffinity system call, - * but uses a hwloc cpuset. - */ -HWLOC_DECLSPEC int hwloc_linux_set_tid_cpubind(hwloc_topology_t topology, pid_t tid, hwloc_const_cpuset_t set); - -/** \brief Get the current binding of thread \p tid - * - * The behavior is exactly the same as the Linux sched_getaffinity system call, - * but uses a hwloc cpuset. - */ -HWLOC_DECLSPEC int hwloc_linux_get_tid_cpubind(hwloc_topology_t topology, pid_t tid, hwloc_cpuset_t set); - -/** @} */ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - - -#endif /* HWLOC_GLIBC_SCHED_H */ diff --git a/hwloc-1.2.1/include/hwloc/myriexpress.h b/hwloc-1.2.1/include/hwloc/myriexpress.h deleted file mode 100644 index 49c00a3b..00000000 --- a/hwloc-1.2.1/include/hwloc/myriexpress.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright © 2010 INRIA. All rights reserved. - * Copyright © 2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/** \file - * \brief Macros to help interaction between hwloc and Myrinet Express. - * - * Applications that use both hwloc and Myrinet Express verbs may want to - * include this file so as to get topology information for Myrinet hardware. - * - */ - -#ifndef HWLOC_MYRIEXPRESS_H -#define HWLOC_MYRIEXPRESS_H - -#include <hwloc.h> -#include <hwloc/autogen/config.h> -#include <hwloc/linux.h> - -#include <myriexpress.h> - - -#ifdef __cplusplus -extern "C" { -#endif - - -/** \defgroup hwlocality_myriexpress Myrinet Express-Specific Functions - * @{ - */ - -/** \brief Get the CPU set of logical processors that are physically - * close the MX board \p id. - * - * For the given Myrinet Express board index \p id, read the - * OS-provided NUMA node and return the corresponding CPU set. - */ -static __hwloc_inline int -hwloc_mx_board_get_device_cpuset(hwloc_topology_t topology, - unsigned id, hwloc_cpuset_t set) -{ - uint32_t in, out; - - in = id; - if (mx_get_info(NULL, MX_NUMA_NODE, &in, sizeof(in), &out, sizeof(out)) != MX_SUCCESS) { - errno = EINVAL; - return -1; - } - - if (out != (uint32_t) -1) { - hwloc_obj_t obj = NULL; - while ((obj = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NODE, obj)) != NULL) - if (obj->os_index == out) { - hwloc_bitmap_copy(set, obj->cpuset); - goto out; - } - } - /* fallback to the full topology cpuset */ - hwloc_bitmap_copy(set, hwloc_topology_get_complete_cpuset(topology)); - - out: - return 0; -} - -/** \brief Get the CPU set of logical processors that are physically - * close to endpoint \p endpoint. - * - * For the given Myrinet Express endpoint \p endpoint, read the - * OS-provided NUMA node and return the corresponding CPU set. - */ -static __hwloc_inline int -hwloc_mx_endpoint_get_device_cpuset(hwloc_topology_t topology, - mx_endpoint_t endpoint, hwloc_cpuset_t set) -{ - uint64_t nid; - uint32_t nindex, eid; - mx_endpoint_addr_t eaddr; - - if (mx_get_endpoint_addr(endpoint, &eaddr) != MX_SUCCESS) { - errno = EINVAL; - return -1; - } - - if (mx_decompose_endpoint_addr(eaddr, &nid, &eid) != MX_SUCCESS) { - errno = EINVAL; - return -1; - } - - if (mx_nic_id_to_board_number(nid, &nindex) != MX_SUCCESS) { - errno = EINVAL; - return -1; - } - - return hwloc_mx_board_get_device_cpuset(topology, nindex, set); -} - -/** @} */ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - - -#endif /* HWLOC_MYRIEXPRESS_H */ diff --git a/hwloc-1.2.1/include/hwloc/openfabrics-verbs.h b/hwloc-1.2.1/include/hwloc/openfabrics-verbs.h deleted file mode 100644 index 197b40b8..00000000 --- a/hwloc-1.2.1/include/hwloc/openfabrics-verbs.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2010 INRIA. All rights reserved. - * Copyright © 2009-2010 Université Bordeaux 1 - * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/** \file - * \brief Macros to help interaction between hwloc and OpenFabrics - * verbs. - * - * Applications that use both hwloc and OpenFabrics verbs may want to - * include this file so as to get topology information for OpenFabrics - * hardware. - * - */ - -#ifndef HWLOC_OPENFABRICS_VERBS_H -#define HWLOC_OPENFABRICS_VERBS_H - -#include <hwloc.h> -#include <hwloc/autogen/config.h> -#include <hwloc/linux.h> - -#include <infiniband/verbs.h> - - -#ifdef __cplusplus -extern "C" { -#endif - - -/** \defgroup hwlocality_openfabrics OpenFabrics-Specific Functions - * @{ - */ - -/** \brief Get the CPU set of logical processors that are physically - * close to device \p ibdev. - * - * For the given OpenFabrics device \p ibdev, read the corresponding - * kernel-provided cpumap file and return the corresponding CPU set. - * This function is currently only implemented in a meaningful way for - * Linux; other systems will simply get a full cpuset. - */ -static __hwloc_inline int -hwloc_ibv_get_device_cpuset(hwloc_topology_t topology __hwloc_attribute_unused, - struct ibv_device *ibdev, hwloc_cpuset_t set) -{ -#ifdef HWLOC_LINUX_SYS - /* If we're on Linux, use the verbs-provided sysfs mechanism to - get the local cpus */ -#define HWLOC_OPENFABRICS_VERBS_SYSFS_PATH_MAX 128 - char path[HWLOC_OPENFABRICS_VERBS_SYSFS_PATH_MAX]; - FILE *sysfile = NULL; - - sprintf(path, "/sys/class/infiniband/%s/device/local_cpus", - ibv_get_device_name(ibdev)); - sysfile = fopen(path, "r"); - if (!sysfile) - return -1; - - hwloc_linux_parse_cpumap_file(sysfile, set); - - fclose(sysfile); -#else - /* Non-Linux systems simply get a full cpuset */ - hwloc_bitmap_copy(set, hwloc_topology_get_complete_cpuset(topology)); -#endif - return 0; -} - -/** @} */ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - - -#endif /* HWLOC_OPENFABRICS_VERBS_H */ diff --git a/hwloc-1.2.1/include/hwloc/rename.h b/hwloc-1.2.1/include/hwloc/rename.h deleted file mode 100644 index 80ed2c96..00000000 --- a/hwloc-1.2.1/include/hwloc/rename.h +++ /dev/null @@ -1,513 +0,0 @@ -/* - * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - * Copyright © 2010-2011 INRIA. All rights reserved. - * See COPYING in top-level directory. - */ - -#ifndef HWLOC_RENAME_H -#define HWLOC_RENAME_H - -#include <hwloc/autogen/config.h> - - -#ifdef __cplusplus -extern "C" { -#endif - - -/* Only enact these defines if we're actually renaming the symbols - (i.e., avoid trying to have no-op defines if we're *not* - renaming). */ - -#if HWLOC_SYM_TRANSFORM - -/* Use a preprocessor two-step in order to get the prefixing right. - Make 2 macros: HWLOC_NAME and HWLOC_NAME_CAPS for renaming - things. */ - -#define HWLOC_MUNGE_NAME(a, b) HWLOC_MUNGE_NAME2(a, b) -#define HWLOC_MUNGE_NAME2(a, b) a ## b -#define HWLOC_NAME(name) HWLOC_MUNGE_NAME(HWLOC_SYM_PREFIX, hwloc_ ## name) -#define HWLOC_NAME_CAPS(name) HWLOC_MUNGE_NAME(HWLOC_SYM_PREFIX_CAPS, hwloc_ ## name) - -/* Now define all the "real" names to be the prefixed names. This - allows us to use the real names throughout the code base (i.e., - "hwloc_<foo>"); the preprocessor will adjust to have the prefixed - name under the covers. */ - -/* Names from hwloc.h */ - -#define hwloc_get_api_version HWLOC_NAME(get_api_version) - -#define hwloc_topology HWLOC_NAME(topology) -#define hwloc_topology_t HWLOC_NAME(topology_t) - -#define hwloc_cpuset_t HWLOC_NAME(cpuset_t) -#define hwloc_const_cpuset_t HWLOC_NAME(const_cpuset_t) -#define hwloc_nodeset_t HWLOC_NAME(nodeset_t) -#define hwloc_const_nodeset_t HWLOC_NAME(const_nodeset_t) - -#define HWLOC_OBJ_SYSTEM HWLOC_NAME_CAPS(OBJ_SYSTEM) -#define HWLOC_OBJ_MACHINE HWLOC_NAME_CAPS(OBJ_MACHINE) -#define HWLOC_OBJ_NODE HWLOC_NAME_CAPS(OBJ_NODE) -#define HWLOC_OBJ_SOCKET HWLOC_NAME_CAPS(OBJ_SOCKET) -#define HWLOC_OBJ_CACHE HWLOC_NAME_CAPS(OBJ_CACHE) -#define HWLOC_OBJ_CORE HWLOC_NAME_CAPS(OBJ_CORE) -#define HWLOC_OBJ_PU HWLOC_NAME_CAPS(OBJ_PU) -#define HWLOC_OBJ_MISC HWLOC_NAME_CAPS(OBJ_MISC) -#define HWLOC_OBJ_GROUP HWLOC_NAME_CAPS(OBJ_GROUP) -#define HWLOC_OBJ_TYPE_MAX HWLOC_NAME_CAPS(OBJ_TYPE_MAX) - -#define hwloc_obj_type_t HWLOC_NAME(obj_type_t) - -#define hwloc_compare_types HWLOC_NAME(compare_types) - -#define hwloc_compare_types_e HWLOC_NAME(compare_types_e) -#define HWLOC_TYPE_UNORDERED HWLOC_NAME_CAPS(TYPE_UNORDERED) - -#define hwloc_obj_memory_s HWLOC_NAME(obj_memory_s) -#define hwloc_obj_memory_page_type_s HWLOC_NAME(obj_memory_page_type_s) - -#define hwloc_obj HWLOC_NAME(obj) -#define hwloc_obj_t HWLOC_NAME(obj_t) - -#define hwloc_distances_s HWLOC_NAME(distances_s) -#define hwloc_obj_info_s HWLOC_NAME(obj_info_s) - -#define hwloc_obj_attr_u HWLOC_NAME(obj_attr_u) -#define hwloc_cache_attr_s HWLOC_NAME(cache_attr_s) -#define hwloc_group_attr_s HWLOC_NAME(group_attr_s) - -#define hwloc_topology_init HWLOC_NAME(topology_init) -#define hwloc_topology_load HWLOC_NAME(topology_load) -#define hwloc_topology_destroy HWLOC_NAME(topology_destroy) -#define hwloc_topology_check HWLOC_NAME(topology_check) -#define hwloc_topology_ignore_type HWLOC_NAME(topology_ignore_type) -#define hwloc_topology_ignore_type_keep_structure HWLOC_NAME(topology_ignore_type_keep_structure) -#define hwloc_topology_ignore_all_keep_structure HWLOC_NAME(topology_ignore_all_keep_structure) - -#define hwloc_topology_flags_e HWLOC_NAME(topology_flags_e) - -#define HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM HWLOC_NAME_CAPS(TOPOLOGY_FLAG_WHOLE_SYSTEM) -#define HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM HWLOC_NAME_CAPS(TOPOLOGY_FLAG_IS_THISSYSTEM) - -#define hwloc_topology_set_flags HWLOC_NAME(topology_set_flags) -#define hwloc_topology_set_fsroot HWLOC_NAME(topology_set_fsroot) -#define hwloc_topology_set_pid HWLOC_NAME(topology_set_pid) -#define hwloc_topology_set_synthetic HWLOC_NAME(topology_set_synthetic) -#define hwloc_topology_set_xml HWLOC_NAME(topology_set_xml) -#define hwloc_topology_set_xmlbuffer HWLOC_NAME(topology_set_xmlbuffer) -#define hwloc_topology_set_distance_matrix HWLOC_NAME(topology_set_distance_matrix) - -#define hwloc_topology_discovery_support HWLOC_NAME(topology_discovery_support) -#define hwloc_topology_cpubind_support HWLOC_NAME(topology_cpubind_support) -#define hwloc_topology_membind_support HWLOC_NAME(topology_membind_support) -#define hwloc_topology_support HWLOC_NAME(topology_support) -#define hwloc_topology_get_support HWLOC_NAME(topology_get_support) -#define hwloc_topology_export_xml HWLOC_NAME(topology_export_xml) -#define hwloc_topology_export_xmlbuffer HWLOC_NAME(topology_export_xmlbuffer) - -#define hwloc_topology_insert_misc_object_by_cpuset HWLOC_NAME(topology_insert_misc_object_by_cpuset) -#define hwloc_topology_insert_misc_object_by_parent HWLOC_NAME(topology_insert_misc_object_by_parent) - -#define hwloc_restrict_flags_e HWLOC_NAME(restrict_flags_e) -#define HWLOC_RESTRICT_FLAG_ADAPT_DISTANCES HWLOC_NAME_CAPS(RESTRICT_FLAG_ADAPT_DISTANCES) -#define HWLOC_RESTRICT_FLAG_ADAPT_MISC HWLOC_NAME_CAPS(RESTRICT_FLAG_ADAPT_MISC) -#define hwloc_topology_restrict HWLOC_NAME(topology_restrict) - -#define hwloc_topology_get_depth HWLOC_NAME(topology_get_depth) -#define hwloc_get_type_depth HWLOC_NAME(get_type_depth) - -#define hwloc_get_type_depth_e HWLOC_NAME(get_type_depth_e) -#define HWLOC_TYPE_DEPTH_UNKNOWN HWLOC_NAME_CAPS(TYPE_DEPTH_UNKNOWN) -#define HWLOC_TYPE_DEPTH_MULTIPLE HWLOC_NAME_CAPS(TYPE_DEPTH_MULTIPLE) - -#define hwloc_get_depth_type HWLOC_NAME(get_depth_type) -#define hwloc_get_nbobjs_by_depth HWLOC_NAME(get_nbobjs_by_depth) -#define hwloc_get_nbobjs_by_type HWLOC_NAME(get_nbobjs_by_type) - -#define hwloc_topology_is_thissystem HWLOC_NAME(topology_is_thissystem) - -#define hwloc_get_obj_by_depth HWLOC_NAME(get_obj_by_depth ) -#define hwloc_get_obj_by_type HWLOC_NAME(get_obj_by_type ) - -#define hwloc_obj_type_string HWLOC_NAME(obj_type_string ) -#define hwloc_obj_type_of_string HWLOC_NAME(obj_type_of_string ) -#define hwloc_obj_type_snprintf HWLOC_NAME(obj_type_snprintf ) -#define hwloc_obj_attr_snprintf HWLOC_NAME(obj_attr_snprintf ) -#define hwloc_obj_snprintf HWLOC_NAME(obj_snprintf) -#define hwloc_obj_cpuset_snprintf HWLOC_NAME(obj_cpuset_snprintf) -#define hwloc_obj_get_info_by_name HWLOC_NAME(obj_get_info_by_name) - -#define HWLOC_CPUBIND_PROCESS HWLOC_NAME_CAPS(CPUBIND_PROCESS) -#define HWLOC_CPUBIND_THREAD HWLOC_NAME_CAPS(CPUBIND_THREAD) -#define HWLOC_CPUBIND_STRICT HWLOC_NAME_CAPS(CPUBIND_STRICT) -#define HWLOC_CPUBIND_NOMEMBIND HWLOC_NAME_CAPS(CPUBIND_NOMEMBIND) - -#define hwloc_cpubind_flags_t HWLOC_NAME(cpubind_flags_t) - -#define hwloc_set_cpubind HWLOC_NAME(set_cpubind) -#define hwloc_get_cpubind HWLOC_NAME(get_cpubind) -#define hwloc_set_proc_cpubind HWLOC_NAME(set_proc_cpubind) -#define hwloc_get_proc_cpubind HWLOC_NAME(get_proc_cpubind) -#define hwloc_set_thread_cpubind HWLOC_NAME(set_thread_cpubind) -#define hwloc_get_thread_cpubind HWLOC_NAME(get_thread_cpubind) - -#define hwloc_get_last_cpu_location HWLOC_NAME(get_last_cpu_location) -#define hwloc_get_proc_last_cpu_location HWLOC_NAME(get_proc_last_cpu_location) - -#define HWLOC_MEMBIND_DEFAULT HWLOC_NAME_CAPS(MEMBIND_DEFAULT) -#define HWLOC_MEMBIND_FIRSTTOUCH HWLOC_NAME_CAPS(MEMBIND_FIRSTTOUCH) -#define HWLOC_MEMBIND_BIND HWLOC_NAME_CAPS(MEMBIND_BIND) -#define HWLOC_MEMBIND_INTERLEAVE HWLOC_NAME_CAPS(MEMBIND_INTERLEAVE) -#define HWLOC_MEMBIND_REPLICATE HWLOC_NAME_CAPS(MEMBIND_REPLICATE) -#define HWLOC_MEMBIND_NEXTTOUCH HWLOC_NAME_CAPS(MEMBIND_NEXTTOUCH) -#define HWLOC_MEMBIND_MIXED HWLOC_NAME_CAPS(MEMBIND_MIXED) - -#define hwloc_membind_policy_t HWLOC_NAME(membind_policy_t) - -#define HWLOC_MEMBIND_PROCESS HWLOC_NAME_CAPS(MEMBIND_PROCESS) -#define HWLOC_MEMBIND_THREAD HWLOC_NAME_CAPS(MEMBIND_THREAD) -#define HWLOC_MEMBIND_STRICT HWLOC_NAME_CAPS(MEMBIND_STRICT) -#define HWLOC_MEMBIND_MIGRATE HWLOC_NAME_CAPS(MEMBIND_MIGRATE) -#define HWLOC_MEMBIND_NOCPUBIND HWLOC_NAME_CAPS(MEMBIND_NOCPUBIND) - -#define hwloc_membind_flags_t HWLOC_NAME(membind_flags_t) - -#define hwloc_set_membind_nodeset HWLOC_NAME(set_membind_nodeset) -#define hwloc_set_membind HWLOC_NAME(set_membind) -#define hwloc_get_membind_nodeset HWLOC_NAME(get_membind_nodeset) -#define hwloc_get_membind HWLOC_NAME(get_membind) -#define hwloc_set_proc_membind_nodeset HWLOC_NAME(set_proc_membind_nodeset) -#define hwloc_set_proc_membind HWLOC_NAME(set_proc_membind) -#define hwloc_get_proc_membind_nodeset HWLOC_NAME(get_proc_membind_nodeset) -#define hwloc_get_proc_membind HWLOC_NAME(get_proc_membind) -#define hwloc_set_area_membind_nodeset HWLOC_NAME(set_area_membind_nodeset) -#define hwloc_set_area_membind HWLOC_NAME(set_area_membind) -#define hwloc_get_area_membind_nodeset HWLOC_NAME(get_area_membind_nodeset) -#define hwloc_get_area_membind HWLOC_NAME(get_area_membind) -#define hwloc_alloc_membind_nodeset HWLOC_NAME(alloc_membind_nodeset) -#define hwloc_alloc_membind HWLOC_NAME(alloc_membind) -#define hwloc_alloc HWLOC_NAME(alloc) -#define hwloc_free HWLOC_NAME(free) - -/* hwloc/bitmap.h */ - -#define hwloc_bitmap HWLOC_NAME(bitmap) -#define hwloc_bitmap_s HWLOC_NAME(bitmap_s) -#define hwloc_bitmap_t HWLOC_NAME(bitmap_t) -#define hwloc_const_bitmap_t HWLOC_NAME(const_bitmap_t) - -#define hwloc_bitmap_alloc HWLOC_NAME(bitmap_alloc) -#define hwloc_bitmap_alloc_full HWLOC_NAME(bitmap_alloc_full) -#define hwloc_bitmap_free HWLOC_NAME(bitmap_free) -#define hwloc_bitmap_dup HWLOC_NAME(bitmap_dup) -#define hwloc_bitmap_copy HWLOC_NAME(bitmap_copy) -#define hwloc_bitmap_snprintf HWLOC_NAME(bitmap_snprintf) -#define hwloc_bitmap_asprintf HWLOC_NAME(bitmap_asprintf) -#define hwloc_bitmap_sscanf HWLOC_NAME(bitmap_sscanf) -#define hwloc_bitmap_list_snprintf HWLOC_NAME(bitmap_list_snprintf) -#define hwloc_bitmap_list_asprintf HWLOC_NAME(bitmap_list_asprintf) -#define hwloc_bitmap_list_sscanf HWLOC_NAME(bitmap_list_sscanf) -#define hwloc_bitmap_taskset_snprintf HWLOC_NAME(bitmap_taskset_snprintf) -#define hwloc_bitmap_taskset_asprintf HWLOC_NAME(bitmap_taskset_asprintf) -#define hwloc_bitmap_taskset_sscanf HWLOC_NAME(bitmap_taskset_sscanf) -#define hwloc_bitmap_zero HWLOC_NAME(bitmap_zero) -#define hwloc_bitmap_fill HWLOC_NAME(bitmap_fill) -#define hwloc_bitmap_from_ulong HWLOC_NAME(bitmap_from_ulong) - -#define hwloc_bitmap_from_ith_ulong HWLOC_NAME(bitmap_from_ith_ulong) -#define hwloc_bitmap_to_ulong HWLOC_NAME(bitmap_to_ulong) -#define hwloc_bitmap_to_ith_ulong HWLOC_NAME(bitmap_to_ith_ulong) -#define hwloc_bitmap_only HWLOC_NAME(bitmap_only) -#define hwloc_bitmap_allbut HWLOC_NAME(bitmap_allbut) -#define hwloc_bitmap_set HWLOC_NAME(bitmap_set) -#define hwloc_bitmap_set_range HWLOC_NAME(bitmap_set_range) -#define hwloc_bitmap_set_ith_ulong HWLOC_NAME(bitmap_set_ith_ulong) -#define hwloc_bitmap_clr HWLOC_NAME(bitmap_clr) -#define hwloc_bitmap_clr_range HWLOC_NAME(bitmap_clr_range) -#define hwloc_bitmap_isset HWLOC_NAME(bitmap_isset) -#define hwloc_bitmap_iszero HWLOC_NAME(bitmap_iszero) -#define hwloc_bitmap_isfull HWLOC_NAME(bitmap_isfull) -#define hwloc_bitmap_isequal HWLOC_NAME(bitmap_isequal) -#define hwloc_bitmap_intersects HWLOC_NAME(bitmap_intersects) -#define hwloc_bitmap_isincluded HWLOC_NAME(bitmap_isincluded) -#define hwloc_bitmap_or HWLOC_NAME(bitmap_or) -#define hwloc_bitmap_and HWLOC_NAME(bitmap_and) -#define hwloc_bitmap_andnot HWLOC_NAME(bitmap_andnot) -#define hwloc_bitmap_xor HWLOC_NAME(bitmap_xor) -#define hwloc_bitmap_not HWLOC_NAME(bitmap_not) -#define hwloc_bitmap_first HWLOC_NAME(bitmap_first) -#define hwloc_bitmap_last HWLOC_NAME(bitmap_last) -#define hwloc_bitmap_next HWLOC_NAME(bitmap_next) -#define hwloc_bitmap_singlify HWLOC_NAME(bitmap_singlify) -#define hwloc_bitmap_compare_first HWLOC_NAME(bitmap_compare_first) -#define hwloc_bitmap_compare HWLOC_NAME(bitmap_compare) -#define hwloc_bitmap_weight HWLOC_NAME(bitmap_weight) - -/* hwloc/cpuset.h -- deprecated but still available */ - -#define hwloc_cpuset HWLOC_NAME(cpuset) -#define hwloc_cpuset_s HWLOC_NAME(cpuset_s) -#define hwloc_cpuset_t HWLOC_NAME(cpuset_t) -#define hwloc_const_cpuset_t HWLOC_NAME(const_cpuset_t) - -#define hwloc_cpuset_alloc HWLOC_NAME(cpuset_alloc) -#define hwloc_cpuset_free HWLOC_NAME(cpuset_free) -#define hwloc_cpuset_dup HWLOC_NAME(cpuset_dup) -#define hwloc_cpuset_copy HWLOC_NAME(cpuset_copy) -#define hwloc_cpuset_snprintf HWLOC_NAME(cpuset_snprintf) -#define hwloc_cpuset_asprintf HWLOC_NAME(cpuset_asprintf) -#define hwloc_cpuset_from_string HWLOC_NAME(cpuset_from_string) -#define hwloc_cpuset_zero HWLOC_NAME(cpuset_zero) -#define hwloc_cpuset_fill HWLOC_NAME(cpuset_fill) -#define hwloc_cpuset_from_ulong HWLOC_NAME(cpuset_from_ulong) - -#define hwloc_cpuset_from_ith_ulong HWLOC_NAME(cpuset_from_ith_ulong) -#define hwloc_cpuset_to_ulong HWLOC_NAME(cpuset_to_ulong) -#define hwloc_cpuset_to_ith_ulong HWLOC_NAME(cpuset_to_ith_ulong) -#define hwloc_cpuset_cpu HWLOC_NAME(cpuset_cpu) -#define hwloc_cpuset_all_but_cpu HWLOC_NAME(cpuset_all_but_cpu) -#define hwloc_cpuset_set HWLOC_NAME(cpuset_set) -#define hwloc_cpuset_set_range HWLOC_NAME(cpuset_set_range) -#define hwloc_cpuset_set_ith_ulong HWLOC_NAME(cpuset_set_ith_ulong) -#define hwloc_cpuset_clr HWLOC_NAME(cpuset_clr) -#define hwloc_cpuset_clr_range HWLOC_NAME(cpuset_clr_range) -#define hwloc_cpuset_isset HWLOC_NAME(cpuset_isset) -#define hwloc_cpuset_iszero HWLOC_NAME(cpuset_iszero) -#define hwloc_cpuset_isfull HWLOC_NAME(cpuset_isfull) -#define hwloc_cpuset_isequal HWLOC_NAME(cpuset_isequal) -#define hwloc_cpuset_intersects HWLOC_NAME(cpuset_intersects) -#define hwloc_cpuset_isincluded HWLOC_NAME(cpuset_isincluded) -#define hwloc_cpuset_or HWLOC_NAME(cpuset_or) -#define hwloc_cpuset_and HWLOC_NAME(cpuset_and) -#define hwloc_cpuset_andnot HWLOC_NAME(cpuset_andnot) -#define hwloc_cpuset_xor HWLOC_NAME(cpuset_xor) -#define hwloc_cpuset_not HWLOC_NAME(cpuset_not) -#define hwloc_cpuset_first HWLOC_NAME(cpuset_first) -#define hwloc_cpuset_last HWLOC_NAME(cpuset_last) -#define hwloc_cpuset_next HWLOC_NAME(cpuset_next) -#define hwloc_cpuset_singlify HWLOC_NAME(cpuset_singlify) -#define hwloc_cpuset_compare_first HWLOC_NAME(cpuset_compare_first) -#define hwloc_cpuset_compare HWLOC_NAME(cpuset_compare) -#define hwloc_cpuset_weight HWLOC_NAME(cpuset_weight) - -/* hwloc/helper.h */ - -#define hwloc_get_type_or_below_depth HWLOC_NAME(get_type_or_below_depth) -#define hwloc_get_type_or_above_depth HWLOC_NAME(get_type_or_above_depth) -#define hwloc_get_root_obj HWLOC_NAME(get_root_obj) -#define hwloc_get_system_obj HWLOC_NAME(get_system_obj) -#define hwloc_get_ancestor_obj_by_depth HWLOC_NAME(get_ancestor_obj_by_depth) -#define hwloc_get_ancestor_obj_by_type HWLOC_NAME(get_ancestor_obj_by_type) -#define hwloc_get_next_obj_by_depth HWLOC_NAME(get_next_obj_by_depth) -#define hwloc_get_next_obj_by_type HWLOC_NAME(get_next_obj_by_type) -#define hwloc_get_pu_obj_by_os_index HWLOC_NAME(get_pu_obj_by_os_index) -#define hwloc_get_next_child HWLOC_NAME(get_next_child) -#define hwloc_get_common_ancestor_obj HWLOC_NAME(get_common_ancestor_obj) -#define hwloc_obj_is_in_subtree HWLOC_NAME(obj_is_in_subtree) -#define hwloc_get_first_largest_obj_inside_cpuset HWLOC_NAME(get_first_largest_obj_inside_cpuset) -#define hwloc_get_largest_objs_inside_cpuset HWLOC_NAME(get_largest_objs_inside_cpuset) -#define hwloc_get_next_obj_inside_cpuset_by_depth HWLOC_NAME(get_next_obj_inside_cpuset_by_depth) -#define hwloc_get_next_obj_inside_cpuset_by_type HWLOC_NAME(get_next_obj_inside_cpuset_by_type) -#define hwloc_get_obj_inside_cpuset_by_depth HWLOC_NAME(get_obj_inside_cpuset_by_depth) -#define hwloc_get_obj_inside_cpuset_by_type HWLOC_NAME(get_obj_inside_cpuset_by_type) -#define hwloc_get_nbobjs_inside_cpuset_by_depth HWLOC_NAME(get_nbobjs_inside_cpuset_by_depth) -#define hwloc_get_nbobjs_inside_cpuset_by_type HWLOC_NAME(get_nbobjs_inside_cpuset_by_type) -#define hwloc_get_child_covering_cpuset HWLOC_NAME(get_child_covering_cpuset) -#define hwloc_get_obj_covering_cpuset HWLOC_NAME(get_obj_covering_cpuset) -#define hwloc_get_next_obj_covering_cpuset_by_depth HWLOC_NAME(get_next_obj_covering_cpuset_by_depth) -#define hwloc_get_next_obj_covering_cpuset_by_type HWLOC_NAME(get_next_obj_covering_cpuset_by_type) -#define hwloc_get_cache_covering_cpuset HWLOC_NAME(get_cache_covering_cpuset) -#define hwloc_get_shared_cache_covering_obj HWLOC_NAME(get_shared_cache_covering_obj) -#define hwloc_get_closest_objs HWLOC_NAME(get_closest_objs) -#define hwloc_get_obj_below_by_type HWLOC_NAME(get_obj_below_by_type) -#define hwloc_get_obj_below_array_by_type HWLOC_NAME(get_obj_below_array_by_type) -#define hwloc_distributev HWLOC_NAME(distributev) -#define hwloc_distribute HWLOC_NAME(distribute) -#define hwloc_alloc_membind_policy HWLOC_NAME(alloc_membind_policy) -#define hwloc_alloc_membind_policy_nodeset HWLOC_NAME(alloc_membind_policy_nodeset) -#define hwloc_topology_get_complete_cpuset HWLOC_NAME(topology_get_complete_cpuset) -#define hwloc_topology_get_topology_cpuset HWLOC_NAME(topology_get_topology_cpuset) -#define hwloc_topology_get_online_cpuset HWLOC_NAME(topology_get_online_cpuset) -#define hwloc_topology_get_allowed_cpuset HWLOC_NAME(topology_get_allowed_cpuset) -#define hwloc_topology_get_complete_nodeset HWLOC_NAME(topology_get_complete_nodeset) -#define hwloc_topology_get_topology_nodeset HWLOC_NAME(topology_get_topology_nodeset) -#define hwloc_topology_get_allowed_nodeset HWLOC_NAME(topology_get_allowed_nodeset) -#define hwloc_cpuset_to_nodeset HWLOC_NAME(cpuset_to_nodeset) -#define hwloc_cpuset_to_nodeset_strict HWLOC_NAME(cpuset_to_nodeset_strict) -#define hwloc_cpuset_from_nodeset HWLOC_NAME(cpuset_from_nodeset) -#define hwloc_cpuset_from_nodeset_strict HWLOC_NAME(cpuset_from_nodeset_strict) -#define hwloc_get_whole_distance_matrix_by_depth HWLOC_NAME(get_whole_distance_matrix_by_depth) -#define hwloc_get_whole_distance_matrix_by_type HWLOC_NAME(get_whole_distance_matrix_by_type) -#define hwloc_get_distance_matrix_covering_obj_by_depth HWLOC_NAME(get_distance_matrix_covering_obj_by_depth) -#define hwloc_get_latency HWLOC_NAME(get_latency) - -/* glibc-sched.h */ - -#define hwloc_cpuset_to_glibc_sched_affinity HWLOC_NAME(cpuset_to_glibc_sched_affinity) -#define hwloc_cpuset_from_glibc_sched_affinity HWLOC_NAME(cpuset_from_glibc_sched_affinity) - -/* linux-libnuma.h */ - -#define hwloc_cpuset_to_linux_libnuma_ulongs HWLOC_NAME(cpuset_to_linux_libnuma_ulongs) -#define hwloc_nodeset_to_linux_libnuma_ulongs HWLOC_NAME(nodeset_to_linux_libnuma_ulongs) -#define hwloc_cpuset_from_linux_libnuma_ulongs HWLOC_NAME(cpuset_from_linux_libnuma_ulongs) -#define hwloc_nodeset_from_linux_libnuma_ulongs HWLOC_NAME(nodeset_from_linux_libnuma_ulongs) -#define hwloc_cpuset_to_linux_libnuma_bitmask HWLOC_NAME(cpuset_to_linux_libnuma_bitmask) -#define hwloc_nodeset_to_linux_libnuma_bitmask HWLOC_NAME(nodeset_to_linux_libnuma_bitmask) -#define hwloc_cpuset_from_linux_libnuma_bitmask HWLOC_NAME(cpuset_from_linux_libnuma_bitmask) -#define hwloc_nodeset_from_linux_libnuma_bitmask HWLOC_NAME(nodeset_from_linux_libnuma_bitmask) -#define hwloc_cpuset_to_linux_libnuma_nodemask HWLOC_NAME(cpuset_to_linux_libnuma_nodemask) -#define hwloc_nodeset_to_linux_libnuma_nodemask HWLOC_NAME(nodeset_to_linux_libnuma_nodemask) -#define hwloc_cpuset_from_linux_libnuma_nodemask HWLOC_NAME(cpuset_from_linux_libnuma_nodemask) -#define hwloc_nodeset_from_linux_libnuma_nodemask HWLOC_NAME(nodeset_from_linux_libnuma_nodemask) - -/* linux.h */ - -#define hwloc_linux_parse_cpumap_file HWLOC_NAME(linux_parse_cpumap_file) -#define hwloc_linux_set_tid_cpubind HWLOC_NAME(linux_set_tid_cpubind) -#define hwloc_linux_get_tid_cpubind HWLOC_NAME(linux_get_tid_cpubind) - -/* openfabrics-verbs.h */ - -#define hwloc_ibv_get_device_cpuset HWLOC_NAME(ibv_get_device_cpuset) - -/* myriexpress.h */ - -#define hwloc_mx_board_get_device_cpuset HWLOC_NAME(mx_board_get_device_cpuset) -#define hwloc_mx_endpoint_get_device_cpuset HWLOC_NAME(mx_endpoint_get_device_cpuset) - -/* cuda.h */ - -#define hwloc_cuda_get_device_cpuset HWLOC_NAME(cuda_get_device_cpuset) - -/* cudart.h */ - -#define hwloc_cudart_get_device_cpuset HWLOC_NAME(cudart_get_device_cpuset) - -/* private/debug.h */ - -#define hwloc_debug HWLOC_NAME(debug) - -/* private/misc.h */ - -#define hwloc_snprintf HWLOC_NAME(snprintf) -#define hwloc_namecoloncmp HWLOC_NAME(namecoloncmp) -/* FIXME: hwloc_ffsl may be a macro, but it may not be defined yet */ -#define hwloc_ffs32 HWLOC_NAME(ffs32) -/* FIXME: hwloc_flsl may be a macro, but it may not be defined yet */ -#define hwloc_fls32 HWLOC_NAME(fls32) -#define hwloc_weight_long HWLOC_NAME(weight_long) - -/* private/cpuid.h */ - -#define hwloc_have_cpuid HWLOC_NAME(have_cpuid) -#define hwloc_cpuid HWLOC_NAME(cpuid) - -/* private/private.h */ - -#define hwloc_ignore_type_e HWLOC_NAME(ignore_type_e) - -#define HWLOC_IGNORE_TYPE_NEVER HWLOC_NAME_CAPS(IGNORE_TYPE_NEVER) -#define HWLOC_IGNORE_TYPE_KEEP_STRUCTURE HWLOC_NAME_CAPS(IGNORE_TYPE_KEEP_STRUCTURE) -#define HWLOC_IGNORE_TYPE_ALWAYS HWLOC_NAME_CAPS(IGNORE_TYPE_ALWAYS) - -#define hwloc_os_distances_s HWLOC_NAME(os_distances_s) -#define hwloc_backend_e HWLOC_NAME(backend_e) -#define hwloc_backend_t HWLOC_NAME(backend_t) - -#define HWLOC_BACKEND_NONE HWLOC_NAME_CAPS(BACKEND_NONE) -#define HWLOC_BACKEND_SYNTHETIC HWLOC_NAME_CAPS(BACKEND_SYNTHETIC) -#define HWLOC_BACKEND_SYSFS HWLOC_NAME_CAPS(BACKEND_SYSFS) -#define HWLOC_BACKEND_XML HWLOC_NAME_CAPS(BACKEND_XML) -#define HWLOC_BACKEND_MAX HWLOC_NAME_CAPS(BACKEND_MAX) - -#define hwloc_backend_params_u HWLOC_NAME(backend_params_u) -#define hwloc_backend_params_sysfs_s HWLOC_NAME(backend_params_sysfs_s) -#define hwloc_backend_params_osf HWLOC_NAME(backend_params_osf) -#define hwloc_backend_params_xml_s HWLOC_NAME(backend_params_xml_s) -#define hwloc_backend_params_synthetic_s HWLOC_NAME(backend_params_synthetic_s) - -#define hwloc_setup_pu_level HWLOC_NAME(setup_pu_level) -#define hwloc_setup_misc_level_from_distances HWLOC_NAME(setup_misc_level_from_distances) -#define hwloc_get_sysctlbyname HWLOC_NAME(get_sysctlbyname) -#define hwloc_get_sysctl HWLOC_NAME(get_sysctl) -#define hwloc_fallback_nbprocessors HWLOC_NAME(fallback_nbprocessors) - -#define hwloc_look_linux HWLOC_NAME(look_linux) -#define hwloc_set_linux_hooks HWLOC_NAME(set_linux_hooks) -#define hwloc_backend_sysfs_init HWLOC_NAME(backend_sysfs_init) -#define hwloc_backend_sysfs_exit HWLOC_NAME(backend_sysfs_exit) - -#define hwloc_backend_xml_init HWLOC_NAME(backend_xml_init) -#define hwloc_xml_check_distances HWLOC_NAME(xml_check_distances) -#define hwloc_look_xml HWLOC_NAME(look_xml) -#define hwloc_backend_xml_exit HWLOC_NAME(backend_xml_exit) - -#define hwloc_look_solaris HWLOC_NAME(look_solaris) -#define hwloc_set_solaris_hooks HWLOC_NAME(set_solaris_hooks) - -#define hwloc_look_aix HWLOC_NAME(look_aix) -#define hwloc_set_aix_hooks HWLOC_NAME(set_aix_hooks) - -#define hwloc_look_osf HWLOC_NAME(look_osf) -#define hwloc_set_osf_hooks HWLOC_NAME(set_osf_hooks) - -#define hwloc_look_windows HWLOC_NAME(look_windows) -#define hwloc_set_windows_hooks HWLOC_NAME(set_windows_hooks) - -#define hwloc_look_darwin HWLOC_NAME(look_darwin) -#define hwloc_set_darwin_hooks HWLOC_NAME(set_darwin_hooks) - -#define hwloc_look_freebsd HWLOC_NAME(look_freebsd) -#define hwloc_set_freebsd_hooks HWLOC_NAME(set_freebsd_hooks) - -#define hwloc_look_hpux HWLOC_NAME(look_hpux) -#define hwloc_set_hpux_hooks HWLOC_NAME(set_hpux_hooks) - -#define hwloc_look_x86 HWLOC_NAME(look_x86) - -#define hwloc_backend_synthetic_init HWLOC_NAME(backend_synthetic_init) -#define hwloc_backend_synthetic_exit HWLOC_NAME(backend_synthetic_exit) -#define hwloc_look_synthetic HWLOC_NAME(look_synthetic ) - -#define hwloc_insert_object_by_cpuset HWLOC_NAME(insert_object_by_cpuset) -#define hwloc_report_error_t HWLOC_NAME(report_error_t) -#define hwloc_report_os_error HWLOC_NAME(report_os_error) -#define hwloc__insert_object_by_cpuset HWLOC_NAME(_insert_object_by_cpuset) -#define hwloc_insert_object_by_parent HWLOC_NAME(insert_object_by_parent) -#define hwloc_add_object_info HWLOC_NAME(add_object_info) -#define hwloc_add_uname_info HWLOC_NAME(add_uname_info) -#define hwloc_free_object HWLOC_NAME(free_object) -#define hwloc_bitmap_printf_value HWLOC_NAME(bitmap_printf_value) -#define hwloc_alloc_setup_object HWLOC_NAME(alloc_setup_object) -#define hwloc_free_unlinked_object HWLOC_NAME(free_unlinked_object) -#define hwloc_setup_level HWLOC_NAME(setup_level) - -#define hwloc_alloc_heap HWLOC_NAME(alloc_heap) -#define hwloc_alloc_mmap HWLOC_NAME(alloc_mmap) -#define hwloc_free_heap HWLOC_NAME(free_heap) -#define hwloc_free_mmap HWLOC_NAME(free_mmap) -#define hwloc_alloc_or_fail HWLOC_NAME(alloc_or_fail) - -#define hwloc_topology_distances_init HWLOC_NAME(topology_distances_init) -#define hwloc_topology_distances_clear HWLOC_NAME(topology_distances_clear) -#define hwloc_topology_distances_destroy HWLOC_NAME(topology_distances_destroy) -#define hwloc_topology__set_distance_matrix HWLOC_NAME(topology__set_distance_matrix) -#define hwloc_store_distances_from_env HWLOC_NAME(store_distances_from_env) -#define hwloc_convert_distances_indexes_into_objects HWLOC_NAME(convert_distances_indexes_into_objects) -#define hwloc_finalize_logical_distances HWLOC_NAME(finalize_logical_distances) -#define hwloc_restrict_distances HWLOC_NAME(restrict_distances) -#define hwloc_free_logical_distances HWLOC_NAME(free_logical_distances) -#define hwloc_group_by_distances HWLOC_NAME(group_by_distances) - -#endif /* HWLOC_SYM_TRANSFORM */ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - - -#endif /* HWLOC_RENAME_H */ diff --git a/hwloc-1.2.1/include/private/autogen/config.h b/hwloc-1.2.1/include/private/autogen/config.h deleted file mode 100644 index 57cb186a..00000000 --- a/hwloc-1.2.1/include/private/autogen/config.h +++ /dev/null @@ -1,589 +0,0 @@ -/* hwloc-1.2.1/include/private/autogen/config.h. Generated from config.h.in by configure. */ -/* include/private/autogen/config.h.in. Generated from configure.ac by autoheader. */ - -/* -*- c -*- - * - * Copyright © 2009 CNRS, INRIA., Université Bordeaux 1 All rights reserved. - * Copyright © 2009 Cisco Systems, Inc. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - * - * This file is automatically generated by configure. Edits will be lost - * the next time you run configure! - */ - -#ifndef HWLOC_CONFIGURE_H -#define HWLOC_CONFIGURE_H - - -/* Define to 1 if the system has the type `CACHE_DESCRIPTOR'. */ -/* #undef HAVE_CACHE_DESCRIPTOR */ - -/* Define to 1 if the system has the type `CACHE_RELATIONSHIP'. */ -/* #undef HAVE_CACHE_RELATIONSHIP */ - -/* Define to 1 if you have the `clz' function. */ -/* #undef HAVE_CLZ */ - -/* Define to 1 if you have the `clzl' function. */ -/* #undef HAVE_CLZL */ - -/* Define to 1 if we have -lcuda */ -/* #undef HAVE_CUDA */ - -/* Define to 1 if we have -lcudart */ -/* #undef HAVE_CUDART */ - -/* Define to 1 if you have the <cuda.h> header file. */ -/* #undef HAVE_CUDA_H */ - -/* Define to 1 if you have the <cuda_runtime_api.h> header file. */ -/* #undef HAVE_CUDA_RUNTIME_API_H */ - -/* Define to 1 if you have the declaration of `CTL_HW', and to 0 if you don't. - */ -#define HAVE_DECL_CTL_HW 0 - -/* Define to 1 if you have the declaration of `HW_NCPU', and to 0 if you - don't. */ -#define HAVE_DECL_HW_NCPU 0 - -/* Define to 1 if you have the declaration of `pthread_getaffinity_np', and to - 0 if you don't. */ -#define HAVE_DECL_PTHREAD_GETAFFINITY_NP 1 - -/* Define to 1 if you have the declaration of `pthread_setaffinity_np', and to - 0 if you don't. */ -#define HAVE_DECL_PTHREAD_SETAFFINITY_NP 1 - -/* Define to 1 if you have the declaration of `_SC_LARGE_PAGESIZE', and to 0 - if you don't. */ -#define HAVE_DECL__SC_LARGE_PAGESIZE 0 - -/* Define to 1 if you have the declaration of `_SC_NPROCESSORS_CONF', and to 0 - if you don't. */ -#define HAVE_DECL__SC_NPROCESSORS_CONF 1 - -/* Define to 1 if you have the declaration of `_SC_NPROCESSORS_ONLN', and to 0 - if you don't. */ -#define HAVE_DECL__SC_NPROCESSORS_ONLN 1 - -/* Define to 1 if you have the declaration of `_SC_NPROC_CONF', and to 0 if - you don't. */ -#define HAVE_DECL__SC_NPROC_CONF 0 - -/* Define to 1 if you have the declaration of `_SC_NPROC_ONLN', and to 0 if - you don't. */ -#define HAVE_DECL__SC_NPROC_ONLN 0 - -/* Define to 1 if you have the <dlfcn.h> header file. */ -#define HAVE_DLFCN_H 1 - -/* Define to 1 if you have the `ffs' function. */ -#define HAVE_FFS 1 - -/* Define to 1 if you have the `ffsl' function. */ -#define HAVE_FFSL 1 - -/* Define to 1 if you have the `fls' function. */ -/* #undef HAVE_FLS */ - -/* Define to 1 if you have the `flsl' function. */ -/* #undef HAVE_FLSL */ - -/* Define to 1 if you have the `getpagesize' function. */ -#define HAVE_GETPAGESIZE 1 - -/* Define to 1 if the system has the type `GROUP_AFFINITY'. */ -/* #undef HAVE_GROUP_AFFINITY */ - -/* Define to 1 if the system has the type `GROUP_RELATIONSHIP'. */ -/* #undef HAVE_GROUP_RELATIONSHIP */ - -/* Define to 1 if you have the `host_info' function. */ -/* #undef HAVE_HOST_INFO */ - -/* Define to 1 if you have the <infiniband/verbs.h> header file. */ -/* #undef HAVE_INFINIBAND_VERBS_H */ - -/* Define to 1 if you have the <inttypes.h> header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define to 1 if the system has the type `KAFFINITY'. */ -/* #undef HAVE_KAFFINITY */ - -/* Define to 1 if you have the <kstat.h> header file. */ -/* #undef HAVE_KSTAT_H */ - -/* Define to 1 if you have the <langinfo.h> header file. */ -/* #undef HAVE_LANGINFO_H */ - -/* Define to 1 if we have -lgdi32 */ -/* #undef HAVE_LIBGDI32 */ - -/* Define to 1 if we have -libverbs */ -/* #undef HAVE_LIBIBVERBS */ - -/* Define to 1 if we have -lkstat */ -/* #undef HAVE_LIBKSTAT */ - -/* Define to 1 if we have -llgrp */ -/* #undef HAVE_LIBLGRP */ - -/* Define to 1 if you have the <locale.h> header file. */ -/* #undef HAVE_LOCALE_H */ - -/* Define to 1 if the system has the type `LOGICAL_PROCESSOR_RELATIONSHIP'. */ -/* #undef HAVE_LOGICAL_PROCESSOR_RELATIONSHIP */ - -/* Define to 1 if you have the <mach/mach_host.h> header file. */ -/* #undef HAVE_MACH_MACH_HOST_H */ - -/* Define to 1 if you have the <mach/mach_init.h> header file. */ -/* #undef HAVE_MACH_MACH_INIT_H */ - -/* Define to 1 if you have the <malloc.h> header file. */ -#define HAVE_MALLOC_H 1 - -/* Define to 1 if you have the `memalign' function. */ -#define HAVE_MEMALIGN 1 - -/* Define to 1 if you have the <memory.h> header file. */ -#define HAVE_MEMORY_H 1 - -/* Define to 1 if you have the <myriexpress.h> header file. */ -/* #undef HAVE_MYRIEXPRESS_H */ - -/* Define to 1 if you have the `nl_langinfo' function. */ -/* #undef HAVE_NL_LANGINFO */ - -/* Define to 1 if you have the <numaif.h> header file. */ -/* #undef HAVE_NUMAIF_H */ - -/* Define to 1 if the system has the type `NUMA_NODE_RELATIONSHIP'. */ -/* #undef HAVE_NUMA_NODE_RELATIONSHIP */ - -/* Define to 1 if you have the `openat' function. */ -#define HAVE_OPENAT 1 - -/* Define to 1 if you have the `posix_memalign' function. */ -#define HAVE_POSIX_MEMALIGN 1 - -/* Define to 1 if the system has the type `PROCESSOR_CACHE_TYPE'. */ -/* #undef HAVE_PROCESSOR_CACHE_TYPE */ - -/* Define to 1 if the system has the type `PROCESSOR_GROUP_INFO'. */ -/* #undef HAVE_PROCESSOR_GROUP_INFO */ - -/* Define to 1 if the system has the type `PROCESSOR_RELATIONSHIP'. */ -/* #undef HAVE_PROCESSOR_RELATIONSHIP */ - -/* Define to 1 if the system has the type `PSAPI_WORKING_SET_EX_BLOCK'. */ -/* #undef HAVE_PSAPI_WORKING_SET_EX_BLOCK */ - -/* Define to 1 if the system has the type `PSAPI_WORKING_SET_EX_INFORMATION'. - */ -/* #undef HAVE_PSAPI_WORKING_SET_EX_INFORMATION */ - -/* Define to 1 if you have the <pthread_np.h> header file. */ -/* #undef HAVE_PTHREAD_NP_H */ - -/* Define to 1 if the system has the type `pthread_t'. */ -#define HAVE_PTHREAD_T 1 - -/* Define to 1 if you have the `putwc' function. */ -/* #undef HAVE_PUTWC */ - -/* Define to 1 if the system has the type `RelationProcessorPackage'. */ -/* #undef HAVE_RELATIONPROCESSORPACKAGE */ - -/* Define to 1 if you have the `setlocale' function. */ -#define HAVE_SETLOCALE 1 - -/* Define to 1 if you have the <stdint.h> header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the <stdlib.h> header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the `strftime' function. */ -#define HAVE_STRFTIME 1 - -/* Define to 1 if you have the <strings.h> header file. */ -#define HAVE_STRINGS_H 1 - -/* Define to 1 if you have the <string.h> header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the `strncasecmp' function. */ -#define HAVE_STRNCASECMP 1 - -/* Define to 1 if you have the `sysctl' function. */ -#define HAVE_SYSCTL 1 - -/* Define to 1 if you have the `sysctlbyname' function. */ -/* #undef HAVE_SYSCTLBYNAME */ - -/* Define to 1 if the system has the type - `SYSTEM_LOGICAL_PROCESSOR_INFORMATION'. */ -/* #undef HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION */ - -/* Define to 1 if the system has the type - `SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX'. */ -/* #undef HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX */ - -/* Define to 1 if you have the <sys/cpuset.h> header file. */ -/* #undef HAVE_SYS_CPUSET_H */ - -/* Define to 1 if you have the <sys/lgrp_user.h> header file. */ -/* #undef HAVE_SYS_LGRP_USER_H */ - -/* Define to 1 if you have the <sys/mman.h> header file. */ -#define HAVE_SYS_MMAN_H 1 - -/* Define to 1 if you have the <sys/param.h> header file. */ -#define HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the <sys/stat.h> header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the <sys/sysctl.h> header file. */ -#define HAVE_SYS_SYSCTL_H 1 - -/* Define to 1 if you have the <sys/types.h> header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the <sys/utsname.h> header file. */ -#define HAVE_SYS_UTSNAME_H 1 - -/* Define to 1 if you have the `uname' function. */ -#define HAVE_UNAME 1 - -/* Define to 1 if you have the <unistd.h> header file. */ -#define HAVE_UNISTD_H 1 - -/* Define to 1 if the system has the type `wchar_t'. */ -/* #undef HAVE_WCHAR_T */ - -/* Define to 1 if you have the <X11/keysym.h> header file. */ -/* #undef HAVE_X11_KEYSYM_H */ - -/* Define to 1 if you have the <X11/Xlib.h> header file. */ -/* #undef HAVE_X11_XLIB_H */ - -/* Define to 1 if you have the <X11/Xutil.h> header file. */ -/* #undef HAVE_X11_XUTIL_H */ - -/* Define to 1 on AIX */ -/* #undef HWLOC_AIX_SYS */ - -/* Whether C compiler supports -fvisibility */ -#define HWLOC_C_HAVE_VISIBILITY 1 - -/* Define to 1 on Darwin */ -/* #undef HWLOC_DARWIN_SYS */ - -/* Whether we are in debugging mode or not */ -/* #undef HWLOC_DEBUG */ - -/* Define to 1 on *FREEBSD */ -/* #undef HWLOC_FREEBSD_SYS */ - -/* Whether your compiler has __attribute__ or not */ -#define HWLOC_HAVE_ATTRIBUTE 1 - -/* Whether your compiler has __attribute__ aligned or not */ -#define HWLOC_HAVE_ATTRIBUTE_ALIGNED 1 - -/* Whether your compiler has __attribute__ always_inline or not */ -#define HWLOC_HAVE_ATTRIBUTE_ALWAYS_INLINE 1 - -/* Whether your compiler has __attribute__ cold or not */ -#define HWLOC_HAVE_ATTRIBUTE_COLD 1 - -/* Whether your compiler has __attribute__ const or not */ -#define HWLOC_HAVE_ATTRIBUTE_CONST 1 - -/* Whether your compiler has __attribute__ deprecated or not */ -#define HWLOC_HAVE_ATTRIBUTE_DEPRECATED 1 - -/* Whether your compiler has __attribute__ format or not */ -#define HWLOC_HAVE_ATTRIBUTE_FORMAT 0 - -/* Whether your compiler has __attribute__ hot or not */ -#define HWLOC_HAVE_ATTRIBUTE_HOT 1 - -/* Whether your compiler has __attribute__ malloc or not */ -#define HWLOC_HAVE_ATTRIBUTE_MALLOC 1 - -/* Whether your compiler has __attribute__ may_alias or not */ -#define HWLOC_HAVE_ATTRIBUTE_MAY_ALIAS 1 - -/* Whether your compiler has __attribute__ nonnull or not */ -#define HWLOC_HAVE_ATTRIBUTE_NONNULL 0 - -/* Whether your compiler has __attribute__ noreturn or not */ -#define HWLOC_HAVE_ATTRIBUTE_NORETURN 1 - -/* Whether your compiler has __attribute__ no_instrument_function or not */ -#define HWLOC_HAVE_ATTRIBUTE_NO_INSTRUMENT_FUNCTION 1 - -/* Whether your compiler has __attribute__ packed or not */ -#define HWLOC_HAVE_ATTRIBUTE_PACKED 1 - -/* Whether your compiler has __attribute__ pure or not */ -#define HWLOC_HAVE_ATTRIBUTE_PURE 1 - -/* Whether your compiler has __attribute__ sentinel or not */ -#define HWLOC_HAVE_ATTRIBUTE_SENTINEL 0 - -/* Whether your compiler has __attribute__ unused or not */ -#define HWLOC_HAVE_ATTRIBUTE_UNUSED 1 - -/* Whether your compiler has __attribute__ warn unused result or not */ -#define HWLOC_HAVE_ATTRIBUTE_WARN_UNUSED_RESULT 1 - -/* Whether your compiler has __attribute__ weak alias or not */ -#define HWLOC_HAVE_ATTRIBUTE_WEAK_ALIAS 1 - -/* Define to 1 if you have the `cairo' library. */ -/* #undef HWLOC_HAVE_CAIRO */ - -/* Define to 1 if you have the `clz' function. */ -/* #undef HWLOC_HAVE_CLZ */ - -/* Define to 1 if you have the `clzl' function. */ -/* #undef HWLOC_HAVE_CLZL */ - -/* Define to 1 if you have cpuid */ -#define HWLOC_HAVE_CPUID 1 - -/* Define to 1 if the CPU_SET macro works */ -#define HWLOC_HAVE_CPU_SET 1 - -/* Define to 1 if the CPU_SET_S macro works */ -#define HWLOC_HAVE_CPU_SET_S 1 - -/* Define to 1 if function `clz' is declared by system headers */ -/* #undef HWLOC_HAVE_DECL_CLZ */ - -/* Define to 1 if function `clzl' is declared by system headers */ -/* #undef HWLOC_HAVE_DECL_CLZL */ - -/* Define to 1 if function `ffs' is declared by system headers */ -#define HWLOC_HAVE_DECL_FFS 1 - -/* Define to 1 if function `ffsl' is declared by system headers */ -#define HWLOC_HAVE_DECL_FFSL 1 - -/* Define to 1 if function `fls' is declared by system headers */ -/* #undef HWLOC_HAVE_DECL_FLS */ - -/* Define to 1 if function `flsl' is declared by system headers */ -/* #undef HWLOC_HAVE_DECL_FLSL */ - -/* Define to 1 if you have the `ffs' function. */ -#define HWLOC_HAVE_FFS 1 - -/* Define to 1 if you have the `ffsl' function. */ -#define HWLOC_HAVE_FFSL 1 - -/* Define to 1 if you have the `fls' function. */ -/* #undef HWLOC_HAVE_FLS */ - -/* Define to 1 if you have the `flsl' function. */ -/* #undef HWLOC_HAVE_FLSL */ - -/* Define to 1 if you have a library providing the termcap interface */ -/* #undef HWLOC_HAVE_LIBTERMCAP */ - -/* Define to 1 if mbind is available. */ -/* #undef HWLOC_HAVE_MBIND */ - -/* Define to 1 if migrate_pages is available. */ -/* #undef HWLOC_HAVE_MIGRATE_PAGES */ - -/* Define to 1 if glibc provides the old prototype of sched_setaffinity() */ -/* #undef HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ - -/* `Define to 1 if you have pthread_getthrds_np' */ -/* #undef HWLOC_HAVE_PTHREAD_GETTHRDS_NP */ - -/* Define to 1 if set_mempolicy is available. */ -/* #undef HWLOC_HAVE_SET_MEMPOLICY */ - -/* Define to 1 if you have the <stdint.h> header file. */ -#define HWLOC_HAVE_STDINT_H 1 - -/* Define to 1 if you have the `windows.h' header. */ -/* #undef HWLOC_HAVE_WINDOWS_H */ - -/* Define to 1 if X11 libraries are available. */ -/* #undef HWLOC_HAVE_X11 */ - -/* Define to 1 if you have the `xml' library. */ -/* #undef HWLOC_HAVE_XML */ - -/* Define to 1 if the _syscall3 macro works */ -/* #undef HWLOC_HAVE__SYSCALL3 */ - -/* Define to 1 on HP-UX */ -/* #undef HWLOC_HPUX_SYS */ - -/* Define to 1 on Irix */ -/* #undef HWLOC_IRIX_SYS */ - -/* Define to 1 on Linux */ -#define HWLOC_LINUX_SYS 1 - -/* Major version of hwloc */ -/* #undef HWLOC_MAJOR_VERSION */ - -/* Minor version of hwloc */ -/* #undef HWLOC_MINOR_VERSION */ - -/* Define to 1 on OSF */ -/* #undef HWLOC_OSF_SYS */ - -/* Release version of hwloc */ -/* #undef HWLOC_RELEASE_VERSION */ - -/* The size of `unsigned int', as computed by sizeof */ -#define HWLOC_SIZEOF_UNSIGNED_INT 4 - -/* The size of `unsigned long', as computed by sizeof */ -#define HWLOC_SIZEOF_UNSIGNED_LONG 4 - -/* Define to 1 on Solaris */ -/* #undef HWLOC_SOLARIS_SYS */ - -/* The hwloc symbol prefix */ -#define HWLOC_SYM_PREFIX hwloc_ - -/* The hwloc symbol prefix in all caps */ -#define HWLOC_SYM_PREFIX_CAPS HWLOC_ - -/* Whether we need to re-define all the hwloc public symbols or not */ -#define HWLOC_SYM_TRANSFORM 0 - -/* Define to 1 on unsupported systems */ -/* #undef HWLOC_UNSUPPORTED_SYS */ - -/* Define to 1 if ncurses works, preferred over curses */ -/* #undef HWLOC_USE_NCURSES */ - -/* Define to 1 on WINDOWS */ -/* #undef HWLOC_WIN_SYS */ - -/* Define to 1 on x86_32 */ -#define HWLOC_X86_32_ARCH 1 - -/* Define to 1 on x86_64 */ -/* #undef HWLOC_X86_64_ARCH */ - -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ -#define LT_OBJDIR ".libs/" - -/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -/* #undef NO_MINUS_C_MINUS_O */ - -/* Name of package */ -#define PACKAGE "htop" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "loderunner@users.sourceforge.net" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "htop" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "htop 0.9.1" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "htop" - -/* Define to the home page for this package. */ -#define PACKAGE_URL "" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "0.9.1" - -/* The size of `unsigned int', as computed by sizeof. */ -#define SIZEOF_UNSIGNED_INT 4 - -/* The size of `unsigned long', as computed by sizeof. */ -#define SIZEOF_UNSIGNED_LONG 4 - -/* The size of `void *', as computed by sizeof. */ -#define SIZEOF_VOID_P 4 - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Enable extensions on HP-UX. */ -#ifndef _HPUX_SOURCE -# define _HPUX_SOURCE 1 -#endif - - -/* Enable extensions on AIX 3, Interix. */ -#ifndef _ALL_SOURCE -# define _ALL_SOURCE 1 -#endif -/* Enable GNU extensions on systems that have them. */ -#ifndef _GNU_SOURCE -# define _GNU_SOURCE 1 -#endif -/* Enable threading extensions on Solaris. */ -#ifndef _POSIX_PTHREAD_SEMANTICS -# define _POSIX_PTHREAD_SEMANTICS 1 -#endif -/* Enable extensions on HP NonStop. */ -#ifndef _TANDEM_SOURCE -# define _TANDEM_SOURCE 1 -#endif -/* Enable general extensions on Solaris. */ -#ifndef __EXTENSIONS__ -# define __EXTENSIONS__ 1 -#endif - - -/* Version number of package */ -#define VERSION "0.9.1" - -/* Define to 1 if the X Window System is missing or not being used. */ -/* #undef X_DISPLAY_MISSING */ - -/* Are we building for HP-UX? */ -#define _HPUX_SOURCE 1 - -/* Define to 1 if on MINIX. */ -/* #undef _MINIX */ - -/* Define to 2 if the system does not provide POSIX.1 features except with - this defined. */ -/* #undef _POSIX_1_SOURCE */ - -/* Define to 1 if you need to in order for `stat' and other things to work. */ -/* #undef _POSIX_SOURCE */ - -/* Define this to a keyword that can safely replace inline in installed - headers */ -#define __hwloc_inline __inline__ - -/* Define this to the process ID type */ -#define hwloc_pid_t pid_t - -/* Define this to either strncasecmp or strncmp */ -#define hwloc_strncasecmp strncasecmp - -/* Define this to the thread ID type */ -#define hwloc_thread_t pthread_t - - -#endif /* HWLOC_CONFIGURE_H */ - diff --git a/hwloc-1.2.1/include/private/autogen/config.h.in b/hwloc-1.2.1/include/private/autogen/config.h.in deleted file mode 100644 index 2a7269c4..00000000 --- a/hwloc-1.2.1/include/private/autogen/config.h.in +++ /dev/null @@ -1,588 +0,0 @@ -/* include/private/autogen/config.h.in. Generated from configure.ac by autoheader. */ - -/* -*- c -*- - * - * Copyright © 2009 CNRS, INRIA., Université Bordeaux 1 All rights reserved. - * Copyright © 2009 Cisco Systems, Inc. All rights reserved. - * $COPYRIGHT$ - * - * Additional copyrights may follow - * - * $HEADER$ - * - * This file is automatically generated by configure. Edits will be lost - * the next time you run configure! - */ - -#ifndef HWLOC_CONFIGURE_H -#define HWLOC_CONFIGURE_H - - -/* Define to 1 if the system has the type `CACHE_DESCRIPTOR'. */ -#undef HAVE_CACHE_DESCRIPTOR - -/* Define to 1 if the system has the type `CACHE_RELATIONSHIP'. */ -#undef HAVE_CACHE_RELATIONSHIP - -/* Define to 1 if you have the `clz' function. */ -#undef HAVE_CLZ - -/* Define to 1 if you have the `clzl' function. */ -#undef HAVE_CLZL - -/* Define to 1 if we have -lcuda */ -#undef HAVE_CUDA - -/* Define to 1 if we have -lcudart */ -#undef HAVE_CUDART - -/* Define to 1 if you have the <cuda.h> header file. */ -#undef HAVE_CUDA_H - -/* Define to 1 if you have the <cuda_runtime_api.h> header file. */ -#undef HAVE_CUDA_RUNTIME_API_H - -/* Define to 1 if you have the declaration of `CTL_HW', and to 0 if you don't. - */ -#undef HAVE_DECL_CTL_HW - -/* Define to 1 if you have the declaration of `HW_NCPU', and to 0 if you - don't. */ -#undef HAVE_DECL_HW_NCPU - -/* Define to 1 if you have the declaration of `pthread_getaffinity_np', and to - 0 if you don't. */ -#undef HAVE_DECL_PTHREAD_GETAFFINITY_NP - -/* Define to 1 if you have the declaration of `pthread_setaffinity_np', and to - 0 if you don't. */ -#undef HAVE_DECL_PTHREAD_SETAFFINITY_NP - -/* Define to 1 if you have the declaration of `_SC_LARGE_PAGESIZE', and to 0 - if you don't. */ -#undef HAVE_DECL__SC_LARGE_PAGESIZE - -/* Define to 1 if you have the declaration of `_SC_NPROCESSORS_CONF', and to 0 - if you don't. */ -#undef HAVE_DECL__SC_NPROCESSORS_CONF - -/* Define to 1 if you have the declaration of `_SC_NPROCESSORS_ONLN', and to 0 - if you don't. */ -#undef HAVE_DECL__SC_NPROCESSORS_ONLN - -/* Define to 1 if you have the declaration of `_SC_NPROC_CONF', and to 0 if - you don't. */ -#undef HAVE_DECL__SC_NPROC_CONF - -/* Define to 1 if you have the declaration of `_SC_NPROC_ONLN', and to 0 if - you don't. */ -#undef HAVE_DECL__SC_NPROC_ONLN - -/* Define to 1 if you have the <dlfcn.h> header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if you have the `ffs' function. */ -#undef HAVE_FFS - -/* Define to 1 if you have the `ffsl' function. */ -#undef HAVE_FFSL - -/* Define to 1 if you have the `fls' function. */ -#undef HAVE_FLS - -/* Define to 1 if you have the `flsl' function. */ -#undef HAVE_FLSL - -/* Define to 1 if you have the `getpagesize' function. */ -#undef HAVE_GETPAGESIZE - -/* Define to 1 if the system has the type `GROUP_AFFINITY'. */ -#undef HAVE_GROUP_AFFINITY - -/* Define to 1 if the system has the type `GROUP_RELATIONSHIP'. */ -#undef HAVE_GROUP_RELATIONSHIP - -/* Define to 1 if you have the `host_info' function. */ -#undef HAVE_HOST_INFO - -/* Define to 1 if you have the <infiniband/verbs.h> header file. */ -#undef HAVE_INFINIBAND_VERBS_H - -/* Define to 1 if you have the <inttypes.h> header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if the system has the type `KAFFINITY'. */ -#undef HAVE_KAFFINITY - -/* Define to 1 if you have the <kstat.h> header file. */ -#undef HAVE_KSTAT_H - -/* Define to 1 if you have the <langinfo.h> header file. */ -#undef HAVE_LANGINFO_H - -/* Define to 1 if we have -lgdi32 */ -#undef HAVE_LIBGDI32 - -/* Define to 1 if we have -libverbs */ -#undef HAVE_LIBIBVERBS - -/* Define to 1 if we have -lkstat */ -#undef HAVE_LIBKSTAT - -/* Define to 1 if we have -llgrp */ -#undef HAVE_LIBLGRP - -/* Define to 1 if you have the <locale.h> header file. */ -#undef HAVE_LOCALE_H - -/* Define to 1 if the system has the type `LOGICAL_PROCESSOR_RELATIONSHIP'. */ -#undef HAVE_LOGICAL_PROCESSOR_RELATIONSHIP - -/* Define to 1 if you have the <mach/mach_host.h> header file. */ -#undef HAVE_MACH_MACH_HOST_H - -/* Define to 1 if you have the <mach/mach_init.h> header file. */ -#undef HAVE_MACH_MACH_INIT_H - -/* Define to 1 if you have the <malloc.h> header file. */ -#undef HAVE_MALLOC_H - -/* Define to 1 if you have the `memalign' function. */ -#undef HAVE_MEMALIGN - -/* Define to 1 if you have the <memory.h> header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the <myriexpress.h> header file. */ -#undef HAVE_MYRIEXPRESS_H - -/* Define to 1 if you have the `nl_langinfo' function. */ -#undef HAVE_NL_LANGINFO - -/* Define to 1 if you have the <numaif.h> header file. */ -#undef HAVE_NUMAIF_H - -/* Define to 1 if the system has the type `NUMA_NODE_RELATIONSHIP'. */ -#undef HAVE_NUMA_NODE_RELATIONSHIP - -/* Define to 1 if you have the `openat' function. */ -#undef HAVE_OPENAT - -/* Define to 1 if you have the `posix_memalign' function. */ -#undef HAVE_POSIX_MEMALIGN - -/* Define to 1 if the system has the type `PROCESSOR_CACHE_TYPE'. */ -#undef HAVE_PROCESSOR_CACHE_TYPE - -/* Define to 1 if the system has the type `PROCESSOR_GROUP_INFO'. */ -#undef HAVE_PROCESSOR_GROUP_INFO - -/* Define to 1 if the system has the type `PROCESSOR_RELATIONSHIP'. */ -#undef HAVE_PROCESSOR_RELATIONSHIP - -/* Define to 1 if the system has the type `PSAPI_WORKING_SET_EX_BLOCK'. */ -#undef HAVE_PSAPI_WORKING_SET_EX_BLOCK - -/* Define to 1 if the system has the type `PSAPI_WORKING_SET_EX_INFORMATION'. - */ -#undef HAVE_PSAPI_WORKING_SET_EX_INFORMATION - -/* Define to 1 if you have the <pthread_np.h> header file. */ -#undef HAVE_PTHREAD_NP_H - -/* Define to 1 if the system has the type `pthread_t'. */ -#undef HAVE_PTHREAD_T - -/* Define to 1 if you have the `putwc' function. */ -#undef HAVE_PUTWC - -/* Define to 1 if the system has the type `RelationProcessorPackage'. */ -#undef HAVE_RELATIONPROCESSORPACKAGE - -/* Define to 1 if you have the `setlocale' function. */ -#undef HAVE_SETLOCALE - -/* Define to 1 if you have the <stdint.h> header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the <stdlib.h> header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the `strftime' function. */ -#undef HAVE_STRFTIME - -/* Define to 1 if you have the <strings.h> header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the <string.h> header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the `strncasecmp' function. */ -#undef HAVE_STRNCASECMP - -/* Define to 1 if you have the `sysctl' function. */ -#undef HAVE_SYSCTL - -/* Define to 1 if you have the `sysctlbyname' function. */ -#undef HAVE_SYSCTLBYNAME - -/* Define to 1 if the system has the type - `SYSTEM_LOGICAL_PROCESSOR_INFORMATION'. */ -#undef HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION - -/* Define to 1 if the system has the type - `SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX'. */ -#undef HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX - -/* Define to 1 if you have the <sys/cpuset.h> header file. */ -#undef HAVE_SYS_CPUSET_H - -/* Define to 1 if you have the <sys/lgrp_user.h> header file. */ -#undef HAVE_SYS_LGRP_USER_H - -/* Define to 1 if you have the <sys/mman.h> header file. */ -#undef HAVE_SYS_MMAN_H - -/* Define to 1 if you have the <sys/param.h> header file. */ -#undef HAVE_SYS_PARAM_H - -/* Define to 1 if you have the <sys/stat.h> header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the <sys/sysctl.h> header file. */ -#undef HAVE_SYS_SYSCTL_H - -/* Define to 1 if you have the <sys/types.h> header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the <sys/utsname.h> header file. */ -#undef HAVE_SYS_UTSNAME_H - -/* Define to 1 if you have the `uname' function. */ -#undef HAVE_UNAME - -/* Define to 1 if you have the <unistd.h> header file. */ -#undef HAVE_UNISTD_H - -/* Define to 1 if the system has the type `wchar_t'. */ -#undef HAVE_WCHAR_T - -/* Define to 1 if you have the <X11/keysym.h> header file. */ -#undef HAVE_X11_KEYSYM_H - -/* Define to 1 if you have the <X11/Xlib.h> header file. */ -#undef HAVE_X11_XLIB_H - -/* Define to 1 if you have the <X11/Xutil.h> header file. */ -#undef HAVE_X11_XUTIL_H - -/* Define to 1 on AIX */ -#undef HWLOC_AIX_SYS - -/* Whether C compiler supports -fvisibility */ -#undef HWLOC_C_HAVE_VISIBILITY - -/* Define to 1 on Darwin */ -#undef HWLOC_DARWIN_SYS - -/* Whether we are in debugging mode or not */ -#undef HWLOC_DEBUG - -/* Define to 1 on *FREEBSD */ -#undef HWLOC_FREEBSD_SYS - -/* Whether your compiler has __attribute__ or not */ -#undef HWLOC_HAVE_ATTRIBUTE - -/* Whether your compiler has __attribute__ aligned or not */ -#undef HWLOC_HAVE_ATTRIBUTE_ALIGNED - -/* Whether your compiler has __attribute__ always_inline or not */ -#undef HWLOC_HAVE_ATTRIBUTE_ALWAYS_INLINE - -/* Whether your compiler has __attribute__ cold or not */ -#undef HWLOC_HAVE_ATTRIBUTE_COLD - -/* Whether your compiler has __attribute__ const or not */ -#undef HWLOC_HAVE_ATTRIBUTE_CONST - -/* Whether your compiler has __attribute__ deprecated or not */ -#undef HWLOC_HAVE_ATTRIBUTE_DEPRECATED - -/* Whether your compiler has __attribute__ format or not */ -#undef HWLOC_HAVE_ATTRIBUTE_FORMAT - -/* Whether your compiler has __attribute__ hot or not */ -#undef HWLOC_HAVE_ATTRIBUTE_HOT - -/* Whether your compiler has __attribute__ malloc or not */ -#undef HWLOC_HAVE_ATTRIBUTE_MALLOC - -/* Whether your compiler has __attribute__ may_alias or not */ -#undef HWLOC_HAVE_ATTRIBUTE_MAY_ALIAS - -/* Whether your compiler has __attribute__ nonnull or not */ -#undef HWLOC_HAVE_ATTRIBUTE_NONNULL - -/* Whether your compiler has __attribute__ noreturn or not */ -#undef HWLOC_HAVE_ATTRIBUTE_NORETURN - -/* Whether your compiler has __attribute__ no_instrument_function or not */ -#undef HWLOC_HAVE_ATTRIBUTE_NO_INSTRUMENT_FUNCTION - -/* Whether your compiler has __attribute__ packed or not */ -#undef HWLOC_HAVE_ATTRIBUTE_PACKED - -/* Whether your compiler has __attribute__ pure or not */ -#undef HWLOC_HAVE_ATTRIBUTE_PURE - -/* Whether your compiler has __attribute__ sentinel or not */ -#undef HWLOC_HAVE_ATTRIBUTE_SENTINEL - -/* Whether your compiler has __attribute__ unused or not */ -#undef HWLOC_HAVE_ATTRIBUTE_UNUSED - -/* Whether your compiler has __attribute__ warn unused result or not */ -#undef HWLOC_HAVE_ATTRIBUTE_WARN_UNUSED_RESULT - -/* Whether your compiler has __attribute__ weak alias or not */ -#undef HWLOC_HAVE_ATTRIBUTE_WEAK_ALIAS - -/* Define to 1 if you have the `cairo' library. */ -#undef HWLOC_HAVE_CAIRO - -/* Define to 1 if you have the `clz' function. */ -#undef HWLOC_HAVE_CLZ - -/* Define to 1 if you have the `clzl' function. */ -#undef HWLOC_HAVE_CLZL - -/* Define to 1 if you have cpuid */ -#undef HWLOC_HAVE_CPUID - -/* Define to 1 if the CPU_SET macro works */ -#undef HWLOC_HAVE_CPU_SET - -/* Define to 1 if the CPU_SET_S macro works */ -#undef HWLOC_HAVE_CPU_SET_S - -/* Define to 1 if function `clz' is declared by system headers */ -#undef HWLOC_HAVE_DECL_CLZ - -/* Define to 1 if function `clzl' is declared by system headers */ -#undef HWLOC_HAVE_DECL_CLZL - -/* Define to 1 if function `ffs' is declared by system headers */ -#undef HWLOC_HAVE_DECL_FFS - -/* Define to 1 if function `ffsl' is declared by system headers */ -#undef HWLOC_HAVE_DECL_FFSL - -/* Define to 1 if function `fls' is declared by system headers */ -#undef HWLOC_HAVE_DECL_FLS - -/* Define to 1 if function `flsl' is declared by system headers */ -#undef HWLOC_HAVE_DECL_FLSL - -/* Define to 1 if you have the `ffs' function. */ -#undef HWLOC_HAVE_FFS - -/* Define to 1 if you have the `ffsl' function. */ -#undef HWLOC_HAVE_FFSL - -/* Define to 1 if you have the `fls' function. */ -#undef HWLOC_HAVE_FLS - -/* Define to 1 if you have the `flsl' function. */ -#undef HWLOC_HAVE_FLSL - -/* Define to 1 if you have a library providing the termcap interface */ -#undef HWLOC_HAVE_LIBTERMCAP - -/* Define to 1 if mbind is available. */ -#undef HWLOC_HAVE_MBIND - -/* Define to 1 if migrate_pages is available. */ -#undef HWLOC_HAVE_MIGRATE_PAGES - -/* Define to 1 if glibc provides the old prototype of sched_setaffinity() */ -#undef HWLOC_HAVE_OLD_SCHED_SETAFFINITY - -/* `Define to 1 if you have pthread_getthrds_np' */ -#undef HWLOC_HAVE_PTHREAD_GETTHRDS_NP - -/* Define to 1 if set_mempolicy is available. */ -#undef HWLOC_HAVE_SET_MEMPOLICY - -/* Define to 1 if you have the <stdint.h> header file. */ -#undef HWLOC_HAVE_STDINT_H - -/* Define to 1 if you have the `windows.h' header. */ -#undef HWLOC_HAVE_WINDOWS_H - -/* Define to 1 if X11 libraries are available. */ -#undef HWLOC_HAVE_X11 - -/* Define to 1 if you have the `xml' library. */ -#undef HWLOC_HAVE_XML - -/* Define to 1 if the _syscall3 macro works */ -#undef HWLOC_HAVE__SYSCALL3 - -/* Define to 1 on HP-UX */ -#undef HWLOC_HPUX_SYS - -/* Define to 1 on Irix */ -#undef HWLOC_IRIX_SYS - -/* Define to 1 on Linux */ -#undef HWLOC_LINUX_SYS - -/* Major version of hwloc */ -#undef HWLOC_MAJOR_VERSION - -/* Minor version of hwloc */ -#undef HWLOC_MINOR_VERSION - -/* Define to 1 on OSF */ -#undef HWLOC_OSF_SYS - -/* Release version of hwloc */ -#undef HWLOC_RELEASE_VERSION - -/* The size of `unsigned int', as computed by sizeof */ -#undef HWLOC_SIZEOF_UNSIGNED_INT - -/* The size of `unsigned long', as computed by sizeof */ -#undef HWLOC_SIZEOF_UNSIGNED_LONG - -/* Define to 1 on Solaris */ -#undef HWLOC_SOLARIS_SYS - -/* The hwloc symbol prefix */ -#undef HWLOC_SYM_PREFIX - -/* The hwloc symbol prefix in all caps */ -#undef HWLOC_SYM_PREFIX_CAPS - -/* Whether we need to re-define all the hwloc public symbols or not */ -#undef HWLOC_SYM_TRANSFORM - -/* Define to 1 on unsupported systems */ -#undef HWLOC_UNSUPPORTED_SYS - -/* Define to 1 if ncurses works, preferred over curses */ -#undef HWLOC_USE_NCURSES - -/* Define to 1 on WINDOWS */ -#undef HWLOC_WIN_SYS - -/* Define to 1 on x86_32 */ -#undef HWLOC_X86_32_ARCH - -/* Define to 1 on x86_64 */ -#undef HWLOC_X86_64_ARCH - -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ -#undef LT_OBJDIR - -/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -#undef NO_MINUS_C_MINUS_O - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the home page for this package. */ -#undef PACKAGE_URL - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* The size of `unsigned int', as computed by sizeof. */ -#undef SIZEOF_UNSIGNED_INT - -/* The size of `unsigned long', as computed by sizeof. */ -#undef SIZEOF_UNSIGNED_LONG - -/* The size of `void *', as computed by sizeof. */ -#undef SIZEOF_VOID_P - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Enable extensions on HP-UX. */ -#ifndef _HPUX_SOURCE -# undef _HPUX_SOURCE -#endif - - -/* Enable extensions on AIX 3, Interix. */ -#ifndef _ALL_SOURCE -# undef _ALL_SOURCE -#endif -/* Enable GNU extensions on systems that have them. */ -#ifndef _GNU_SOURCE -# undef _GNU_SOURCE -#endif -/* Enable threading extensions on Solaris. */ -#ifndef _POSIX_PTHREAD_SEMANTICS -# undef _POSIX_PTHREAD_SEMANTICS -#endif -/* Enable extensions on HP NonStop. */ -#ifndef _TANDEM_SOURCE -# undef _TANDEM_SOURCE -#endif -/* Enable general extensions on Solaris. */ -#ifndef __EXTENSIONS__ -# undef __EXTENSIONS__ -#endif - - -/* Version number of package */ -#undef VERSION - -/* Define to 1 if the X Window System is missing or not being used. */ -#undef X_DISPLAY_MISSING - -/* Are we building for HP-UX? */ -#undef _HPUX_SOURCE - -/* Define to 1 if on MINIX. */ -#undef _MINIX - -/* Define to 2 if the system does not provide POSIX.1 features except with - this defined. */ -#undef _POSIX_1_SOURCE - -/* Define to 1 if you need to in order for `stat' and other things to work. */ -#undef _POSIX_SOURCE - -/* Define this to a keyword that can safely replace inline in installed - headers */ -#undef __hwloc_inline - -/* Define this to the process ID type */ -#undef hwloc_pid_t - -/* Define this to either strncasecmp or strncmp */ -#undef hwloc_strncasecmp - -/* Define this to the thread ID type */ -#undef hwloc_thread_t - - -#endif /* HWLOC_CONFIGURE_H */ - diff --git a/hwloc-1.2.1/include/private/autogen/stamp-h2 b/hwloc-1.2.1/include/private/autogen/stamp-h2 deleted file mode 100644 index a11b3a53..00000000 --- a/hwloc-1.2.1/include/private/autogen/stamp-h2 +++ /dev/null @@ -1 +0,0 @@ -timestamp for hwloc-1.2.1/include/private/autogen/config.h diff --git a/hwloc-1.2.1/include/private/cpuid.h b/hwloc-1.2.1/include/private/cpuid.h deleted file mode 100644 index 60522d2d..00000000 --- a/hwloc-1.2.1/include/private/cpuid.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright © 2010-2011 Université Bordeaux 1 - * Copyright © 2010 Cisco Systems, Inc. All rights reserved. - * - * See COPYING in top-level directory. - */ - -/* Internals for x86's cpuid. */ - -#ifndef HWLOC_PRIVATE_CPUID_H -#define HWLOC_PRIVATE_CPUID_H - -#ifdef HWLOC_X86_32_ARCH -static __hwloc_inline int hwloc_have_cpuid(void) -{ - int ret; - unsigned tmp, tmp2; - asm( - "mov $0,%0\n\t" /* Not supported a priori */ - - "pushfl \n\t" /* Save flags */ - - "pushfl \n\t" \ - "pop %1 \n\t" /* Get flags */ \ - -#define TRY_TOGGLE \ - "xor $0x00200000,%1\n\t" /* Try to toggle ID */ \ - "mov %1,%2\n\t" /* Save expected value */ \ - "push %1 \n\t" \ - "popfl \n\t" /* Try to toggle */ \ - "pushfl \n\t" \ - "pop %1 \n\t" \ - "cmp %1,%2\n\t" /* Compare with expected value */ \ - "jnz Lhwloc1\n\t" /* Unexpected, failure */ \ - - TRY_TOGGLE /* Try to set/clear */ - TRY_TOGGLE /* Try to clear/set */ - - "mov $1,%0\n\t" /* Passed the test! */ - - "Lhwloc1: \n\t" - "popfl \n\t" /* Restore flags */ - - : "=r" (ret), "=&r" (tmp), "=&r" (tmp2)); - return ret; -} -#endif /* HWLOC_X86_32_ARCH */ -#ifdef HWLOC_X86_64_ARCH -static __hwloc_inline int hwloc_have_cpuid(void) { return 1; } -#endif /* HWLOC_X86_64_ARCH */ - -static __hwloc_inline void hwloc_cpuid(unsigned *eax, unsigned *ebx, unsigned *ecx, unsigned *edx) -{ - asm( -#ifdef HWLOC_X86_32_ARCH - "push %%ebx\n\t" -#endif - "cpuid\n\t" -#ifdef HWLOC_X86_32_ARCH - "mov %%ebx,%1\n\t" - "pop %%ebx\n\t" -#endif - : "+a" (*eax), -#ifdef HWLOC_X86_32_ARCH - "=r" (*ebx), -#else - "=b" (*ebx), -#endif - "+c" (*ecx), "=d" (*edx)); -} - -#endif /* HWLOC_PRIVATE_CPUID_H */ diff --git a/hwloc-1.2.1/include/private/debug.h b/hwloc-1.2.1/include/private/debug.h deleted file mode 100644 index f686c885..00000000 --- a/hwloc-1.2.1/include/private/debug.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2010 INRIA. All rights reserved. - * Copyright © 2009, 2011 Université Bordeaux 1 - * Copyright © 2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/* The configuration file */ - -#ifndef HWLOC_DEBUG_H -#define HWLOC_DEBUG_H - -#include <private/autogen/config.h> - -#ifdef HWLOC_DEBUG -#include <stdarg.h> -#include <stdio.h> -#endif - -static __hwloc_inline void hwloc_debug(const char *s __hwloc_attribute_unused, ...) -{ -#ifdef HWLOC_DEBUG - va_list ap; - - va_start(ap, s); - vfprintf(stderr, s, ap); - va_end(ap); -#endif -} - -#ifdef HWLOC_DEBUG -#define hwloc_debug_bitmap(fmt, bitmap) do { \ - char *s= hwloc_bitmap_printf_value(bitmap); \ - fprintf(stderr, fmt, s); \ - free(s); \ -} while (0) -#define hwloc_debug_1arg_bitmap(fmt, arg1, bitmap) do { \ - char *s= hwloc_bitmap_printf_value(bitmap); \ - fprintf(stderr, fmt, arg1, s); \ - free(s); \ -} while (0) -#define hwloc_debug_2args_bitmap(fmt, arg1, arg2, bitmap) do { \ - char *s= hwloc_bitmap_printf_value(bitmap); \ - fprintf(stderr, fmt, arg1, arg2, s); \ - free(s); \ -} while (0) -#else -#define hwloc_debug_bitmap(s, bitmap) do { } while(0) -#define hwloc_debug_1arg_bitmap(s, arg1, bitmap) do { } while(0) -#define hwloc_debug_2args_bitmap(s, arg1, arg2, bitmap) do { } while(0) -#endif - -#endif /* HWLOC_DEBUG_H */ diff --git a/hwloc-1.2.1/include/private/misc.h b/hwloc-1.2.1/include/private/misc.h deleted file mode 100644 index 7fb21fca..00000000 --- a/hwloc-1.2.1/include/private/misc.h +++ /dev/null @@ -1,331 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2010 INRIA. All rights reserved. - * Copyright © 2009-2011 Université Bordeaux 1 - * Copyright © 2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/* Misc internals routines. */ - -#ifndef HWLOC_PRIVATE_MISC_H -#define HWLOC_PRIVATE_MISC_H - -#include <hwloc/autogen/config.h> -#include <private/autogen/config.h> -#include <private/private.h> - - -/* On some systems, snprintf returns the size of written data, not the actually - * required size. hwloc_snprintf always report the actually required size. */ -int hwloc_snprintf(char *str, size_t size, const char *format, ...) __hwloc_attribute_format(printf, 3, 4); - -/* Check whether needle matches the beginning of haystack, at least n, and up - * to a colon or \0 */ -HWLOC_DECLSPEC -int hwloc_namecoloncmp(const char *haystack, const char *needle, size_t n); - -/* Compile-time assertion */ -#define HWLOC_BUILD_ASSERT(condition) ((void)sizeof(char[1 - 2*!(condition)])) - - - -#define HWLOC_BITS_PER_LONG (HWLOC_SIZEOF_UNSIGNED_LONG * 8) -#define HWLOC_BITS_PER_INT (HWLOC_SIZEOF_UNSIGNED_INT * 8) - -#if (HWLOC_BITS_PER_LONG != 32) && (HWLOC_BITS_PER_LONG != 64) -#error "unknown size for unsigned long." -#endif - -#if (HWLOC_BITS_PER_INT != 16) && (HWLOC_BITS_PER_INT != 32) && (HWLOC_BITS_PER_INT != 64) -#error "unknown size for unsigned int." -#endif - - -/** - * ffsl helpers. - */ - -#ifdef __GNUC__ - -# if (__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4)) - /* Starting from 3.4, gcc has a long variant. */ -# define hwloc_ffsl(x) __builtin_ffsl(x) -# else -# define hwloc_ffs(x) __builtin_ffs(x) -# define HWLOC_NEED_FFSL -# endif - -#elif defined(HWLOC_HAVE_FFSL) - -# ifndef HWLOC_HAVE_DECL_FFSL -extern int ffsl(long) __hwloc_attribute_const; -# endif - -# define hwloc_ffsl(x) ffsl(x) - -#elif defined(HWLOC_HAVE_FFS) - -# ifndef HWLOC_HAVE_DECL_FFS -extern int ffs(int) __hwloc_attribute_const; -# endif - -# define hwloc_ffs(x) ffs(x) -# define HWLOC_NEED_FFSL - -#else /* no ffs implementation */ - -static __hwloc_inline int __hwloc_attribute_const -hwloc_ffsl(unsigned long x) -{ - int i; - - if (!x) - return 0; - - i = 1; -#if HWLOC_BITS_PER_LONG >= 64 - if (!(x & 0xfffffffful)) { - x >>= 32; - i += 32; - } -#endif - if (!(x & 0xffffu)) { - x >>= 16; - i += 16; - } - if (!(x & 0xff)) { - x >>= 8; - i += 8; - } - if (!(x & 0xf)) { - x >>= 4; - i += 4; - } - if (!(x & 0x3)) { - x >>= 2; - i += 2; - } - if (!(x & 0x1)) { - x >>= 1; - i += 1; - } - - return i; -} - -#endif - -#ifdef HWLOC_NEED_FFSL - -/* We only have an int ffs(int) implementation, build a long one. */ - -/* First make it 32 bits if it was only 16. */ -static __hwloc_inline int __hwloc_attribute_const -hwloc_ffs32(unsigned long x) -{ -#if HWLOC_BITS_PER_INT == 16 - int low_ffs, hi_ffs; - - low_ffs = hwloc_ffs(x & 0xfffful); - if (low_ffs) - return low_ffs; - - hi_ffs = hwloc_ffs(x >> 16); - if (hi_ffs) - return hi_ffs + 16; - - return 0; -#else - return hwloc_ffs(x); -#endif -} - -/* Then make it 64 bit if longs are. */ -static __hwloc_inline int __hwloc_attribute_const -hwloc_ffsl(unsigned long x) -{ -#if HWLOC_BITS_PER_LONG == 64 - int low_ffs, hi_ffs; - - low_ffs = hwloc_ffs32(x & 0xfffffffful); - if (low_ffs) - return low_ffs; - - hi_ffs = hwloc_ffs32(x >> 32); - if (hi_ffs) - return hi_ffs + 32; - - return 0; -#else - return hwloc_ffs32(x); -#endif -} -#endif - -/** - * flsl helpers. - */ -#ifdef __GNUC_____ - -# if (__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4)) -# define hwloc_flsl(x) (x ? 8*sizeof(long) - __builtin_clzl(x) : 0) -# else -# define hwloc_fls(x) (x ? 8*sizeof(int) - __builtin_clz(x) : 0) -# define HWLOC_NEED_FLSL -# endif - -#elif defined(HWLOC_HAVE_FLSL) - -# ifndef HWLOC_HAVE_DECL_FLSL -extern int flsl(long) __hwloc_attribute_const; -# endif - -# define hwloc_flsl(x) flsl(x) - -#elif defined(HWLOC_HAVE_CLZL) - -# ifndef HWLOC_HAVE_DECL_CLZL -extern int clzl(long) __hwloc_attribute_const; -# endif - -# define hwloc_flsl(x) (x ? 8*sizeof(long) - clzl(x) : 0) - -#elif defined(HWLOC_HAVE_FLS) - -# ifndef HWLOC_HAVE_DECL_FLS -extern int fls(int) __hwloc_attribute_const; -# endif - -# define hwloc_fls(x) fls(x) -# define HWLOC_NEED_FLSL - -#elif defined(HWLOC_HAVE_CLZ) - -# ifndef HWLOC_HAVE_DECL_CLZ -extern int clz(int) __hwloc_attribute_const; -# endif - -# define hwloc_fls(x) (x ? 8*sizeof(int) - clz(x) : 0) -# define HWLOC_NEED_FLSL - -#else /* no fls implementation */ - -static __hwloc_inline int __hwloc_attribute_const -hwloc_flsl(unsigned long x) -{ - int i = 0; - - if (!x) - return 0; - - i = 1; -#if HWLOC_BITS_PER_LONG >= 64 - if ((x & 0xffffffff00000000ul)) { - x >>= 32; - i += 32; - } -#endif - if ((x & 0xffff0000u)) { - x >>= 16; - i += 16; - } - if ((x & 0xff00)) { - x >>= 8; - i += 8; - } - if ((x & 0xf0)) { - x >>= 4; - i += 4; - } - if ((x & 0xc)) { - x >>= 2; - i += 2; - } - if ((x & 0x2)) { - x >>= 1; - i += 1; - } - - return i; -} - -#endif - -#ifdef HWLOC_NEED_FLSL - -/* We only have an int fls(int) implementation, build a long one. */ - -/* First make it 32 bits if it was only 16. */ -static __hwloc_inline int __hwloc_attribute_const -hwloc_fls32(unsigned long x) -{ -#if HWLOC_BITS_PER_INT == 16 - int low_fls, hi_fls; - - hi_fls = hwloc_fls(x >> 16); - if (hi_fls) - return hi_fls + 16; - - low_fls = hwloc_fls(x & 0xfffful); - if (low_fls) - return low_fls; - - return 0; -#else - return hwloc_fls(x); -#endif -} - -/* Then make it 64 bit if longs are. */ -static __hwloc_inline int __hwloc_attribute_const -hwloc_flsl(unsigned long x) -{ -#if HWLOC_BITS_PER_LONG == 64 - int low_fls, hi_fls; - - hi_fls = hwloc_fls32(x >> 32); - if (hi_fls) - return hi_fls + 32; - - low_fls = hwloc_fls32(x & 0xfffffffful); - if (low_fls) - return low_fls; - - return 0; -#else - return hwloc_fls32(x); -#endif -} -#endif - -static __hwloc_inline int __hwloc_attribute_const -hwloc_weight_long(unsigned long w) -{ -#if HWLOC_BITS_PER_LONG == 32 -#if (__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__) >= 4) - return __builtin_popcount(w); -#else - unsigned int res = (w & 0x55555555) + ((w >> 1) & 0x55555555); - res = (res & 0x33333333) + ((res >> 2) & 0x33333333); - res = (res & 0x0F0F0F0F) + ((res >> 4) & 0x0F0F0F0F); - res = (res & 0x00FF00FF) + ((res >> 8) & 0x00FF00FF); - return (res & 0x0000FFFF) + ((res >> 16) & 0x0000FFFF); -#endif -#else /* HWLOC_BITS_PER_LONG == 32 */ -#if (__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__) >= 4) - return __builtin_popcountll(w); -#else - unsigned long res; - res = (w & 0x5555555555555555ul) + ((w >> 1) & 0x5555555555555555ul); - res = (res & 0x3333333333333333ul) + ((res >> 2) & 0x3333333333333333ul); - res = (res & 0x0F0F0F0F0F0F0F0Ful) + ((res >> 4) & 0x0F0F0F0F0F0F0F0Ful); - res = (res & 0x00FF00FF00FF00FFul) + ((res >> 8) & 0x00FF00FF00FF00FFul); - res = (res & 0x0000FFFF0000FFFFul) + ((res >> 16) & 0x0000FFFF0000FFFFul); - return (res & 0x00000000FFFFFFFFul) + ((res >> 32) & 0x00000000FFFFFFFFul); -#endif -#endif /* HWLOC_BITS_PER_LONG == 64 */ -} - - -#endif /* HWLOC_PRIVATE_MISC_H */ diff --git a/hwloc-1.2.1/include/private/private.h b/hwloc-1.2.1/include/private/private.h deleted file mode 100644 index a7c5fc9a..00000000 --- a/hwloc-1.2.1/include/private/private.h +++ /dev/null @@ -1,343 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2011 INRIA. All rights reserved. - * Copyright © 2009-2011 Université Bordeaux 1 - * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - * - * See COPYING in top-level directory. - */ - -/* Internal types and helpers. */ - -#ifndef HWLOC_PRIVATE_H -#define HWLOC_PRIVATE_H - -#include <private/autogen/config.h> -#include <hwloc.h> -#include <hwloc/bitmap.h> -#include <private/debug.h> -#include <sys/types.h> -#ifdef HAVE_STDINT_H -#include <stdint.h> -#endif - -#include <string.h> - -#ifdef HWLOC_HAVE_ATTRIBUTE_FORMAT -# if HWLOC_HAVE_ATTRIBUTE_FORMAT -# define __hwloc_attribute_format(type, str, arg) __attribute__((__format__(type, str, arg))) -# else -# define __hwloc_attribute_format(type, str, arg) -# endif -#else -# define __hwloc_attribute_format(type, str, arg) -#endif - -enum hwloc_ignore_type_e { - HWLOC_IGNORE_TYPE_NEVER = 0, - HWLOC_IGNORE_TYPE_KEEP_STRUCTURE, - HWLOC_IGNORE_TYPE_ALWAYS -}; - -#define HWLOC_DEPTH_MAX 128 - -typedef enum hwloc_backend_e { - HWLOC_BACKEND_NONE, - HWLOC_BACKEND_SYNTHETIC, -#ifdef HWLOC_LINUX_SYS - HWLOC_BACKEND_SYSFS, -#endif -#ifdef HWLOC_HAVE_XML - HWLOC_BACKEND_XML, -#endif - /* This value is only here so that we can end the enum list without - a comma (thereby preventing compiler warnings) */ - HWLOC_BACKEND_MAX -} hwloc_backend_t; - -struct hwloc_topology { - unsigned nb_levels; /* Number of horizontal levels */ - unsigned next_group_depth; /* Depth of the next Group object that we may create */ - unsigned level_nbobjects[HWLOC_DEPTH_MAX]; /* Number of objects on each horizontal level */ - struct hwloc_obj **levels[HWLOC_DEPTH_MAX]; /* Direct access to levels, levels[l = 0 .. nblevels-1][0..level_nbobjects[l]] */ - unsigned long flags; - int type_depth[HWLOC_OBJ_TYPE_MAX]; - enum hwloc_ignore_type_e ignored_types[HWLOC_OBJ_TYPE_MAX]; - int is_thissystem; - int is_loaded; - hwloc_pid_t pid; /* Process ID the topology is view from, 0 for self */ - - int (*set_thisproc_cpubind)(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags); - int (*get_thisproc_cpubind)(hwloc_topology_t topology, hwloc_cpuset_t set, int flags); - int (*set_thisthread_cpubind)(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags); - int (*get_thisthread_cpubind)(hwloc_topology_t topology, hwloc_cpuset_t set, int flags); - int (*set_proc_cpubind)(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int flags); - int (*get_proc_cpubind)(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags); -#ifdef hwloc_thread_t - int (*set_thread_cpubind)(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_const_cpuset_t set, int flags); - int (*get_thread_cpubind)(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_cpuset_t set, int flags); -#endif - - int (*get_thisproc_last_cpu_location)(hwloc_topology_t topology, hwloc_cpuset_t set, int flags); - int (*get_thisthread_last_cpu_location)(hwloc_topology_t topology, hwloc_cpuset_t set, int flags); - int (*get_proc_last_cpu_location)(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags); - - int (*set_thisproc_membind)(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags); - int (*get_thisproc_membind)(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags); - int (*set_thisthread_membind)(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags); - int (*get_thisthread_membind)(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags); - int (*set_proc_membind)(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags); - int (*get_proc_membind)(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags); - int (*set_area_membind)(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags); - int (*get_area_membind)(hwloc_topology_t topology, const void *addr, size_t len, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags); - /* This has to return the same kind of pointer as alloc_membind, so that free_membind can be used on it */ - void *(*alloc)(hwloc_topology_t topology, size_t len); - /* alloc_membind has to always succeed if !(flags & HWLOC_MEMBIND_STRICT). - * see hwloc_alloc_or_fail which is convenient for that. */ - void *(*alloc_membind)(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags); - int (*free_membind)(hwloc_topology_t topology, void *addr, size_t len); - - struct hwloc_topology_support support; - - struct hwloc_os_distances_s { - int nbobjs; - unsigned *indexes; /* array of OS indexes before we can convert them into objs. always available. - */ - struct hwloc_obj **objs; /* array of objects, in the same order as above. - * either given (by a backend) together with the indexes array above. - * or build from the above indexes array when not given (by the user). - */ - float *distances; /* distance matrices, ordered according to the above indexes/objs array. - * distance from i to j is stored in slot i*nbnodes+j. - * will be copied into the main logical-index-ordered distance at the end of the discovery. - */ - } os_distances[HWLOC_OBJ_TYPE_MAX]; - - hwloc_backend_t backend_type; - union hwloc_backend_params_u { -#ifdef HWLOC_LINUX_SYS - struct hwloc_backend_params_sysfs_s { - /* sysfs backend parameters */ - char *root_path; /* The path of the file system root, used when browsing, e.g., Linux' sysfs and procfs. */ - int root_fd; /* The file descriptor for the file system root, used when browsing, e.g., Linux' sysfs and procfs. */ - } sysfs; -#endif /* HWLOC_LINUX_SYS */ -#if defined(HWLOC_OSF_SYS) || defined(HWLOC_COMPILE_PORTS) - struct hwloc_backend_params_osf { - int nbnodes; - } osf; -#endif /* HWLOC_OSF_SYS */ -#ifdef HWLOC_HAVE_XML - struct hwloc_backend_params_xml_s { - /* xml backend parameters */ - void *doc; - } xml; -#endif /* HWLOC_HAVE_XML */ - struct hwloc_backend_params_synthetic_s { - /* synthetic backend parameters */ -#define HWLOC_SYNTHETIC_MAX_DEPTH 128 - unsigned arity[HWLOC_SYNTHETIC_MAX_DEPTH]; - hwloc_obj_type_t type[HWLOC_SYNTHETIC_MAX_DEPTH]; - unsigned id[HWLOC_SYNTHETIC_MAX_DEPTH]; - unsigned depth[HWLOC_SYNTHETIC_MAX_DEPTH]; /* For cache/misc */ - } synthetic; - } backend_params; -}; - - -extern void hwloc_setup_pu_level(struct hwloc_topology *topology, unsigned nb_pus); -extern int hwloc_get_sysctlbyname(const char *name, int64_t *n); -extern int hwloc_get_sysctl(int name[], unsigned namelen, int *n); -extern unsigned hwloc_fallback_nbprocessors(struct hwloc_topology *topology); - -#if defined(HWLOC_LINUX_SYS) -extern void hwloc_look_linux(struct hwloc_topology *topology); -extern void hwloc_set_linux_hooks(struct hwloc_topology *topology); -extern int hwloc_backend_sysfs_init(struct hwloc_topology *topology, const char *fsroot_path); -extern void hwloc_backend_sysfs_exit(struct hwloc_topology *topology); -#endif /* HWLOC_LINUX_SYS */ - -#ifdef HWLOC_HAVE_XML -extern int hwloc_backend_xml_init(struct hwloc_topology *topology, const char *xmlpath, const char *xmlbuffer, int buflen); -extern void hwloc_xml_check_distances(struct hwloc_topology *topology); -extern void hwloc_look_xml(struct hwloc_topology *topology); -extern void hwloc_backend_xml_exit(struct hwloc_topology *topology); -#endif /* HWLOC_HAVE_XML */ - -#ifdef HWLOC_SOLARIS_SYS -extern void hwloc_look_solaris(struct hwloc_topology *topology); -extern void hwloc_set_solaris_hooks(struct hwloc_topology *topology); -#endif /* HWLOC_SOLARIS_SYS */ - -#ifdef HWLOC_AIX_SYS -extern void hwloc_look_aix(struct hwloc_topology *topology); -extern void hwloc_set_aix_hooks(struct hwloc_topology *topology); -#endif /* HWLOC_AIX_SYS */ - -#ifdef HWLOC_OSF_SYS -extern void hwloc_look_osf(struct hwloc_topology *topology); -extern void hwloc_set_osf_hooks(struct hwloc_topology *topology); -#endif /* HWLOC_OSF_SYS */ - -#ifdef HWLOC_WIN_SYS -extern void hwloc_look_windows(struct hwloc_topology *topology); -extern void hwloc_set_windows_hooks(struct hwloc_topology *topology); -#endif /* HWLOC_WIN_SYS */ - -#ifdef HWLOC_DARWIN_SYS -extern void hwloc_look_darwin(struct hwloc_topology *topology); -extern void hwloc_set_darwin_hooks(struct hwloc_topology *topology); -#endif /* HWLOC_DARWIN_SYS */ - -#ifdef HWLOC_FREEBSD_SYS -extern void hwloc_look_freebsd(struct hwloc_topology *topology); -extern void hwloc_set_freebsd_hooks(struct hwloc_topology *topology); -#endif /* HWLOC_FREEBSD_SYS */ - -#ifdef HWLOC_HPUX_SYS -extern void hwloc_look_hpux(struct hwloc_topology *topology); -extern void hwloc_set_hpux_hooks(struct hwloc_topology *topology); -#endif /* HWLOC_HPUX_SYS */ - -extern void hwloc_look_x86(struct hwloc_topology *topology, unsigned nbprocs); - -extern int hwloc_backend_synthetic_init(struct hwloc_topology *topology, const char *description); -extern void hwloc_backend_synthetic_exit(struct hwloc_topology *topology); -extern void hwloc_look_synthetic (struct hwloc_topology *topology); - -/* - * Add an object to the topology. - * It is sorted along the tree of other objects according to the inclusion of - * cpusets, to eventually be added as a child of the smallest object including - * this object. - * - * If the cpuset is empty, the type of the object (and maybe some attributes) - * must be enough to find where to insert the object. This is especially true - * for NUMA nodes with memory and no CPUs. - * - * The given object should not have children. - * - * This shall only be called before levels are built. - * - * In case of error, hwloc_report_os_error() is called. - */ -extern void hwloc_insert_object_by_cpuset(struct hwloc_topology *topology, hwloc_obj_t obj); - -/* - * Add an object to the topology and specify which error callback to use - */ -typedef void (*hwloc_report_error_t)(const char * msg, int line); -extern void hwloc_report_os_error(const char * msg, int line); -extern int hwloc__insert_object_by_cpuset(struct hwloc_topology *topology, hwloc_obj_t obj, hwloc_report_error_t report_error); - -/* - * Insert an object somewhere in the topology. - * - * It is added as the last child of the given parent. - * The cpuset is completely ignored, so strange objects such as I/O devices should - * preferably be inserted with this. - * - * The given object may have children. - * - * Remember to call topology_connect() afterwards to fix handy pointers. - */ -extern void hwloc_insert_object_by_parent(struct hwloc_topology *topology, hwloc_obj_t parent, hwloc_obj_t obj); - -/* Insert name/value in the object infos array. name and value are copied by the callee. */ -extern void hwloc_add_object_info(hwloc_obj_t obj, const char *name, const char *value); - -/* Insert uname-specific names/values in the object infos array */ -extern void hwloc_add_uname_info(struct hwloc_topology *topology); - -/** \brief Return a locally-allocated stringified bitmap for printf-like calls. */ -static __hwloc_inline char * -hwloc_bitmap_printf_value(hwloc_const_bitmap_t bitmap) -{ - char *buf; - hwloc_bitmap_asprintf(&buf, bitmap); - return buf; -} - -static __hwloc_inline struct hwloc_obj * -hwloc_alloc_setup_object(hwloc_obj_type_t type, signed idx) -{ - struct hwloc_obj *obj = malloc(sizeof(*obj)); - memset(obj, 0, sizeof(*obj)); - obj->type = type; - obj->os_index = idx; - obj->os_level = -1; - obj->attr = malloc(sizeof(*obj->attr)); - memset(obj->attr, 0, sizeof(*obj->attr)); - /* do not allocate the cpuset here, let the caller do it */ - return obj; -} - -extern void hwloc_free_unlinked_object(hwloc_obj_t obj); - -#define hwloc_object_cpuset_from_array(l, _value, _array, _max) do { \ - struct hwloc_obj *__l = (l); \ - unsigned int *__a = (_array); \ - int k; \ - __l->cpuset = hwloc_bitmap_alloc(); \ - for(k=0; k<_max; k++) \ - if (__a[k] == _value) \ - hwloc_bitmap_set(__l->cpuset, k); \ - } while (0) - -/* Configures an array of NUM objects of type TYPE with physical IDs OSPHYSIDS - * and for which processors have ID PROC_PHYSIDS, and add them to the topology. - * */ -static __hwloc_inline void -hwloc_setup_level(int procid_max, unsigned num, unsigned *osphysids, unsigned *proc_physids, struct hwloc_topology *topology, hwloc_obj_type_t type) -{ - struct hwloc_obj *obj; - unsigned j; - - hwloc_debug("%d %s\n", num, hwloc_obj_type_string(type)); - - for (j = 0; j < num; j++) - { - obj = hwloc_alloc_setup_object(type, osphysids[j]); - hwloc_object_cpuset_from_array(obj, j, proc_physids, procid_max); - hwloc_debug_2args_bitmap("%s %d has cpuset %s\n", - hwloc_obj_type_string(type), - j, obj->cpuset); - hwloc_insert_object_by_cpuset(topology, obj); - } - hwloc_debug("%s", "\n"); -} - -/* This can be used for the alloc field to get allocated data that can be freed by free() */ -void *hwloc_alloc_heap(hwloc_topology_t topology, size_t len); - -/* This can be used for the alloc field to get allocated data that can be freed by munmap() */ -void *hwloc_alloc_mmap(hwloc_topology_t topology, size_t len); - -/* This can be used for the free_membind field to free data using free() */ -int hwloc_free_heap(hwloc_topology_t topology, void *addr, size_t len); - -/* This can be used for the free_membind field to free data using munmap() */ -int hwloc_free_mmap(hwloc_topology_t topology, void *addr, size_t len); - -/* Allocates unbound memory or fail, depending on whether STRICT is requested - * or not */ -static __hwloc_inline void * -hwloc_alloc_or_fail(hwloc_topology_t topology, size_t len, int flags) -{ - if (flags & HWLOC_MEMBIND_STRICT) - return NULL; - return hwloc_alloc(topology, len); -} - -extern void hwloc_topology_distances_init(struct hwloc_topology *topology); -extern void hwloc_topology_distances_clear(struct hwloc_topology *topology); -extern void hwloc_topology_distances_destroy(struct hwloc_topology *topology); -extern void hwloc_topology__set_distance_matrix(struct hwloc_topology *topology, hwloc_obj_type_t type, unsigned nbobjs, unsigned *indexes, hwloc_obj_t *objs, float *distances); -extern void hwloc_store_distances_from_env(struct hwloc_topology *topology); -extern void hwloc_convert_distances_indexes_into_objects(struct hwloc_topology *topology); -extern void hwloc_finalize_logical_distances(struct hwloc_topology *topology); -extern void hwloc_restrict_distances(struct hwloc_topology *topology, unsigned long flags); -extern void hwloc_free_logical_distances(struct hwloc_distances_s *dist); -extern void hwloc_group_by_distances(struct hwloc_topology *topology); - -#endif /* HWLOC_PRIVATE_H */ diff --git a/hwloc-1.2.1/src/Makefile.am b/hwloc-1.2.1/src/Makefile.am deleted file mode 100644 index f0994a50..00000000 --- a/hwloc-1.2.1/src/Makefile.am +++ /dev/null @@ -1,118 +0,0 @@ -# Copyright © 2009-2010 INRIA. All rights reserved. -# Copyright © 2009-2010 Université Bordeaux 1 -# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved. -# See COPYING in top-level directory. - -AM_CFLAGS = $(HWLOC_CFLAGS) -AM_CPPFLAGS = $(HWLOC_CPPFLAGS) -AM_LDFLAGS = $(HWLOC_LDFLAGS) - -EXTRA_DIST = dolib.c - -# If we're in standalone mode, build the installable library. -# Otherwise, build the embedded library. - -if HWLOC_BUILD_STANDALONE -lib_LTLIBRARIES = libhwloc.la -else -noinst_LTLIBRARIES = libhwloc_embedded.la -endif - -# Sources and ldflags - -sources = \ - topology.c \ - traversal.c \ - distances.c \ - topology-synthetic.c \ - bind.c \ - cpuset.c \ - misc.c -ldflags = - -# Conditionally add to the sources and ldflags - -if HWLOC_HAVE_XML -sources += topology-xml.c -endif HWLOC_HAVE_XML - -if HWLOC_HAVE_SOLARIS -sources += topology-solaris.c -endif HWLOC_HAVE_SOLARIS - -if HWLOC_HAVE_LINUX -sources += topology-linux.c -endif HWLOC_HAVE_LINUX - -if HWLOC_HAVE_AIX -sources += topology-aix.c -ldflags += -lpthread -endif HWLOC_HAVE_AIX - -if HWLOC_HAVE_OSF -sources += topology-osf.c -ldflags += -lnuma -lpthread -endif HWLOC_HAVE_OSF - -if HWLOC_HAVE_HPUX -sources += topology-hpux.c -ldflags += -lpthread -endif HWLOC_HAVE_HPUX - -if HWLOC_HAVE_WINDOWS -sources += topology-windows.c -endif HWLOC_HAVE_WINDOWS - -if HWLOC_HAVE_DARWIN -sources += topology-darwin.c -endif HWLOC_HAVE_DARWIN - -if HWLOC_HAVE_FREEBSD -sources += topology-freebsd.c -endif HWLOC_HAVE_FREEBSD - -if HWLOC_HAVE_GCC -ldflags += -no-undefined -endif HWLOC_HAVE_GCC - -if HWLOC_HAVE_WINDOWS -LC_MESSAGES=C -export LC_MESSAGES -ldflags += -Xlinker --output-def -Xlinker .libs/libhwloc.def - -if HWLOC_HAVE_MS_LIB -.libs/libhwloc.lib: libhwloc.la dolib - ./dolib "$(HWLOC_MS_LIB)" X86 .libs/libhwloc.def libhwloc-$(HWLOC_SOVERSION) .libs/libhwloc.lib -all-local: .libs/libhwloc.lib -endif HWLOC_HAVE_MS_LIB - -install-exec-hook: - $(INSTALL) .libs/libhwloc.def $(DESTDIR)$(libdir) -if HWLOC_HAVE_MS_LIB - $(INSTALL) .libs/libhwloc.lib $(DESTDIR)$(libdir) - $(INSTALL) .libs/libhwloc.exp $(DESTDIR)$(libdir) -endif HWLOC_HAVE_MS_LIB -endif HWLOC_HAVE_WINDOWS - -if HWLOC_HAVE_CPUID -sources += topology-x86.c -endif HWLOC_HAVE_CPUID - -# Installable library - -libhwloc_la_SOURCES = $(sources) -libhwloc_la_LDFLAGS = $(ldflags) -version-number $(libhwloc_so_version) $(HWLOC_XML_LIBS) $(HWLOC_LINUX_LIBNUMA_LIBS) - -# Embedded library (note the lack of a .so version number -- that -# intentionally only appears in the installable library) - -libhwloc_embedded_la_SOURCES = $(sources) -libhwloc_embedded_la_LDFLAGS = $(ldflags) $(HWLOC_XML_LIBS) $(HWLOC_LINUX_LIBNUMA_LIBS) - -# XML data (only install if we're building in standalone mode) - -if HWLOC_BUILD_STANDALONE -xml_DATA = $(srcdir)/hwloc.dtd -xmldir = $(pkgdatadir) -EXTRA_DIST += hwloc.dtd -endif diff --git a/hwloc-1.2.1/src/Makefile.in b/hwloc-1.2.1/src/Makefile.in deleted file mode 100644 index 8e5945b1..00000000 --- a/hwloc-1.2.1/src/Makefile.in +++ /dev/null @@ -1,702 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Copyright © 2009-2010 INRIA. All rights reserved. -# Copyright © 2009-2010 Université Bordeaux 1 -# Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved. -# See COPYING in top-level directory. - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ - -# Conditionally add to the sources and ldflags -@HWLOC_HAVE_XML_TRUE@am__append_1 = topology-xml.c -@HWLOC_HAVE_SOLARIS_TRUE@am__append_2 = topology-solaris.c -@HWLOC_HAVE_LINUX_TRUE@am__append_3 = topology-linux.c -@HWLOC_HAVE_AIX_TRUE@am__append_4 = topology-aix.c -@HWLOC_HAVE_AIX_TRUE@am__append_5 = -lpthread -@HWLOC_HAVE_OSF_TRUE@am__append_6 = topology-osf.c -@HWLOC_HAVE_OSF_TRUE@am__append_7 = -lnuma -lpthread -@HWLOC_HAVE_HPUX_TRUE@am__append_8 = topology-hpux.c -@HWLOC_HAVE_HPUX_TRUE@am__append_9 = -lpthread -@HWLOC_HAVE_WINDOWS_TRUE@am__append_10 = topology-windows.c -@HWLOC_HAVE_DARWIN_TRUE@am__append_11 = topology-darwin.c -@HWLOC_HAVE_FREEBSD_TRUE@am__append_12 = topology-freebsd.c -@HWLOC_HAVE_GCC_TRUE@am__append_13 = -no-undefined -@HWLOC_HAVE_WINDOWS_TRUE@am__append_14 = -Xlinker --output-def -Xlinker .libs/libhwloc.def -@HWLOC_HAVE_CPUID_TRUE@am__append_15 = topology-x86.c -@HWLOC_BUILD_STANDALONE_TRUE@am__append_16 = hwloc.dtd -subdir = hwloc-1.2.1/src -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/hwloc-1.2.1/config/hwloc_check_attributes.m4 \ - $(top_srcdir)/hwloc-1.2.1/config/hwloc_check_visibility.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/hwloc-1.2.1/config/hwloc.m4 \ - $(top_srcdir)/hwloc-1.2.1/config/hwloc_pkg.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h \ - $(top_builddir)/hwloc-1.2.1/include/private/autogen/config.h \ - $(top_builddir)/hwloc-1.2.1/include/hwloc/autogen/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(xmldir)" -LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) -libhwloc_la_LIBADD = -am__libhwloc_la_SOURCES_DIST = topology.c traversal.c distances.c \ - topology-synthetic.c bind.c cpuset.c misc.c topology-xml.c \ - topology-solaris.c topology-linux.c topology-aix.c \ - topology-osf.c topology-hpux.c topology-windows.c \ - topology-darwin.c topology-freebsd.c topology-x86.c -@HWLOC_HAVE_XML_TRUE@am__objects_1 = topology-xml.lo -@HWLOC_HAVE_SOLARIS_TRUE@am__objects_2 = topology-solaris.lo -@HWLOC_HAVE_LINUX_TRUE@am__objects_3 = topology-linux.lo -@HWLOC_HAVE_AIX_TRUE@am__objects_4 = topology-aix.lo -@HWLOC_HAVE_OSF_TRUE@am__objects_5 = topology-osf.lo -@HWLOC_HAVE_HPUX_TRUE@am__objects_6 = topology-hpux.lo -@HWLOC_HAVE_WINDOWS_TRUE@am__objects_7 = topology-windows.lo -@HWLOC_HAVE_DARWIN_TRUE@am__objects_8 = topology-darwin.lo -@HWLOC_HAVE_FREEBSD_TRUE@am__objects_9 = topology-freebsd.lo -@HWLOC_HAVE_CPUID_TRUE@am__objects_10 = topology-x86.lo -am__objects_11 = topology.lo traversal.lo distances.lo \ - topology-synthetic.lo bind.lo cpuset.lo misc.lo \ - $(am__objects_1) $(am__objects_2) $(am__objects_3) \ - $(am__objects_4) $(am__objects_5) $(am__objects_6) \ - $(am__objects_7) $(am__objects_8) $(am__objects_9) \ - $(am__objects_10) -am_libhwloc_la_OBJECTS = $(am__objects_11) -libhwloc_la_OBJECTS = $(am_libhwloc_la_OBJECTS) -libhwloc_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libhwloc_la_LDFLAGS) $(LDFLAGS) -o $@ -@HWLOC_BUILD_STANDALONE_TRUE@am_libhwloc_la_rpath = -rpath $(libdir) -libhwloc_embedded_la_LIBADD = -am__libhwloc_embedded_la_SOURCES_DIST = topology.c traversal.c \ - distances.c topology-synthetic.c bind.c cpuset.c misc.c \ - topology-xml.c topology-solaris.c topology-linux.c \ - topology-aix.c topology-osf.c topology-hpux.c \ - topology-windows.c topology-darwin.c topology-freebsd.c \ - topology-x86.c -am_libhwloc_embedded_la_OBJECTS = $(am__objects_11) -libhwloc_embedded_la_OBJECTS = $(am_libhwloc_embedded_la_OBJECTS) -libhwloc_embedded_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libhwloc_embedded_la_LDFLAGS) $(LDFLAGS) -o $@ -@HWLOC_BUILD_STANDALONE_FALSE@am_libhwloc_embedded_la_rpath = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -I$(top_builddir)/hwloc-1.2.1/include/private/autogen -I$(top_builddir)/hwloc-1.2.1/include/hwloc/autogen -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libhwloc_la_SOURCES) $(libhwloc_embedded_la_SOURCES) -DIST_SOURCES = $(am__libhwloc_la_SOURCES_DIST) \ - $(am__libhwloc_embedded_la_SOURCES_DIST) -DATA = $(xml_DATA) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BASH = @BASH@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -HWLOC_CFLAGS = @HWLOC_CFLAGS@ -HWLOC_CPPFLAGS = @HWLOC_CPPFLAGS@ -HWLOC_EMBEDDED_CFLAGS = @HWLOC_EMBEDDED_CFLAGS@ -HWLOC_EMBEDDED_CPPFLAGS = @HWLOC_EMBEDDED_CPPFLAGS@ -HWLOC_EMBEDDED_LDADD = @HWLOC_EMBEDDED_LDADD@ -HWLOC_EMBEDDED_LIBS = @HWLOC_EMBEDDED_LIBS@ -HWLOC_HAVE_XML = @HWLOC_HAVE_XML@ -HWLOC_KERRIGHED_CFLAGS = @HWLOC_KERRIGHED_CFLAGS@ -HWLOC_KERRIGHED_LIBS = @HWLOC_KERRIGHED_LIBS@ -HWLOC_LDFLAGS = @HWLOC_LDFLAGS@ -HWLOC_LIBS = @HWLOC_LIBS@ -HWLOC_LINUX_LIBNUMA_LIBS = @HWLOC_LINUX_LIBNUMA_LIBS@ -HWLOC_MS_LIB = @HWLOC_MS_LIB@ -HWLOC_PKG_CONFIG = @HWLOC_PKG_CONFIG@ -HWLOC_REQUIRES = @HWLOC_REQUIRES@ -HWLOC_XML_CFLAGS = @HWLOC_XML_CFLAGS@ -HWLOC_XML_LIBS = @HWLOC_XML_LIBS@ -HWLOC_top_builddir = @HWLOC_top_builddir@ -HWLOC_top_srcdir = @HWLOC_top_srcdir@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AM_CFLAGS = $(HWLOC_CFLAGS) -AM_CPPFLAGS = $(HWLOC_CPPFLAGS) -AM_LDFLAGS = $(HWLOC_LDFLAGS) -EXTRA_DIST = dolib.c $(am__append_16) - -# If we're in standalone mode, build the installable library. -# Otherwise, build the embedded library. -@HWLOC_BUILD_STANDALONE_TRUE@lib_LTLIBRARIES = libhwloc.la -@HWLOC_BUILD_STANDALONE_FALSE@noinst_LTLIBRARIES = libhwloc_embedded.la - -# Sources and ldflags -sources = topology.c traversal.c distances.c topology-synthetic.c \ - bind.c cpuset.c misc.c $(am__append_1) $(am__append_2) \ - $(am__append_3) $(am__append_4) $(am__append_6) \ - $(am__append_8) $(am__append_10) $(am__append_11) \ - $(am__append_12) $(am__append_15) -ldflags = $(am__append_5) $(am__append_7) $(am__append_9) \ - $(am__append_13) $(am__append_14) -@HWLOC_HAVE_WINDOWS_TRUE@LC_MESSAGES = C - -# Installable library -libhwloc_la_SOURCES = $(sources) -libhwloc_la_LDFLAGS = $(ldflags) -version-number $(libhwloc_so_version) $(HWLOC_XML_LIBS) $(HWLOC_LINUX_LIBNUMA_LIBS) - -# Embedded library (note the lack of a .so version number -- that -# intentionally only appears in the installable library) -libhwloc_embedded_la_SOURCES = $(sources) -libhwloc_embedded_la_LDFLAGS = $(ldflags) $(HWLOC_XML_LIBS) $(HWLOC_LINUX_LIBNUMA_LIBS) - -# XML data (only install if we're building in standalone mode) -@HWLOC_BUILD_STANDALONE_TRUE@xml_DATA = $(srcdir)/hwloc.dtd -@HWLOC_BUILD_STANDALONE_TRUE@xmldir = $(pkgdatadir) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu hwloc-1.2.1/src/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu hwloc-1.2.1/src/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libhwloc.la: $(libhwloc_la_OBJECTS) $(libhwloc_la_DEPENDENCIES) - $(libhwloc_la_LINK) $(am_libhwloc_la_rpath) $(libhwloc_la_OBJECTS) $(libhwloc_la_LIBADD) $(LIBS) -libhwloc_embedded.la: $(libhwloc_embedded_la_OBJECTS) $(libhwloc_embedded_la_DEPENDENCIES) - $(libhwloc_embedded_la_LINK) $(am_libhwloc_embedded_la_rpath) $(libhwloc_embedded_la_OBJECTS) $(libhwloc_embedded_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bind.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpuset.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/distances.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topology-aix.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topology-darwin.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topology-freebsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topology-hpux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topology-linux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topology-osf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topology-solaris.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topology-synthetic.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topology-windows.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topology-x86.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topology-xml.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/topology.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/traversal.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-xmlDATA: $(xml_DATA) - @$(NORMAL_INSTALL) - test -z "$(xmldir)" || $(MKDIR_P) "$(DESTDIR)$(xmldir)" - @list='$(xml_DATA)'; test -n "$(xmldir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(xmldir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(xmldir)" || exit $$?; \ - done - -uninstall-xmlDATA: - @$(NORMAL_UNINSTALL) - @list='$(xml_DATA)'; test -n "$(xmldir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(xmldir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(xmldir)" && rm -f $$files - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -@HWLOC_HAVE_MS_LIB_FALSE@all-local: -@HWLOC_HAVE_WINDOWS_FALSE@all-local: -all-am: Makefile $(LTLIBRARIES) $(DATA) all-local -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(xmldir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -@HWLOC_HAVE_WINDOWS_FALSE@install-exec-hook: -clean: clean-am - -clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ - clean-noinstLTLIBRARIES mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-xmlDATA - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-libLTLIBRARIES - @$(NORMAL_INSTALL) - $(MAKE) $(AM_MAKEFLAGS) install-exec-hook -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-libLTLIBRARIES uninstall-xmlDATA - -.MAKE: install-am install-exec-am install-strip - -.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \ - clean-generic clean-libLTLIBRARIES clean-libtool \ - clean-noinstLTLIBRARIES ctags distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-exec-hook install-html \ - install-html-am install-info install-info-am \ - install-libLTLIBRARIES install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip install-xmlDATA \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-libLTLIBRARIES \ - uninstall-xmlDATA - -@HWLOC_HAVE_WINDOWS_TRUE@export LC_MESSAGES - -@HWLOC_HAVE_MS_LIB_TRUE@@HWLOC_HAVE_WINDOWS_TRUE@.libs/libhwloc.lib: libhwloc.la dolib -@HWLOC_HAVE_MS_LIB_TRUE@@HWLOC_HAVE_WINDOWS_TRUE@ ./dolib "$(HWLOC_MS_LIB)" X86 .libs/libhwloc.def libhwloc-$(HWLOC_SOVERSION) .libs/libhwloc.lib -@HWLOC_HAVE_MS_LIB_TRUE@@HWLOC_HAVE_WINDOWS_TRUE@all-local: .libs/libhwloc.lib - -@HWLOC_HAVE_WINDOWS_TRUE@install-exec-hook: -@HWLOC_HAVE_WINDOWS_TRUE@ $(INSTALL) .libs/libhwloc.def $(DESTDIR)$(libdir) -@HWLOC_HAVE_MS_LIB_TRUE@@HWLOC_HAVE_WINDOWS_TRUE@ $(INSTALL) .libs/libhwloc.lib $(DESTDIR)$(libdir) -@HWLOC_HAVE_MS_LIB_TRUE@@HWLOC_HAVE_WINDOWS_TRUE@ $(INSTALL) .libs/libhwloc.exp $(DESTDIR)$(libdir) - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/hwloc-1.2.1/src/bind.c b/hwloc-1.2.1/src/bind.c deleted file mode 100644 index 745cdade..00000000 --- a/hwloc-1.2.1/src/bind.c +++ /dev/null @@ -1,552 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2011 INRIA. All rights reserved. - * Copyright © 2009-2010 Université Bordeaux 1 - * Copyright © 2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -#include <private/autogen/config.h> -#include <hwloc.h> -#include <private/private.h> -#include <hwloc/helper.h> -#ifdef HAVE_SYS_MMAN_H -# include <sys/mman.h> -#endif -#ifdef HAVE_MALLOC_H -# include <malloc.h> -#endif - -#include <unistd.h> -#include <stdlib.h> -#include <errno.h> - -/* TODO: HWLOC_GNU_SYS, HWLOC_IRIX_SYS, - * - * IRIX: see MP_MUSTRUN / _DSM_MUSTRUN, pthread_setrunon_np, /hw, procss_cpulink, numa_create - * - * We could use glibc's sched_setaffinity generically when it is available - * - * Darwin and OpenBSD don't seem to have binding facilities. - */ - -static hwloc_const_bitmap_t -hwloc_fix_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t set) -{ - hwloc_const_bitmap_t topology_set = hwloc_topology_get_topology_cpuset(topology); - hwloc_const_bitmap_t complete_set = hwloc_topology_get_complete_cpuset(topology); - - if (!topology_set) { - /* The topology is composed of several systems, the cpuset is ambiguous. */ - errno = EXDEV; - return NULL; - } - - if (hwloc_bitmap_iszero(set)) { - errno = EINVAL; - return NULL; - } - - if (!hwloc_bitmap_isincluded(set, complete_set)) { - errno = EINVAL; - return NULL; - } - - if (hwloc_bitmap_isincluded(topology_set, set)) - set = complete_set; - - return set; -} - -int -hwloc_set_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t set, int flags) -{ - set = hwloc_fix_cpubind(topology, set); - if (!set) - return -1; - - if (flags & HWLOC_CPUBIND_PROCESS) { - if (topology->set_thisproc_cpubind) - return topology->set_thisproc_cpubind(topology, set, flags); - } else if (flags & HWLOC_CPUBIND_THREAD) { - if (topology->set_thisthread_cpubind) - return topology->set_thisthread_cpubind(topology, set, flags); - } else { - if (topology->set_thisproc_cpubind) - return topology->set_thisproc_cpubind(topology, set, flags); - else if (topology->set_thisthread_cpubind) - return topology->set_thisthread_cpubind(topology, set, flags); - } - - errno = ENOSYS; - return -1; -} - -int -hwloc_get_cpubind(hwloc_topology_t topology, hwloc_bitmap_t set, int flags) -{ - if (flags & HWLOC_CPUBIND_PROCESS) { - if (topology->get_thisproc_cpubind) - return topology->get_thisproc_cpubind(topology, set, flags); - } else if (flags & HWLOC_CPUBIND_THREAD) { - if (topology->get_thisthread_cpubind) - return topology->get_thisthread_cpubind(topology, set, flags); - } else { - if (topology->get_thisproc_cpubind) - return topology->get_thisproc_cpubind(topology, set, flags); - else if (topology->get_thisthread_cpubind) - return topology->get_thisthread_cpubind(topology, set, flags); - } - - errno = ENOSYS; - return -1; -} - -int -hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t set, int flags) -{ - set = hwloc_fix_cpubind(topology, set); - if (!set) - return -1; - - if (topology->set_proc_cpubind) - return topology->set_proc_cpubind(topology, pid, set, flags); - - errno = ENOSYS; - return -1; -} - -int -hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t set, int flags) -{ - if (topology->get_proc_cpubind) - return topology->get_proc_cpubind(topology, pid, set, flags); - - errno = ENOSYS; - return -1; -} - -#ifdef hwloc_thread_t -int -hwloc_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_const_bitmap_t set, int flags) -{ - set = hwloc_fix_cpubind(topology, set); - if (!set) - return -1; - - if (topology->set_thread_cpubind) - return topology->set_thread_cpubind(topology, tid, set, flags); - - errno = ENOSYS; - return -1; -} - -int -hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_bitmap_t set, int flags) -{ - if (topology->get_thread_cpubind) - return topology->get_thread_cpubind(topology, tid, set, flags); - - errno = ENOSYS; - return -1; -} -#endif - -int -hwloc_get_last_cpu_location(hwloc_topology_t topology, hwloc_bitmap_t set, int flags) -{ - if (flags & HWLOC_CPUBIND_PROCESS) { - if (topology->get_thisproc_last_cpu_location) - return topology->get_thisproc_last_cpu_location(topology, set, flags); - } else if (flags & HWLOC_CPUBIND_THREAD) { - if (topology->get_thisthread_last_cpu_location) - return topology->get_thisthread_last_cpu_location(topology, set, flags); - } else { - if (topology->get_thisproc_last_cpu_location) - return topology->get_thisproc_last_cpu_location(topology, set, flags); - else if (topology->get_thisthread_last_cpu_location) - return topology->get_thisthread_last_cpu_location(topology, set, flags); - } - - errno = ENOSYS; - return -1; -} - -int -hwloc_get_proc_last_cpu_location(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t set, int flags) -{ - if (topology->get_proc_last_cpu_location) - return topology->get_proc_last_cpu_location(topology, pid, set, flags); - - errno = ENOSYS; - return -1; -} - -static hwloc_const_nodeset_t -hwloc_fix_membind(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset) -{ - hwloc_const_bitmap_t topology_nodeset = hwloc_topology_get_topology_nodeset(topology); - hwloc_const_bitmap_t complete_nodeset = hwloc_topology_get_complete_nodeset(topology); - - if (!hwloc_topology_get_topology_cpuset(topology)) { - /* The topology is composed of several systems, the nodeset is thus - * ambiguous. */ - errno = EXDEV; - return NULL; - } - - if (!complete_nodeset) { - /* There is no NUMA node */ - errno = ENODEV; - return NULL; - } - - if (hwloc_bitmap_iszero(nodeset)) { - errno = EINVAL; - return NULL; - } - - if (!hwloc_bitmap_isincluded(nodeset, complete_nodeset)) { - errno = EINVAL; - return NULL; - } - - if (hwloc_bitmap_isincluded(topology_nodeset, nodeset)) - return complete_nodeset; - - return nodeset; -} - -static int -hwloc_fix_membind_cpuset(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_const_cpuset_t cpuset) -{ - hwloc_const_bitmap_t topology_set = hwloc_topology_get_topology_cpuset(topology); - hwloc_const_bitmap_t complete_set = hwloc_topology_get_complete_cpuset(topology); - hwloc_const_bitmap_t complete_nodeset = hwloc_topology_get_complete_nodeset(topology); - - if (!topology_set) { - /* The topology is composed of several systems, the cpuset is thus - * ambiguous. */ - errno = EXDEV; - return -1; - } - - if (!complete_nodeset) { - /* There is no NUMA node */ - errno = ENODEV; - return -1; - } - - if (hwloc_bitmap_iszero(cpuset)) { - errno = EINVAL; - return -1; - } - - if (!hwloc_bitmap_isincluded(cpuset, complete_set)) { - errno = EINVAL; - return -1; - } - - if (hwloc_bitmap_isincluded(topology_set, cpuset)) { - hwloc_bitmap_copy(nodeset, complete_nodeset); - return 0; - } - - hwloc_cpuset_to_nodeset(topology, cpuset, nodeset); - return 0; -} - -int -hwloc_set_membind_nodeset(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - nodeset = hwloc_fix_membind(topology, nodeset); - if (!nodeset) - return -1; - - if (flags & HWLOC_MEMBIND_PROCESS) { - if (topology->set_thisproc_membind) - return topology->set_thisproc_membind(topology, nodeset, policy, flags); - } else if (flags & HWLOC_MEMBIND_THREAD) { - if (topology->set_thisthread_membind) - return topology->set_thisthread_membind(topology, nodeset, policy, flags); - } else { - if (topology->set_thisproc_membind) - return topology->set_thisproc_membind(topology, nodeset, policy, flags); - else if (topology->set_thisthread_membind) - return topology->set_thisthread_membind(topology, nodeset, policy, flags); - } - - errno = ENOSYS; - return -1; -} - -int -hwloc_set_membind(hwloc_topology_t topology, hwloc_const_cpuset_t set, hwloc_membind_policy_t policy, int flags) -{ - hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); - int ret; - - if (hwloc_fix_membind_cpuset(topology, nodeset, set)) - ret = -1; - else - ret = hwloc_set_membind_nodeset(topology, nodeset, policy, flags); - - hwloc_bitmap_free(nodeset); - return ret; -} - -int -hwloc_get_membind_nodeset(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags) -{ - if (flags & HWLOC_MEMBIND_PROCESS) { - if (topology->get_thisproc_membind) - return topology->get_thisproc_membind(topology, nodeset, policy, flags); - } else if (flags & HWLOC_MEMBIND_THREAD) { - if (topology->get_thisthread_membind) - return topology->get_thisthread_membind(topology, nodeset, policy, flags); - } else { - if (topology->get_thisproc_membind) - return topology->get_thisproc_membind(topology, nodeset, policy, flags); - else if (topology->get_thisthread_membind) - return topology->get_thisthread_membind(topology, nodeset, policy, flags); - } - - errno = ENOSYS; - return -1; -} - -int -hwloc_get_membind(hwloc_topology_t topology, hwloc_cpuset_t set, hwloc_membind_policy_t * policy, int flags) -{ - hwloc_nodeset_t nodeset; - int ret; - - nodeset = hwloc_bitmap_alloc(); - ret = hwloc_get_membind_nodeset(topology, nodeset, policy, flags); - - if (!ret) - hwloc_cpuset_from_nodeset(topology, set, nodeset); - - return ret; -} - -int -hwloc_set_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - nodeset = hwloc_fix_membind(topology, nodeset); - if (!nodeset) - return -1; - - if (topology->set_proc_membind) - return topology->set_proc_membind(topology, pid, nodeset, policy, flags); - - errno = ENOSYS; - return -1; -} - - -int -hwloc_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, hwloc_membind_policy_t policy, int flags) -{ - hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); - int ret; - - if (hwloc_fix_membind_cpuset(topology, nodeset, set)) - ret = -1; - else - ret = hwloc_set_proc_membind_nodeset(topology, pid, nodeset, policy, flags); - - hwloc_bitmap_free(nodeset); - return ret; -} - -int -hwloc_get_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags) -{ - if (topology->get_proc_membind) - return topology->get_proc_membind(topology, pid, nodeset, policy, flags); - - errno = ENOSYS; - return -1; -} - -int -hwloc_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, hwloc_membind_policy_t * policy, int flags) -{ - hwloc_nodeset_t nodeset; - int ret; - - nodeset = hwloc_bitmap_alloc(); - ret = hwloc_get_proc_membind_nodeset(topology, pid, nodeset, policy, flags); - - if (!ret) - hwloc_cpuset_from_nodeset(topology, set, nodeset); - - return ret; -} - -int -hwloc_set_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - nodeset = hwloc_fix_membind(topology, nodeset); - if (!nodeset) - return -1; - - if (topology->set_area_membind) - return topology->set_area_membind(topology, addr, len, nodeset, policy, flags); - - errno = ENOSYS; - return -1; -} - -int -hwloc_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_cpuset_t set, hwloc_membind_policy_t policy, int flags) -{ - hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); - int ret; - - if (hwloc_fix_membind_cpuset(topology, nodeset, set)) - ret = -1; - else - ret = hwloc_set_area_membind_nodeset(topology, addr, len, nodeset, policy, flags); - - hwloc_bitmap_free(nodeset); - return ret; -} - -int -hwloc_get_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags) -{ - if (topology->get_area_membind) - return topology->get_area_membind(topology, addr, len, nodeset, policy, flags); - - errno = ENOSYS; - return -1; -} - -int -hwloc_get_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_cpuset_t set, hwloc_membind_policy_t * policy, int flags) -{ - hwloc_nodeset_t nodeset; - int ret; - - nodeset = hwloc_bitmap_alloc(); - ret = hwloc_get_area_membind_nodeset(topology, addr, len, nodeset, policy, flags); - - if (!ret) - hwloc_cpuset_from_nodeset(topology, set, nodeset); - - return ret; -} - -void * -hwloc_alloc_heap(hwloc_topology_t topology __hwloc_attribute_unused, size_t len) -{ - void *p; -#if defined(HAVE_GETPAGESIZE) && defined(HAVE_POSIX_MEMALIGN) - errno = posix_memalign(&p, getpagesize(), len); - if (errno) - p = NULL; -#elif defined(HAVE_GETPAGESIZE) && defined(HAVE_MEMALIGN) - p = memalign(getpagesize(), len); -#else - p = malloc(len); -#endif - return p; -} - -#ifdef MAP_ANONYMOUS -void * -hwloc_alloc_mmap(hwloc_topology_t topology __hwloc_attribute_unused, size_t len) -{ - return mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); -} -#endif - -int -hwloc_free_heap(hwloc_topology_t topology __hwloc_attribute_unused, void *addr, size_t len __hwloc_attribute_unused) -{ - free(addr); - return 0; -} - -#ifdef MAP_ANONYMOUS -int -hwloc_free_mmap(hwloc_topology_t topology __hwloc_attribute_unused, void *addr, size_t len) -{ - if (!addr) - return 0; - return munmap(addr, len); -} -#endif - -void * -hwloc_alloc(hwloc_topology_t topology, size_t len) -{ - if (topology->alloc) - return topology->alloc(topology, len); - return hwloc_alloc_heap(topology, len); -} - -void * -hwloc_alloc_membind_nodeset(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - void *p; - nodeset = hwloc_fix_membind(topology, nodeset); - if (!nodeset) - goto fallback; - if (flags & HWLOC_MEMBIND_MIGRATE) { - errno = EINVAL; - goto fallback; - } - - if (topology->alloc_membind) - return topology->alloc_membind(topology, len, nodeset, policy, flags); - else if (topology->set_area_membind) { - p = hwloc_alloc(topology, len); - if (!p) - return NULL; - if (topology->set_area_membind(topology, p, len, nodeset, policy, flags) && flags & HWLOC_MEMBIND_STRICT) { - int error = errno; - free(p); - errno = error; - return NULL; - } - return p; - } else { - errno = ENOSYS; - } - -fallback: - if (flags & HWLOC_MEMBIND_STRICT) - /* Report error */ - return NULL; - /* Never mind, allocate anyway */ - return hwloc_alloc(topology, len); -} - -void * -hwloc_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_cpuset_t set, hwloc_membind_policy_t policy, int flags) -{ - hwloc_nodeset_t nodeset = hwloc_bitmap_alloc(); - void *ret; - - if (!hwloc_fix_membind_cpuset(topology, nodeset, set)) { - if (flags & HWLOC_MEMBIND_STRICT) - ret = NULL; - else - ret = hwloc_alloc(topology, len); - } else - ret = hwloc_alloc_membind_nodeset(topology, len, nodeset, policy, flags); - - hwloc_bitmap_free(nodeset); - return ret; -} - -int -hwloc_free(hwloc_topology_t topology, void *addr, size_t len) -{ - if (topology->free_membind) - return topology->free_membind(topology, addr, len); - return hwloc_free_heap(topology, addr, len); -} diff --git a/hwloc-1.2.1/src/cpuset.c b/hwloc-1.2.1/src/cpuset.c deleted file mode 100644 index 05887847..00000000 --- a/hwloc-1.2.1/src/cpuset.c +++ /dev/null @@ -1,1267 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2011 INRIA. All rights reserved. - * Copyright © 2009-2011 Université Bordeaux 1 - * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/* cpuset.h converts from the old cpuset API to the new bitmap API, we don't want it here */ -#ifndef HWLOC_CPUSET_H -/* make sure cpuset.h will not be automatically included here */ -#define HWLOC_CPUSET_H 1 -#else -#error Do not include cpuset.h in cpuset.c -#endif - -#include <private/autogen/config.h> -#include <private/misc.h> -#include <private/private.h> -#include <hwloc/bitmap.h> - -#include <stdarg.h> -#include <stdio.h> -#include <assert.h> -#include <errno.h> -#include <ctype.h> - -/* TODO - * - have a way to change the initial allocation size - * - preallocate inside the bitmap structure (so that the whole structure is a cacheline for instance) - * and allocate a dedicated array only later when reallocating larger - */ - -/* magic number */ -#define HWLOC_BITMAP_MAGIC 0x20091007 - -/* actual opaque type internals */ -struct hwloc_bitmap_s { - unsigned ulongs_count; /* how many ulong bitmasks are valid, >= 1 */ - unsigned ulongs_allocated; /* how many ulong bitmasks are allocated, >= ulongs_count */ - unsigned long *ulongs; - int infinite; /* set to 1 if all bits beyond ulongs are set */ -#ifdef HWLOC_DEBUG - int magic; -#endif -}; - -/* overzealous check in debug-mode, not as powerful as valgrind but still useful */ -#ifdef HWLOC_DEBUG -#define HWLOC__BITMAP_CHECK(set) do { \ - assert((set)->magic == HWLOC_BITMAP_MAGIC); \ - assert((set)->ulongs_count >= 1); \ - assert((set)->ulongs_allocated >= (set)->ulongs_count); \ -} while (0) -#else -#define HWLOC__BITMAP_CHECK(set) -#endif - -/* extract a subset from a set using an index or a cpu */ -#define HWLOC_SUBBITMAP_INDEX(cpu) ((cpu)/(HWLOC_BITS_PER_LONG)) -#define HWLOC_SUBBITMAP_CPU_ULBIT(cpu) ((cpu)%(HWLOC_BITS_PER_LONG)) -/* Read from a bitmap ulong without knowing whether x is valid. - * Writers should make sure that x is valid and modify set->ulongs[x] directly. - */ -#define HWLOC_SUBBITMAP_READULONG(set,x) ((x) < (set)->ulongs_count ? (set)->ulongs[x] : (set)->infinite ? HWLOC_SUBBITMAP_FULL : HWLOC_SUBBITMAP_ZERO) - -/* predefined subset values */ -#define HWLOC_SUBBITMAP_ZERO 0UL -#define HWLOC_SUBBITMAP_FULL (~0UL) -#define HWLOC_SUBBITMAP_ULBIT(bit) (1UL<<(bit)) -#define HWLOC_SUBBITMAP_CPU(cpu) HWLOC_SUBBITMAP_ULBIT(HWLOC_SUBBITMAP_CPU_ULBIT(cpu)) -#define HWLOC_SUBBITMAP_ULBIT_TO(bit) (HWLOC_SUBBITMAP_FULL>>(HWLOC_BITS_PER_LONG-1-(bit))) -#define HWLOC_SUBBITMAP_ULBIT_FROM(bit) (HWLOC_SUBBITMAP_FULL<<(bit)) -#define HWLOC_SUBBITMAP_ULBIT_FROMTO(begin,end) (HWLOC_SUBBITMAP_ULBIT_TO(end) & HWLOC_SUBBITMAP_ULBIT_FROM(begin)) - -struct hwloc_bitmap_s * hwloc_bitmap_alloc(void) -{ - struct hwloc_bitmap_s * set; - - set = malloc(sizeof(struct hwloc_bitmap_s)); - if (!set) - return NULL; - - set->ulongs_count = 1; - set->ulongs_allocated = 64/sizeof(unsigned long); - set->ulongs = malloc(64); - if (!set->ulongs) { - free(set); - return NULL; - } - - set->ulongs[0] = HWLOC_SUBBITMAP_ZERO; - set->infinite = 0; -#ifdef HWLOC_DEBUG - set->magic = HWLOC_BITMAP_MAGIC; -#endif - return set; -} - -struct hwloc_bitmap_s * hwloc_bitmap_alloc_full(void) -{ - struct hwloc_bitmap_s * set = hwloc_bitmap_alloc(); - if (set) { - set->infinite = 1; - set->ulongs[0] = HWLOC_SUBBITMAP_FULL; - } - return set; -} - -void hwloc_bitmap_free(struct hwloc_bitmap_s * set) -{ - if (!set) - return; - - HWLOC__BITMAP_CHECK(set); -#ifdef HWLOC_DEBUG - set->magic = 0; -#endif - - free(set->ulongs); - free(set); -} - -/* enlarge until it contains at least needed_count ulongs. - */ -static void -hwloc_bitmap_enlarge_by_ulongs(struct hwloc_bitmap_s * set, unsigned needed_count) -{ - unsigned tmp = 1 << hwloc_flsl((unsigned long) needed_count - 1); - if (tmp > set->ulongs_allocated) { - set->ulongs = realloc(set->ulongs, tmp * sizeof(unsigned long)); - assert(set->ulongs); - set->ulongs_allocated = tmp; - } -} - -/* enlarge until it contains at least needed_count ulongs, - * and update new ulongs according to the infinite field. - */ -static void -hwloc_bitmap_realloc_by_ulongs(struct hwloc_bitmap_s * set, unsigned needed_count) -{ - unsigned i; - - HWLOC__BITMAP_CHECK(set); - - if (needed_count <= set->ulongs_count) - return; - - /* realloc larger if needed */ - hwloc_bitmap_enlarge_by_ulongs(set, needed_count); - - /* fill the newly allocated subset depending on the infinite flag */ - for(i=set->ulongs_count; i<needed_count; i++) - set->ulongs[i] = set->infinite ? HWLOC_SUBBITMAP_FULL : HWLOC_SUBBITMAP_ZERO; - set->ulongs_count = needed_count; -} - -/* realloc until it contains at least cpu+1 bits */ -#define hwloc_bitmap_realloc_by_cpu_index(set, cpu) hwloc_bitmap_realloc_by_ulongs(set, ((cpu)/HWLOC_BITS_PER_LONG)+1) - -/* reset a bitmap to exactely the needed size. - * the caller must reinitialize all ulongs and the infinite flag later. - */ -static void -hwloc_bitmap_reset_by_ulongs(struct hwloc_bitmap_s * set, unsigned needed_count) -{ - hwloc_bitmap_enlarge_by_ulongs(set, needed_count); - set->ulongs_count = needed_count; -} - -/* reset until it contains exactly cpu+1 bits (roundup to a ulong). - * the caller must reinitialize all ulongs and the infinite flag later. - */ -#define hwloc_bitmap_reset_by_cpu_index(set, cpu) hwloc_bitmap_reset_by_ulongs(set, ((cpu)/HWLOC_BITS_PER_LONG)+1) - -struct hwloc_bitmap_s * hwloc_bitmap_dup(const struct hwloc_bitmap_s * old) -{ - struct hwloc_bitmap_s * new; - - if (!old) - return NULL; - - HWLOC__BITMAP_CHECK(old); - - new = malloc(sizeof(struct hwloc_bitmap_s)); - if (!new) - return NULL; - - new->ulongs = malloc(old->ulongs_allocated * sizeof(unsigned long)); - if (!new->ulongs) { - free(new); - return NULL; - } - new->ulongs_allocated = old->ulongs_allocated; - new->ulongs_count = old->ulongs_count; - memcpy(new->ulongs, old->ulongs, new->ulongs_count * sizeof(unsigned long)); - new->infinite = old->infinite; -#ifdef HWLOC_DEBUG - new->magic = HWLOC_BITMAP_MAGIC; -#endif - return new; -} - -void hwloc_bitmap_copy(struct hwloc_bitmap_s * dst, const struct hwloc_bitmap_s * src) -{ - HWLOC__BITMAP_CHECK(dst); - HWLOC__BITMAP_CHECK(src); - - hwloc_bitmap_reset_by_ulongs(dst, src->ulongs_count); - - memcpy(dst->ulongs, src->ulongs, src->ulongs_count * sizeof(unsigned long)); - dst->infinite = src->infinite; -} - -/* Strings always use 32bit groups */ -#define HWLOC_PRIxSUBBITMAP "%08lx" -#define HWLOC_BITMAP_SUBSTRING_SIZE 32 -#define HWLOC_BITMAP_SUBSTRING_LENGTH (HWLOC_BITMAP_SUBSTRING_SIZE/4) -#define HWLOC_BITMAP_STRING_PER_LONG (HWLOC_BITS_PER_LONG/HWLOC_BITMAP_SUBSTRING_SIZE) - -int hwloc_bitmap_snprintf(char * __hwloc_restrict buf, size_t buflen, const struct hwloc_bitmap_s * __hwloc_restrict set) -{ - ssize_t size = buflen; - char *tmp = buf; - int res, ret = 0; - int needcomma = 0; - int i; - unsigned long accum = 0; - int accumed = 0; -#if HWLOC_BITS_PER_LONG == HWLOC_BITMAP_SUBSTRING_SIZE - const unsigned long accum_mask = ~0UL; -#else /* HWLOC_BITS_PER_LONG != HWLOC_BITMAP_SUBSTRING_SIZE */ - const unsigned long accum_mask = ((1UL << HWLOC_BITMAP_SUBSTRING_SIZE) - 1) << (HWLOC_BITS_PER_LONG - HWLOC_BITMAP_SUBSTRING_SIZE); -#endif /* HWLOC_BITS_PER_LONG != HWLOC_BITMAP_SUBSTRING_SIZE */ - - HWLOC__BITMAP_CHECK(set); - - /* mark the end in case we do nothing later */ - if (buflen > 0) - tmp[0] = '\0'; - - if (set->infinite) { - res = hwloc_snprintf(tmp, size, "0xf...f"); - needcomma = 1; - if (res < 0) - return -1; - ret += res; - if (res >= size) - res = size>0 ? size - 1 : 0; - tmp += res; - size -= res; - /* optimize a common case: full bitmap should appear as 0xf...f instead of 0xf...f,0xffffffff */ - if (set->ulongs_count == 1 && set->ulongs[0] == HWLOC_SUBBITMAP_FULL) - return ret; - } - - i=set->ulongs_count-1; - while (i>=0 || accumed) { - /* Refill accumulator */ - if (!accumed) { - accum = set->ulongs[i--]; - accumed = HWLOC_BITS_PER_LONG; - } - - if (accum & accum_mask) { - /* print the whole subset if not empty */ - res = hwloc_snprintf(tmp, size, needcomma ? ",0x" HWLOC_PRIxSUBBITMAP : "0x" HWLOC_PRIxSUBBITMAP, - (accum & accum_mask) >> (HWLOC_BITS_PER_LONG - HWLOC_BITMAP_SUBSTRING_SIZE)); - needcomma = 1; - } else if (i == -1 && accumed == HWLOC_BITMAP_SUBSTRING_SIZE) { - /* print a single 0 to mark the last subset */ - res = hwloc_snprintf(tmp, size, needcomma ? ",0x0" : "0x0"); - } else if (needcomma) { - res = hwloc_snprintf(tmp, size, ","); - } else { - res = 0; - } - if (res < 0) - return -1; - ret += res; - -#if HWLOC_BITS_PER_LONG == HWLOC_BITMAP_SUBSTRING_SIZE - accum = 0; - accumed = 0; -#else - accum <<= HWLOC_BITMAP_SUBSTRING_SIZE; - accumed -= HWLOC_BITMAP_SUBSTRING_SIZE; -#endif - - if (res >= size) - res = size>0 ? size - 1 : 0; - - tmp += res; - size -= res; - } - - return ret; -} - -int hwloc_bitmap_asprintf(char ** strp, const struct hwloc_bitmap_s * __hwloc_restrict set) -{ - int len; - char *buf; - - HWLOC__BITMAP_CHECK(set); - - len = hwloc_bitmap_snprintf(NULL, 0, set); - buf = malloc(len+1); - *strp = buf; - return hwloc_bitmap_snprintf(buf, len+1, set); -} - -int hwloc_bitmap_sscanf(struct hwloc_bitmap_s *set, const char * __hwloc_restrict string) -{ - const char * current = string; - unsigned long accum = 0; - int count=0; - int infinite = 0; - - /* count how many substrings there are */ - count++; - while ((current = strchr(current+1, ',')) != NULL) - count++; - - current = string; - if (!strncmp("0xf...f", current, 7)) { - current += 7; - if (*current != ',') { - /* special case for infinite/full cpuset */ - hwloc_bitmap_fill(set); - return 0; - } - current++; - infinite = 1; - count--; - } - - hwloc_bitmap_reset_by_ulongs(set, (count + HWLOC_BITMAP_STRING_PER_LONG - 1) / HWLOC_BITMAP_STRING_PER_LONG); - set->infinite = 0; - - while (*current != '\0') { - unsigned long val; - char *next; - val = strtoul(current, &next, 16); - - assert(count > 0); - count--; - - accum |= (val << ((count * HWLOC_BITMAP_SUBSTRING_SIZE) % HWLOC_BITS_PER_LONG)); - if (!(count % HWLOC_BITMAP_STRING_PER_LONG)) { - set->ulongs[count / HWLOC_BITMAP_STRING_PER_LONG] = accum; - accum = 0; - } - - if (*next != ',') { - if (*next || count > 0) - goto failed; - else - break; - } - current = (const char*) next+1; - } - - set->infinite = infinite; /* set at the end, to avoid spurious realloc with filled new ulongs */ - - return 0; - - failed: - /* failure to parse */ - hwloc_bitmap_zero(set); - return -1; -} - -int hwloc_bitmap_list_snprintf(char * __hwloc_restrict buf, size_t buflen, const struct hwloc_bitmap_s * __hwloc_restrict set) -{ - int prev = -1; - hwloc_bitmap_t reverse; - ssize_t size = buflen; - char *tmp = buf; - int res, ret = 0; - int needcomma = 0; - - HWLOC__BITMAP_CHECK(set); - - reverse = hwloc_bitmap_alloc(); /* FIXME: add hwloc_bitmap_alloc_size() + hwloc_bitmap_init_allocated() to avoid malloc? */ - hwloc_bitmap_not(reverse, set); - - /* mark the end in case we do nothing later */ - if (buflen > 0) - tmp[0] = '\0'; - - while (1) { - int begin, end; - - begin = hwloc_bitmap_next(set, prev); - if (begin == -1) - break; - end = hwloc_bitmap_next(reverse, begin); - - if (end == begin+1) { - res = hwloc_snprintf(tmp, size, needcomma ? ",%d" : "%d", begin); - } else if (end == -1) { - res = hwloc_snprintf(tmp, size, needcomma ? ",%d-" : "%d-", begin); - } else { - res = hwloc_snprintf(tmp, size, needcomma ? ",%d-%d" : "%d-%d", begin, end-1); - } - if (res < 0) { - hwloc_bitmap_free(reverse); - return -1; - } - ret += res; - - if (res >= size) - res = size>0 ? size - 1 : 0; - - tmp += res; - size -= res; - needcomma = 1; - - if (end == -1) - break; - else - prev = end - 1; - } - - hwloc_bitmap_free(reverse); - - return ret; -} - -int hwloc_bitmap_list_asprintf(char ** strp, const struct hwloc_bitmap_s * __hwloc_restrict set) -{ - int len; - char *buf; - - HWLOC__BITMAP_CHECK(set); - - len = hwloc_bitmap_list_snprintf(NULL, 0, set); - buf = malloc(len+1); - *strp = buf; - return hwloc_bitmap_list_snprintf(buf, len+1, set); -} - -int hwloc_bitmap_list_sscanf(struct hwloc_bitmap_s *set, const char * __hwloc_restrict string) -{ - const char * current = string; - char *next; - long begin = -1, val; - - hwloc_bitmap_zero(set); - - while (*current != '\0') { - - /* ignore empty ranges */ - while (*current == ',') - current++; - - val = strtoul(current, &next, 0); - /* make sure we got at least one digit */ - if (next == current) - goto failed; - - if (begin != -1) { - /* finishing a range */ - hwloc_bitmap_set_range(set, begin, val); - begin = -1; - - } else if (*next == '-') { - /* starting a new range */ - if (*(next+1) == '\0') { - /* infinite range */ - hwloc_bitmap_set_range(set, val, -1); - break; - } else { - /* normal range */ - begin = val; - } - - } else if (*next == ',' || *next == '\0') { - /* single digit */ - hwloc_bitmap_set(set, val); - } - - if (*next == '\0') - break; - current = next+1; - } - - return 0; - - failed: - /* failure to parse */ - hwloc_bitmap_zero(set); - return -1; -} - -int hwloc_bitmap_taskset_snprintf(char * __hwloc_restrict buf, size_t buflen, const struct hwloc_bitmap_s * __hwloc_restrict set) -{ - ssize_t size = buflen; - char *tmp = buf; - int res, ret = 0; - int started = 0; - int i; - - HWLOC__BITMAP_CHECK(set); - - /* mark the end in case we do nothing later */ - if (buflen > 0) - tmp[0] = '\0'; - - if (set->infinite) { - res = hwloc_snprintf(tmp, size, "0xf...f"); - started = 1; - if (res < 0) - return -1; - ret += res; - if (res >= size) - res = size>0 ? size - 1 : 0; - tmp += res; - size -= res; - /* optimize a common case: full bitmap should appear as 0xf...f instead of 0xf...fffffffff */ - if (set->ulongs_count == 1 && set->ulongs[0] == HWLOC_SUBBITMAP_FULL) - return ret; - } - - i=set->ulongs_count-1; - while (i>=0) { - unsigned long val = set->ulongs[i--]; - if (started) { - /* print the whole subset */ -#if HWLOC_BITS_PER_LONG == 64 - res = hwloc_snprintf(tmp, size, "%016lx", val); -#else - res = hwloc_snprintf(tmp, size, "%08lx", val); -#endif - } else if (val || i == -1) { - res = hwloc_snprintf(tmp, size, "0x%lx", val); - started = 1; - } else { - res = 0; - } - if (res < 0) - return -1; - ret += res; - if (res >= size) - res = size>0 ? size - 1 : 0; - tmp += res; - size -= res; - } - - return ret; -} - -int hwloc_bitmap_taskset_asprintf(char ** strp, const struct hwloc_bitmap_s * __hwloc_restrict set) -{ - int len; - char *buf; - - HWLOC__BITMAP_CHECK(set); - - len = hwloc_bitmap_taskset_snprintf(NULL, 0, set); - buf = malloc(len+1); - *strp = buf; - return hwloc_bitmap_taskset_snprintf(buf, len+1, set); -} - -int hwloc_bitmap_taskset_sscanf(struct hwloc_bitmap_s *set, const char * __hwloc_restrict string) -{ - const char * current = string; - int chars; - int count; - int infinite = 0; - - current = string; - if (!strncmp("0xf...f", current, 7)) { - /* infinite bitmap */ - infinite = 1; - current += 7; - if (*current == '\0') { - /* special case for infinite/full bitmap */ - hwloc_bitmap_fill(set); - return 0; - } - } else { - /* finite bitmap */ - if (!strncmp("0x", current, 2)) - current += 2; - if (*current == '\0') { - /* special case for empty bitmap */ - hwloc_bitmap_zero(set); - return 0; - } - } - /* we know there are other characters now */ - - chars = strlen(current); - count = (chars * 4 + HWLOC_BITS_PER_LONG - 1) / HWLOC_BITS_PER_LONG; - - hwloc_bitmap_reset_by_ulongs(set, count); - set->infinite = 0; - - while (*current != '\0') { - int tmpchars; - char ustr[17]; - unsigned long val; - char *next; - - tmpchars = chars % (HWLOC_BITS_PER_LONG/4); - if (!tmpchars) - tmpchars = (HWLOC_BITS_PER_LONG/4); - - memcpy(ustr, current, tmpchars); - ustr[tmpchars] = '\0'; - val = strtoul(ustr, &next, 16); - if (*next != '\0') - goto failed; - - set->ulongs[count-1] = val; - - current += tmpchars; - chars -= tmpchars; - count--; - } - - set->infinite = infinite; /* set at the end, to avoid spurious realloc with filled new ulongs */ - - return 0; - - failed: - /* failure to parse */ - hwloc_bitmap_zero(set); - return -1; -} - -static void hwloc_bitmap__zero(struct hwloc_bitmap_s *set) -{ - unsigned i; - for(i=0; i<set->ulongs_count; i++) - set->ulongs[i] = HWLOC_SUBBITMAP_ZERO; - set->infinite = 0; -} - -void hwloc_bitmap_zero(struct hwloc_bitmap_s * set) -{ - HWLOC__BITMAP_CHECK(set); - - hwloc_bitmap_reset_by_ulongs(set, 1); - hwloc_bitmap__zero(set); -} - -static void hwloc_bitmap__fill(struct hwloc_bitmap_s * set) -{ - unsigned i; - for(i=0; i<set->ulongs_count; i++) - set->ulongs[i] = HWLOC_SUBBITMAP_FULL; - set->infinite = 1; -} - -void hwloc_bitmap_fill(struct hwloc_bitmap_s * set) -{ - HWLOC__BITMAP_CHECK(set); - - hwloc_bitmap_reset_by_ulongs(set, 1); - hwloc_bitmap__fill(set); -} - -void hwloc_bitmap_from_ulong(struct hwloc_bitmap_s *set, unsigned long mask) -{ - HWLOC__BITMAP_CHECK(set); - - hwloc_bitmap_reset_by_ulongs(set, 1); - set->ulongs[0] = mask; /* there's always at least one ulong allocated */ - set->infinite = 0; -} - -void hwloc_bitmap_from_ith_ulong(struct hwloc_bitmap_s *set, unsigned i, unsigned long mask) -{ - unsigned j; - - HWLOC__BITMAP_CHECK(set); - - hwloc_bitmap_reset_by_ulongs(set, i+1); - set->ulongs[i] = mask; - for(j=0; j<i; j++) - set->ulongs[j] = HWLOC_SUBBITMAP_ZERO; - set->infinite = 0; -} - -unsigned long hwloc_bitmap_to_ulong(const struct hwloc_bitmap_s *set) -{ - HWLOC__BITMAP_CHECK(set); - - return set->ulongs[0]; /* there's always at least one ulong allocated */ -} - -unsigned long hwloc_bitmap_to_ith_ulong(const struct hwloc_bitmap_s *set, unsigned i) -{ - HWLOC__BITMAP_CHECK(set); - - return HWLOC_SUBBITMAP_READULONG(set, i); -} - -void hwloc_bitmap_only(struct hwloc_bitmap_s * set, unsigned cpu) -{ - unsigned index_ = HWLOC_SUBBITMAP_INDEX(cpu); - - HWLOC__BITMAP_CHECK(set); - - hwloc_bitmap_reset_by_cpu_index(set, cpu); - hwloc_bitmap__zero(set); - set->ulongs[index_] |= HWLOC_SUBBITMAP_CPU(cpu); -} - -void hwloc_bitmap_allbut(struct hwloc_bitmap_s * set, unsigned cpu) -{ - unsigned index_ = HWLOC_SUBBITMAP_INDEX(cpu); - - HWLOC__BITMAP_CHECK(set); - - hwloc_bitmap_reset_by_cpu_index(set, cpu); - hwloc_bitmap__fill(set); - set->ulongs[index_] &= ~HWLOC_SUBBITMAP_CPU(cpu); -} - -void hwloc_bitmap_set(struct hwloc_bitmap_s * set, unsigned cpu) -{ - unsigned index_ = HWLOC_SUBBITMAP_INDEX(cpu); - - HWLOC__BITMAP_CHECK(set); - - /* nothing to do if setting inside the infinite part of the bitmap */ - if (set->infinite && cpu >= set->ulongs_count * HWLOC_BITS_PER_LONG) - return; - - hwloc_bitmap_realloc_by_cpu_index(set, cpu); - set->ulongs[index_] |= HWLOC_SUBBITMAP_CPU(cpu); -} - -void hwloc_bitmap_set_range(struct hwloc_bitmap_s * set, unsigned begincpu, int _endcpu) -{ - unsigned i; - unsigned beginset,endset; - unsigned endcpu = (unsigned) _endcpu; - - HWLOC__BITMAP_CHECK(set); - - if (_endcpu == -1) { - set->infinite = 1; - /* keep endcpu == -1 since this unsigned is actually larger than anything else */ - } - - if (set->infinite) { - /* truncate the range according to the infinite part of the bitmap */ - if (endcpu >= set->ulongs_count * HWLOC_BITS_PER_LONG) - endcpu = set->ulongs_count * HWLOC_BITS_PER_LONG - 1; - if (begincpu >= set->ulongs_count * HWLOC_BITS_PER_LONG) - return; - } - if (endcpu < begincpu) - return; - hwloc_bitmap_realloc_by_cpu_index(set, endcpu); - - beginset = HWLOC_SUBBITMAP_INDEX(begincpu); - endset = HWLOC_SUBBITMAP_INDEX(endcpu); - for(i=beginset+1; i<endset; i++) - set->ulongs[i] = HWLOC_SUBBITMAP_FULL; - if (beginset == endset) { - set->ulongs[beginset] |= HWLOC_SUBBITMAP_ULBIT_FROMTO(HWLOC_SUBBITMAP_CPU_ULBIT(begincpu), HWLOC_SUBBITMAP_CPU_ULBIT(endcpu)); - } else { - set->ulongs[beginset] |= HWLOC_SUBBITMAP_ULBIT_FROM(HWLOC_SUBBITMAP_CPU_ULBIT(begincpu)); - set->ulongs[endset] |= HWLOC_SUBBITMAP_ULBIT_TO(HWLOC_SUBBITMAP_CPU_ULBIT(endcpu)); - } -} - -void hwloc_bitmap_set_ith_ulong(struct hwloc_bitmap_s *set, unsigned i, unsigned long mask) -{ - HWLOC__BITMAP_CHECK(set); - - hwloc_bitmap_realloc_by_ulongs(set, i+1); - set->ulongs[i] = mask; -} - -void hwloc_bitmap_clr(struct hwloc_bitmap_s * set, unsigned cpu) -{ - unsigned index_ = HWLOC_SUBBITMAP_INDEX(cpu); - - HWLOC__BITMAP_CHECK(set); - - /* nothing to do if clearing inside the infinitely-unset part of the bitmap */ - if (!set->infinite && cpu >= set->ulongs_count * HWLOC_BITS_PER_LONG) - return; - - hwloc_bitmap_realloc_by_cpu_index(set, cpu); - set->ulongs[index_] &= ~HWLOC_SUBBITMAP_CPU(cpu); -} - -void hwloc_bitmap_clr_range(struct hwloc_bitmap_s * set, unsigned begincpu, int _endcpu) -{ - unsigned i; - unsigned beginset,endset; - unsigned endcpu = (unsigned) _endcpu; - - HWLOC__BITMAP_CHECK(set); - - if (_endcpu == -1) { - set->infinite = 0; - /* keep endcpu == -1 since this unsigned is actually larger than anything else */ - } - - if (!set->infinite) { - /* truncate the range according to the infinitely-unset part of the bitmap */ - if (endcpu >= set->ulongs_count * HWLOC_BITS_PER_LONG) - endcpu = set->ulongs_count * HWLOC_BITS_PER_LONG - 1; - if (begincpu >= set->ulongs_count * HWLOC_BITS_PER_LONG) - return; - } - if (endcpu < begincpu) - return; - hwloc_bitmap_realloc_by_cpu_index(set, endcpu); - - beginset = HWLOC_SUBBITMAP_INDEX(begincpu); - endset = HWLOC_SUBBITMAP_INDEX(endcpu); - for(i=beginset+1; i<endset; i++) - set->ulongs[i] = HWLOC_SUBBITMAP_ZERO; - if (beginset == endset) { - set->ulongs[beginset] &= ~HWLOC_SUBBITMAP_ULBIT_FROMTO(HWLOC_SUBBITMAP_CPU_ULBIT(begincpu), HWLOC_SUBBITMAP_CPU_ULBIT(endcpu)); - } else { - set->ulongs[beginset] &= ~HWLOC_SUBBITMAP_ULBIT_FROM(HWLOC_SUBBITMAP_CPU_ULBIT(begincpu)); - set->ulongs[endset] &= ~HWLOC_SUBBITMAP_ULBIT_TO(HWLOC_SUBBITMAP_CPU_ULBIT(endcpu)); - } -} - -int hwloc_bitmap_isset(const struct hwloc_bitmap_s * set, unsigned cpu) -{ - unsigned index_ = HWLOC_SUBBITMAP_INDEX(cpu); - - HWLOC__BITMAP_CHECK(set); - - return (HWLOC_SUBBITMAP_READULONG(set, index_) & HWLOC_SUBBITMAP_CPU(cpu)) != 0; -} - -int hwloc_bitmap_iszero(const struct hwloc_bitmap_s *set) -{ - unsigned i; - - HWLOC__BITMAP_CHECK(set); - - if (set->infinite) - return 0; - for(i=0; i<set->ulongs_count; i++) - if (set->ulongs[i] != HWLOC_SUBBITMAP_ZERO) - return 0; - return 1; -} - -int hwloc_bitmap_isfull(const struct hwloc_bitmap_s *set) -{ - unsigned i; - - HWLOC__BITMAP_CHECK(set); - - if (!set->infinite) - return 0; - for(i=0; i<set->ulongs_count; i++) - if (set->ulongs[i] != HWLOC_SUBBITMAP_FULL) - return 0; - return 1; -} - -int hwloc_bitmap_isequal (const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) -{ - unsigned i; - - HWLOC__BITMAP_CHECK(set1); - HWLOC__BITMAP_CHECK(set2); - - for(i=0; i<set1->ulongs_count || i<set2->ulongs_count; i++) - if (HWLOC_SUBBITMAP_READULONG(set1, i) != HWLOC_SUBBITMAP_READULONG(set2, i)) - return 0; - - if (set1->infinite != set2->infinite) - return 0; - - return 1; -} - -int hwloc_bitmap_intersects (const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) -{ - unsigned i; - - HWLOC__BITMAP_CHECK(set1); - HWLOC__BITMAP_CHECK(set2); - - for(i=0; i<set1->ulongs_count || i<set2->ulongs_count; i++) - if ((HWLOC_SUBBITMAP_READULONG(set1, i) & HWLOC_SUBBITMAP_READULONG(set2, i)) != HWLOC_SUBBITMAP_ZERO) - return 1; - - if (set1->infinite && set2->infinite) - return 0; - - return 0; -} - -int hwloc_bitmap_isincluded (const struct hwloc_bitmap_s *sub_set, const struct hwloc_bitmap_s *super_set) -{ - unsigned i; - - HWLOC__BITMAP_CHECK(sub_set); - HWLOC__BITMAP_CHECK(super_set); - - for(i=0; i<sub_set->ulongs_count; i++) - if (HWLOC_SUBBITMAP_READULONG(super_set, i) != (HWLOC_SUBBITMAP_READULONG(super_set, i) | HWLOC_SUBBITMAP_READULONG(sub_set, i))) - return 0; - - if (sub_set->infinite && !super_set->infinite) - return 0; - - return 1; -} - -void hwloc_bitmap_or (struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) -{ - const struct hwloc_bitmap_s *largest = set1->ulongs_count > set2->ulongs_count ? set1 : set2; - unsigned i; - - HWLOC__BITMAP_CHECK(res); - HWLOC__BITMAP_CHECK(set1); - HWLOC__BITMAP_CHECK(set2); - - hwloc_bitmap_realloc_by_ulongs(res, largest->ulongs_count); /* cannot reset since the output may also be an input */ - - for(i=0; i<res->ulongs_count; i++) - res->ulongs[i] = HWLOC_SUBBITMAP_READULONG(set1, i) | HWLOC_SUBBITMAP_READULONG(set2, i); - - res->infinite = set1->infinite || set2->infinite; -} - -void hwloc_bitmap_and (struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) -{ - const struct hwloc_bitmap_s *largest = set1->ulongs_count > set2->ulongs_count ? set1 : set2; - unsigned i; - - HWLOC__BITMAP_CHECK(res); - HWLOC__BITMAP_CHECK(set1); - HWLOC__BITMAP_CHECK(set2); - - hwloc_bitmap_realloc_by_ulongs(res, largest->ulongs_count); /* cannot reset since the output may also be an input */ - - for(i=0; i<res->ulongs_count; i++) - res->ulongs[i] = HWLOC_SUBBITMAP_READULONG(set1, i) & HWLOC_SUBBITMAP_READULONG(set2, i); - - res->infinite = set1->infinite && set2->infinite; -} - -void hwloc_bitmap_andnot (struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) -{ - const struct hwloc_bitmap_s *largest = set1->ulongs_count > set2->ulongs_count ? set1 : set2; - unsigned i; - - HWLOC__BITMAP_CHECK(res); - HWLOC__BITMAP_CHECK(set1); - HWLOC__BITMAP_CHECK(set2); - - hwloc_bitmap_realloc_by_ulongs(res, largest->ulongs_count); /* cannot reset since the output may also be an input */ - - for(i=0; i<res->ulongs_count; i++) - res->ulongs[i] = HWLOC_SUBBITMAP_READULONG(set1, i) & ~HWLOC_SUBBITMAP_READULONG(set2, i); - - res->infinite = set1->infinite && !set2->infinite; -} - -void hwloc_bitmap_xor (struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) -{ - const struct hwloc_bitmap_s *largest = set1->ulongs_count > set2->ulongs_count ? set1 : set2; - unsigned i; - - HWLOC__BITMAP_CHECK(res); - HWLOC__BITMAP_CHECK(set1); - HWLOC__BITMAP_CHECK(set2); - - hwloc_bitmap_realloc_by_ulongs(res, largest->ulongs_count); /* cannot reset since the output may also be an input */ - - for(i=0; i<res->ulongs_count; i++) - res->ulongs[i] = HWLOC_SUBBITMAP_READULONG(set1, i) ^ HWLOC_SUBBITMAP_READULONG(set2, i); - - res->infinite = (!set1->infinite) != (!set2->infinite); -} - -void hwloc_bitmap_not (struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set) -{ - unsigned i; - - HWLOC__BITMAP_CHECK(res); - HWLOC__BITMAP_CHECK(set); - - hwloc_bitmap_realloc_by_ulongs(res, set->ulongs_count); /* cannot reset since the output may also be an input */ - - for(i=0; i<res->ulongs_count; i++) - res->ulongs[i] = ~HWLOC_SUBBITMAP_READULONG(set, i); - - res->infinite = !set->infinite; -} - -int hwloc_bitmap_first(const struct hwloc_bitmap_s * set) -{ - unsigned i; - - HWLOC__BITMAP_CHECK(set); - - for(i=0; i<set->ulongs_count; i++) { - /* subsets are unsigned longs, use ffsl */ - unsigned long w = set->ulongs[i]; - if (w) - return hwloc_ffsl(w) - 1 + HWLOC_BITS_PER_LONG*i; - } - - if (set->infinite) - return set->ulongs_count * HWLOC_BITS_PER_LONG; - - return -1; -} - -int hwloc_bitmap_last(const struct hwloc_bitmap_s * set) -{ - int i; - - HWLOC__BITMAP_CHECK(set); - - if (set->infinite) - return -1; - - for(i=set->ulongs_count-1; i>=0; i--) { - /* subsets are unsigned longs, use flsl */ - unsigned long w = set->ulongs[i]; - if (w) - return hwloc_flsl(w) - 1 + HWLOC_BITS_PER_LONG*i; - } - - return -1; -} - -int hwloc_bitmap_next(const struct hwloc_bitmap_s * set, int prev_cpu) -{ - unsigned i = HWLOC_SUBBITMAP_INDEX(prev_cpu + 1); - - HWLOC__BITMAP_CHECK(set); - - if (i >= set->ulongs_count) { - if (set->infinite) - return prev_cpu + 1; - else - return -1; - } - - for(; i<set->ulongs_count; i++) { - /* subsets are unsigned longs, use ffsl */ - unsigned long w = set->ulongs[i]; - - /* if the prev cpu is in the same word as the possible next one, - we need to mask out previous cpus */ - if (prev_cpu >= 0 && HWLOC_SUBBITMAP_INDEX((unsigned) prev_cpu) == i) - w &= ~HWLOC_SUBBITMAP_ULBIT_TO(HWLOC_SUBBITMAP_CPU_ULBIT(prev_cpu)); - - if (w) - return hwloc_ffsl(w) - 1 + HWLOC_BITS_PER_LONG*i; - } - - if (set->infinite) - return set->ulongs_count * HWLOC_BITS_PER_LONG; - - return -1; -} - -void hwloc_bitmap_singlify(struct hwloc_bitmap_s * set) -{ - unsigned i; - int found = 0; - - HWLOC__BITMAP_CHECK(set); - - for(i=0; i<set->ulongs_count; i++) { - if (found) { - set->ulongs[i] = HWLOC_SUBBITMAP_ZERO; - continue; - } else { - /* subsets are unsigned longs, use ffsl */ - unsigned long w = set->ulongs[i]; - if (w) { - int _ffs = hwloc_ffsl(w); - set->ulongs[i] = HWLOC_SUBBITMAP_CPU(_ffs-1); - found = 1; - } - } - } - - if (set->infinite) { - if (found) { - set->infinite = 0; - } else { - /* set the first non allocated bit */ - unsigned first = set->ulongs_count * HWLOC_BITS_PER_LONG; - set->infinite = 0; /* do not let realloc fill the newly allocated sets */ - hwloc_bitmap_set(set, first); - } - } -} - -int hwloc_bitmap_compare_first(const struct hwloc_bitmap_s * set1, const struct hwloc_bitmap_s * set2) -{ - unsigned i; - - HWLOC__BITMAP_CHECK(set1); - HWLOC__BITMAP_CHECK(set2); - - for(i=0; i<set1->ulongs_count || i<set2->ulongs_count; i++) { - unsigned long w1 = HWLOC_SUBBITMAP_READULONG(set1, i); - unsigned long w2 = HWLOC_SUBBITMAP_READULONG(set2, i); - if (w1 || w2) { - int _ffs1 = hwloc_ffsl(w1); - int _ffs2 = hwloc_ffsl(w2); - /* if both have a bit set, compare for real */ - if (_ffs1 && _ffs2) - return _ffs1-_ffs2; - /* one is empty, and it is considered higher, so reverse-compare them */ - return _ffs2-_ffs1; - } - } - if ((!set1->infinite) != (!set2->infinite)) - return !!set1->infinite - !!set2->infinite; - return 0; -} - -int hwloc_bitmap_compare(const struct hwloc_bitmap_s * set1, const struct hwloc_bitmap_s * set2) -{ - const struct hwloc_bitmap_s *largest = set1->ulongs_count > set2->ulongs_count ? set1 : set2; - int i; - - HWLOC__BITMAP_CHECK(set1); - HWLOC__BITMAP_CHECK(set2); - - if ((!set1->infinite) != (!set2->infinite)) - return !!set1->infinite - !!set2->infinite; - - for(i=largest->ulongs_count-1; i>=0; i--) { - unsigned long val1 = HWLOC_SUBBITMAP_READULONG(set1, (unsigned) i); - unsigned long val2 = HWLOC_SUBBITMAP_READULONG(set2, (unsigned) i); - if (val1 == val2) - continue; - return val1 < val2 ? -1 : 1; - } - - return 0; -} - -int hwloc_bitmap_weight(const struct hwloc_bitmap_s * set) -{ - int weight = 0; - unsigned i; - - HWLOC__BITMAP_CHECK(set); - - if (set->infinite) - return -1; - - for(i=0; i<set->ulongs_count; i++) - weight += hwloc_weight_long(set->ulongs[i]); - return weight; -} - - -/******************************************************************** - * everything below should be dropped when hwloc/cpuset.h is dropped - */ - -/* for HWLOC_DECLSPEC */ -#include <hwloc/autogen/config.h> - -/* forward declarations (public headers do not export this API anymore) */ -HWLOC_DECLSPEC struct hwloc_bitmap_s * hwloc_cpuset_alloc(void); -HWLOC_DECLSPEC void hwloc_cpuset_free(struct hwloc_bitmap_s * set); -HWLOC_DECLSPEC struct hwloc_bitmap_s * hwloc_cpuset_dup(const struct hwloc_bitmap_s * old); -HWLOC_DECLSPEC void hwloc_cpuset_copy(struct hwloc_bitmap_s * dst, const struct hwloc_bitmap_s * src); -HWLOC_DECLSPEC int hwloc_cpuset_snprintf(char * __hwloc_restrict buf, size_t buflen, const struct hwloc_bitmap_s * __hwloc_restrict set); -HWLOC_DECLSPEC int hwloc_cpuset_asprintf(char ** strp, const struct hwloc_bitmap_s * __hwloc_restrict set); -HWLOC_DECLSPEC int hwloc_cpuset_from_string(struct hwloc_bitmap_s *set, const char * __hwloc_restrict string); -HWLOC_DECLSPEC int hwloc_cpuset_taskset_snprintf(char * __hwloc_restrict buf, size_t buflen, const struct hwloc_bitmap_s * __hwloc_restrict set); -HWLOC_DECLSPEC int hwloc_cpuset_taskset_asprintf(char ** strp, const struct hwloc_bitmap_s * __hwloc_restrict set); -HWLOC_DECLSPEC int hwloc_cpuset_taskset_sscanf(struct hwloc_bitmap_s *set, const char * __hwloc_restrict string); -HWLOC_DECLSPEC void hwloc_cpuset_zero(struct hwloc_bitmap_s * set); -HWLOC_DECLSPEC void hwloc_cpuset_fill(struct hwloc_bitmap_s * set); -HWLOC_DECLSPEC void hwloc_cpuset_from_ulong(struct hwloc_bitmap_s *set, unsigned long mask); -HWLOC_DECLSPEC void hwloc_cpuset_from_ith_ulong(struct hwloc_bitmap_s *set, unsigned i, unsigned long mask); -HWLOC_DECLSPEC unsigned long hwloc_cpuset_to_ulong(const struct hwloc_bitmap_s *set); -HWLOC_DECLSPEC unsigned long hwloc_cpuset_to_ith_ulong(const struct hwloc_bitmap_s *set, unsigned i); -HWLOC_DECLSPEC void hwloc_cpuset_cpu(struct hwloc_bitmap_s * set, unsigned cpu); -HWLOC_DECLSPEC void hwloc_cpuset_all_but_cpu(struct hwloc_bitmap_s * set, unsigned cpu); -HWLOC_DECLSPEC void hwloc_cpuset_set(struct hwloc_bitmap_s * set, unsigned cpu); -HWLOC_DECLSPEC void hwloc_cpuset_set_range(struct hwloc_bitmap_s * set, unsigned begincpu, unsigned endcpu); -HWLOC_DECLSPEC void hwloc_cpuset_set_ith_ulong(struct hwloc_bitmap_s *set, unsigned i, unsigned long mask); -HWLOC_DECLSPEC void hwloc_cpuset_clr(struct hwloc_bitmap_s * set, unsigned cpu); -HWLOC_DECLSPEC void hwloc_cpuset_clr_range(struct hwloc_bitmap_s * set, unsigned begincpu, unsigned endcpu); -HWLOC_DECLSPEC int hwloc_cpuset_isset(const struct hwloc_bitmap_s * set, unsigned cpu); -HWLOC_DECLSPEC int hwloc_cpuset_iszero(const struct hwloc_bitmap_s *set); -HWLOC_DECLSPEC int hwloc_cpuset_isfull(const struct hwloc_bitmap_s *set); -HWLOC_DECLSPEC int hwloc_cpuset_isequal(const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2); -HWLOC_DECLSPEC int hwloc_cpuset_intersects(const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2); -HWLOC_DECLSPEC int hwloc_cpuset_isincluded(const struct hwloc_bitmap_s *sub_set, const struct hwloc_bitmap_s *super_set); -HWLOC_DECLSPEC void hwloc_cpuset_or(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2); -HWLOC_DECLSPEC void hwloc_cpuset_and(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2); -HWLOC_DECLSPEC void hwloc_cpuset_andnot(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2); -HWLOC_DECLSPEC void hwloc_cpuset_xor(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2); -HWLOC_DECLSPEC void hwloc_cpuset_not(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set); -HWLOC_DECLSPEC int hwloc_cpuset_first(const struct hwloc_bitmap_s * set); -HWLOC_DECLSPEC int hwloc_cpuset_last(const struct hwloc_bitmap_s * set); -HWLOC_DECLSPEC int hwloc_cpuset_next(const struct hwloc_bitmap_s * set, unsigned prev_cpu); -HWLOC_DECLSPEC void hwloc_cpuset_singlify(struct hwloc_bitmap_s * set); -HWLOC_DECLSPEC int hwloc_cpuset_compare_first(const struct hwloc_bitmap_s * set1, const struct hwloc_bitmap_s * set2); -HWLOC_DECLSPEC int hwloc_cpuset_compare(const struct hwloc_bitmap_s * set1, const struct hwloc_bitmap_s * set2); -HWLOC_DECLSPEC int hwloc_cpuset_weight(const struct hwloc_bitmap_s * set); - -/* actual symbols converting from cpuset ABI into bitmap ABI */ -struct hwloc_bitmap_s * hwloc_cpuset_alloc(void) { return hwloc_bitmap_alloc(); } -void hwloc_cpuset_free(struct hwloc_bitmap_s * set) { hwloc_bitmap_free(set); } -struct hwloc_bitmap_s * hwloc_cpuset_dup(const struct hwloc_bitmap_s * old) { return hwloc_bitmap_dup(old); } -void hwloc_cpuset_copy(struct hwloc_bitmap_s * dst, const struct hwloc_bitmap_s * src) { hwloc_bitmap_copy(dst, src); } -int hwloc_cpuset_snprintf(char * __hwloc_restrict buf, size_t buflen, const struct hwloc_bitmap_s * __hwloc_restrict set) { return hwloc_bitmap_snprintf(buf, buflen, set); } -int hwloc_cpuset_asprintf(char ** strp, const struct hwloc_bitmap_s * __hwloc_restrict set) { return hwloc_bitmap_asprintf(strp, set); } -int hwloc_cpuset_from_string(struct hwloc_bitmap_s *set, const char * __hwloc_restrict string) { return hwloc_bitmap_sscanf(set, string); } -int hwloc_cpuset_taskset_snprintf(char * __hwloc_restrict buf, size_t buflen, const struct hwloc_bitmap_s * __hwloc_restrict set) { return hwloc_bitmap_taskset_snprintf(buf, buflen, set); } -int hwloc_cpuset_taskset_asprintf(char ** strp, const struct hwloc_bitmap_s * __hwloc_restrict set) { return hwloc_bitmap_taskset_asprintf(strp, set); } -int hwloc_cpuset_taskset_sscanf(struct hwloc_bitmap_s *set, const char * __hwloc_restrict string) { return hwloc_bitmap_taskset_sscanf(set, string); } -void hwloc_cpuset_zero(struct hwloc_bitmap_s * set) { hwloc_bitmap_zero(set); } -void hwloc_cpuset_fill(struct hwloc_bitmap_s * set) { hwloc_bitmap_fill(set); } -void hwloc_cpuset_from_ulong(struct hwloc_bitmap_s *set, unsigned long mask) { hwloc_bitmap_from_ulong(set, mask); } -void hwloc_cpuset_from_ith_ulong(struct hwloc_bitmap_s *set, unsigned i, unsigned long mask) { hwloc_bitmap_from_ith_ulong(set, i, mask); } -unsigned long hwloc_cpuset_to_ulong(const struct hwloc_bitmap_s *set) { return hwloc_bitmap_to_ulong(set); } -unsigned long hwloc_cpuset_to_ith_ulong(const struct hwloc_bitmap_s *set, unsigned i) { return hwloc_bitmap_to_ith_ulong(set, i); } -void hwloc_cpuset_cpu(struct hwloc_bitmap_s * set, unsigned cpu) { hwloc_bitmap_only(set, cpu); } -void hwloc_cpuset_all_but_cpu(struct hwloc_bitmap_s * set, unsigned cpu) { hwloc_bitmap_allbut(set, cpu); } -void hwloc_cpuset_set(struct hwloc_bitmap_s * set, unsigned cpu) { hwloc_bitmap_set(set, cpu); } -void hwloc_cpuset_set_range(struct hwloc_bitmap_s * set, unsigned begincpu, unsigned endcpu) { hwloc_bitmap_set_range(set, begincpu, endcpu); } -void hwloc_cpuset_set_ith_ulong(struct hwloc_bitmap_s *set, unsigned i, unsigned long mask) { hwloc_bitmap_set_ith_ulong(set, i, mask); } -void hwloc_cpuset_clr(struct hwloc_bitmap_s * set, unsigned cpu) { hwloc_bitmap_clr(set, cpu); } -void hwloc_cpuset_clr_range(struct hwloc_bitmap_s * set, unsigned begincpu, unsigned endcpu) { hwloc_bitmap_clr_range(set, begincpu, endcpu); } -int hwloc_cpuset_isset(const struct hwloc_bitmap_s * set, unsigned cpu) { return hwloc_bitmap_isset(set, cpu); } -int hwloc_cpuset_iszero(const struct hwloc_bitmap_s *set) { return hwloc_bitmap_iszero(set); } -int hwloc_cpuset_isfull(const struct hwloc_bitmap_s *set) { return hwloc_bitmap_isfull(set); } -int hwloc_cpuset_isequal(const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) { return hwloc_bitmap_isequal(set1, set2); } -int hwloc_cpuset_intersects(const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) { return hwloc_bitmap_intersects(set1, set2); } -int hwloc_cpuset_isincluded(const struct hwloc_bitmap_s *sub_set, const struct hwloc_bitmap_s *super_set) { return hwloc_bitmap_isincluded(sub_set, super_set); } -void hwloc_cpuset_or(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) { hwloc_bitmap_or(res, set1, set2); } -void hwloc_cpuset_and(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) { hwloc_bitmap_and(res, set1, set2); } -void hwloc_cpuset_andnot(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) { hwloc_bitmap_andnot(res, set1, set2); } -void hwloc_cpuset_xor(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set1, const struct hwloc_bitmap_s *set2) { hwloc_bitmap_xor(res, set1, set2); } -void hwloc_cpuset_not(struct hwloc_bitmap_s *res, const struct hwloc_bitmap_s *set) { hwloc_bitmap_not(res, set); } -int hwloc_cpuset_first(const struct hwloc_bitmap_s * set) { return hwloc_bitmap_first(set); } -int hwloc_cpuset_last(const struct hwloc_bitmap_s * set) { return hwloc_bitmap_last(set); } -int hwloc_cpuset_next(const struct hwloc_bitmap_s * set, unsigned prev_cpu) { return hwloc_bitmap_next(set, prev_cpu); } -void hwloc_cpuset_singlify(struct hwloc_bitmap_s * set) { hwloc_bitmap_singlify(set); } -int hwloc_cpuset_compare_first(const struct hwloc_bitmap_s * set1, const struct hwloc_bitmap_s * set2) { return hwloc_bitmap_compare_first(set1, set2); } -int hwloc_cpuset_compare(const struct hwloc_bitmap_s * set1, const struct hwloc_bitmap_s * set2) { return hwloc_bitmap_compare(set1, set2); } -int hwloc_cpuset_weight(const struct hwloc_bitmap_s * set) { return hwloc_bitmap_weight(set); } - -/* - * end of everything to be dropped when hwloc/cpuset.h is dropped - *****************************************************************/ diff --git a/hwloc-1.2.1/src/distances.c b/hwloc-1.2.1/src/distances.c deleted file mode 100644 index 9b26de3b..00000000 --- a/hwloc-1.2.1/src/distances.c +++ /dev/null @@ -1,719 +0,0 @@ -/* - * Copyright © 2010-2011 INRIA. All rights reserved. - * Copyright © 2011 Université Bordeaux 1 - * Copyright © 2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -#include <private/autogen/config.h> -#include <hwloc.h> -#include <private/private.h> -#include <private/debug.h> - -#include <float.h> - -/* called during topology init */ -void hwloc_topology_distances_init(struct hwloc_topology *topology) -{ - unsigned i; - for (i=0; i < HWLOC_OBJ_TYPE_MAX; i++) { - /* no distances yet */ - topology->os_distances[i].nbobjs = 0; - topology->os_distances[i].objs = NULL; - topology->os_distances[i].indexes = NULL; - topology->os_distances[i].distances = NULL; - } -} - -/* called when reloading a topology. - * keep initial parameters (from set_distances and environment), - * but drop what was generated during previous load(). - */ -void hwloc_topology_distances_clear(struct hwloc_topology *topology) -{ - unsigned i; - for (i=0; i < HWLOC_OBJ_TYPE_MAX; i++) { - /* remove final distance matrices, but keep physically-ordered ones */ - free(topology->os_distances[i].objs); - topology->os_distances[i].objs = NULL; - } -} - -/* called during topology destroy */ -void hwloc_topology_distances_destroy(struct hwloc_topology *topology) -{ - unsigned i; - for (i=0; i < HWLOC_OBJ_TYPE_MAX; i++) { - /* remove final distance matrics AND physically-ordered ones */ - free(topology->os_distances[i].indexes); - topology->os_distances[i].indexes = NULL; - free(topology->os_distances[i].objs); - topology->os_distances[i].objs = NULL; - free(topology->os_distances[i].distances); - topology->os_distances[i].distances = NULL; - } -} - -/* insert a distance matrix in the topology. - * the caller gives us those pointers, we take care of freeing them later and so on. - */ -void hwloc_topology__set_distance_matrix(hwloc_topology_t __hwloc_restrict topology, hwloc_obj_type_t type, - unsigned nbobjs, unsigned *indexes, hwloc_obj_t *objs, float *distances) -{ - free(topology->os_distances[type].indexes); - free(topology->os_distances[type].objs); - free(topology->os_distances[type].distances); - topology->os_distances[type].nbobjs = nbobjs; - topology->os_distances[type].indexes = indexes; - topology->os_distances[type].objs = objs; - topology->os_distances[type].distances = distances; -} - -/* make sure a user-given distance matrix is sane */ -static int hwloc_topology__check_distance_matrix(hwloc_topology_t __hwloc_restrict topology __hwloc_attribute_unused, hwloc_obj_type_t type __hwloc_attribute_unused, - unsigned nbobjs, unsigned *indexes, hwloc_obj_t *objs __hwloc_attribute_unused, float *distances __hwloc_attribute_unused) -{ - unsigned i,j; - /* make sure we don't have the same index twice */ - for(i=0; i<nbobjs; i++) - for(j=i+1; j<nbobjs; j++) - if (indexes[i] == indexes[j]) { - errno = EINVAL; - return -1; - } - return 0; -} - -static hwloc_obj_t hwloc_find_obj_by_type_and_os_index(hwloc_obj_t root, hwloc_obj_type_t type, unsigned os_index) -{ - hwloc_obj_t child; - if (root->type == type && root->os_index == os_index) - return root; - child = root->first_child; - while (child) { - hwloc_obj_t found = hwloc_find_obj_by_type_and_os_index(child, type, os_index); - if (found) - return found; - child = child->next_sibling; - } - return NULL; -} - -static void hwloc_get_type_distances_from_string(struct hwloc_topology *topology, - hwloc_obj_type_t type, char *string) -{ - /* the string format is: "index[0],...,index[N-1]:distance[0],...,distance[N*N-1]" - * or "index[0],...,index[N-1]:X*Y" or "index[0],...,index[N-1]:X*Y*Z" - */ - char *tmp = string, *next; - unsigned *indexes; - float *distances; - unsigned nbobjs = 0, i, j, x, y, z; - - /* count indexes */ - while (1) { - size_t size = strspn(tmp, "0123456789"); - if (tmp[size] != ',') { - /* last element */ - tmp += size; - nbobjs++; - break; - } - /* another index */ - tmp += size+1; - nbobjs++; - } - - if (*tmp != ':') { - fprintf(stderr, "Ignoring %s distances from environment variable, missing colon\n", - hwloc_obj_type_string(type)); - return; - } - - indexes = calloc(nbobjs, sizeof(unsigned)); - distances = calloc(nbobjs*nbobjs, sizeof(float)); - tmp = string; - - /* parse indexes */ - for(i=0; i<nbobjs; i++) { - indexes[i] = strtoul(tmp, &next, 0); - tmp = next+1; - } - - /* parse distances */ - z=1; /* default if sscanf finds only 2 values below */ - if (sscanf(tmp, "%u*%u*%u", &x, &y, &z) >= 2) { - /* generate the matrix to create x groups of y elements */ - if (x*y*z != nbobjs) { - fprintf(stderr, "Ignoring %s distances from environment variable, invalid grouping (%u*%u*%u=%u instead of %u)\n", - hwloc_obj_type_string(type), x, y, z, x*y*z, nbobjs); - free(indexes); - free(distances); - return; - } - for(i=0; i<nbobjs; i++) - for(j=0; j<nbobjs; j++) - if (i==j) - distances[i*nbobjs+j] = 1; - else if (i/z == j/z) - distances[i*nbobjs+j] = 2; - else if (i/z/y == j/z/y) - distances[i*nbobjs+j] = 4; - else - distances[i*nbobjs+j] = 8; - - } else { - /* parse a comma separated list of distances */ - for(i=0; i<nbobjs*nbobjs; i++) { - distances[i] = atof(tmp); - next = strchr(tmp, ','); - if (next) { - tmp = next+1; - } else if (i!=nbobjs*nbobjs-1) { - fprintf(stderr, "Ignoring %s distances from environment variable, not enough values (%u out of %u)\n", - hwloc_obj_type_string(type), i+1, nbobjs*nbobjs); - free(indexes); - free(distances); - return; - } - } - } - - if (hwloc_topology__check_distance_matrix(topology, type, nbobjs, indexes, NULL, distances) < 0) { - fprintf(stderr, "Ignoring invalid %s distances from environment variable\n", hwloc_obj_type_string(type)); - free(indexes); - free(distances); - return; - } - - hwloc_topology__set_distance_matrix(topology, type, nbobjs, indexes, NULL, distances); -} - -/* take distances in the environment, store them as is in the topology. - * we'll convert them into object later once the tree is filled - */ -void hwloc_store_distances_from_env(struct hwloc_topology *topology) -{ - hwloc_obj_type_t type; - for(type = HWLOC_OBJ_SYSTEM; type < HWLOC_OBJ_TYPE_MAX; type++) { - char *env, envname[64]; - snprintf(envname, sizeof(envname), "HWLOC_%s_DISTANCES", hwloc_obj_type_string(type)); - env = getenv(envname); - if (env) - hwloc_get_type_distances_from_string(topology, type, env); - } -} - -/* take the given distance, store them as is in the topology. - * we'll convert them into object later once the tree is filled. - */ -int hwloc_topology_set_distance_matrix(hwloc_topology_t __hwloc_restrict topology, hwloc_obj_type_t type, - unsigned nbobjs, unsigned *indexes, float *distances) -{ - unsigned *_indexes; - float *_distances; - - if (hwloc_topology__check_distance_matrix(topology, type, nbobjs, indexes, NULL, distances) < 0) - return -1; - - /* copy the input arrays and give them to the topology */ - _indexes = malloc(nbobjs*sizeof(unsigned)); - memcpy(_indexes, indexes, nbobjs*sizeof(unsigned)); - _distances = malloc(nbobjs*nbobjs*sizeof(float)); - memcpy(_distances, distances, nbobjs*nbobjs*sizeof(float)); - hwloc_topology__set_distance_matrix(topology, type, nbobjs, _indexes, NULL, _distances); - - return 0; -} - -/* cleanup everything we created from distances so that we may rebuild them - * at the end of restrict() - */ -void hwloc_restrict_distances(struct hwloc_topology *topology, unsigned long flags) -{ - hwloc_obj_type_t type; - for(type = HWLOC_OBJ_SYSTEM; type < HWLOC_OBJ_TYPE_MAX; type++) { - /* remove the objs array, we'll rebuild it from the indexes - * depending on remaining objects */ - free(topology->os_distances[type].objs); - topology->os_distances[type].objs = NULL; - /* if not adapting distances, drop everything */ - if (!(flags & HWLOC_RESTRICT_FLAG_ADAPT_DISTANCES)) { - free(topology->os_distances[type].indexes); - topology->os_distances[type].indexes = NULL; - free(topology->os_distances[type].distances); - topology->os_distances[type].distances = NULL; - topology->os_distances[type].nbobjs = 0; - } - } -} - -/* convert distance indexes that were previously stored in the topology - * into actual objects if not done already. - * it's already done when distances come from backends. - * it's not done when distances come from the user. - */ -void hwloc_convert_distances_indexes_into_objects(struct hwloc_topology *topology) -{ - hwloc_obj_type_t type; - for(type = HWLOC_OBJ_SYSTEM; type < HWLOC_OBJ_TYPE_MAX; type++) { - unsigned nbobjs = topology->os_distances[type].nbobjs; - unsigned *indexes = topology->os_distances[type].indexes; - float *distances = topology->os_distances[type].distances; - unsigned i, j; - if (!topology->os_distances[type].objs) { - hwloc_obj_t *objs = calloc(nbobjs, sizeof(hwloc_obj_t)); - /* traverse the topology and look for the relevant objects */ - for(i=0; i<nbobjs; i++) { - hwloc_obj_t obj = hwloc_find_obj_by_type_and_os_index(topology->levels[0][0], type, indexes[i]); - if (!obj) { - - /* shift the matrix */ -#define OLDPOS(i,j) (distances+(i)*nbobjs+(j)) -#define NEWPOS(i,j) (distances+(i)*(nbobjs-1)+(j)) - if (i>0) { - /** no need to move beginning of 0th line */ - for(j=0; j<i-1; j++) - /** move end of jth line + beginning of (j+1)th line */ - memmove(NEWPOS(j,i), OLDPOS(j,i+1), (nbobjs-1)*sizeof(*distances)); - /** move end of (i-1)th line */ - memmove(NEWPOS(i-1,i), OLDPOS(i-1,i+1), (nbobjs-i-1)*sizeof(*distances)); - } - if (i<nbobjs-1) { - /** move beginning of (i+1)th line */ - memmove(NEWPOS(i,0), OLDPOS(i+1,0), i*sizeof(*distances)); - /** move end of jth line + beginning of (j+1)th line */ - for(j=i; j<nbobjs-1; j++) - memmove(NEWPOS(j,i), OLDPOS(j+1,i+1), (nbobjs-1)*sizeof(*distances)); - /** move end of (nbobjs-2)th line */ - memmove(NEWPOS(nbobjs-2,i), OLDPOS(nbobjs-1,i+1), (nbobjs-i-1)*sizeof(*distances)); - } - - /* shift the indexes array */ - memmove(indexes+i, indexes+i+1, (nbobjs-i-1)*sizeof(*indexes)); - - /* update counters */ - nbobjs--; - i--; - continue; - } - objs[i] = obj; - } - - topology->os_distances[type].nbobjs = nbobjs; - if (!nbobjs) { - /* the whole matrix was invalid */ - free(objs); - free(topology->os_distances[type].indexes); - topology->os_distances[type].indexes = NULL; - free(topology->os_distances[type].distances); - topology->os_distances[type].distances = NULL; - } else { - /* setup the objs array */ - topology->os_distances[type].objs = objs; - } - } - } -} - -static void -hwloc_setup_distances_from_os_matrix(struct hwloc_topology *topology, - unsigned nbobjs, - hwloc_obj_t *objs, float *osmatrix) -{ - unsigned i, j, li, lj, minl; - float min = FLT_MAX, max = FLT_MIN; - hwloc_obj_t root; - float *matrix; - hwloc_cpuset_t set; - unsigned relative_depth; - int idx; - - /* find the root */ - set = hwloc_bitmap_alloc(); - for(i=0; i<nbobjs; i++) - hwloc_bitmap_or(set, set, objs[i]->cpuset); - root = hwloc_get_obj_covering_cpuset(topology, set); - assert(root); - if (!hwloc_bitmap_isequal(set, root->cpuset)) { - /* partial distance matrix not including all the children of a single object */ - /* TODO insert an intermediate object (group?) covering only these children ? */ - hwloc_bitmap_free(set); - return; - } - hwloc_bitmap_free(set); - relative_depth = objs[0]->depth - root->depth; /* this assume that we have distances between objects of the same level */ - - /* get the logical index offset, it's the min of all logical indexes */ - minl = UINT_MAX; - for(i=0; i<nbobjs; i++) - if (minl > objs[i]->logical_index) - minl = objs[i]->logical_index; - - /* compute/check min/max values */ - for(i=0; i<nbobjs; i++) - for(j=0; j<nbobjs; j++) { - float val = osmatrix[i*nbobjs+j]; - if (val < min) - min = val; - if (val > max) - max = val; - } - if (!min) { - /* Linux up to 2.6.36 reports ACPI SLIT distances, which should be memory latencies. - * Except of SGI IP27 (SGI Origin 200/2000 with MIPS processors) where the distances - * are the number of hops between routers. - */ - hwloc_debug("%s", "minimal distance is 0, matrix does not seem to contain latencies, ignoring\n"); - return; - } - - /* store the normalized latency matrix in the root object */ - idx = root->distances_count++; - root->distances = realloc(root->distances, root->distances_count * sizeof(struct hwloc_distances_s *)); - root->distances[idx] = malloc(sizeof(struct hwloc_distances_s)); - root->distances[idx]->relative_depth = relative_depth; - root->distances[idx]->nbobjs = nbobjs; - root->distances[idx]->latency = matrix = malloc(nbobjs*nbobjs*sizeof(float)); - root->distances[idx]->latency_base = (float) min; -#define NORMALIZE_LATENCY(d) ((d)/(min)) - root->distances[idx]->latency_max = NORMALIZE_LATENCY(max); - for(i=0; i<nbobjs; i++) { - li = objs[i]->logical_index - minl; - matrix[li*nbobjs+li] = NORMALIZE_LATENCY(osmatrix[i*nbobjs+i]); - for(j=i+1; j<nbobjs; j++) { - lj = objs[j]->logical_index - minl; - matrix[li*nbobjs+lj] = NORMALIZE_LATENCY(osmatrix[i*nbobjs+j]); - matrix[lj*nbobjs+li] = NORMALIZE_LATENCY(osmatrix[j*nbobjs+i]); - } - } -} - -/* convert internal distances into logically-ordered distances - * that can be exposed in the API - */ -void -hwloc_finalize_logical_distances(struct hwloc_topology *topology) -{ - unsigned nbobjs; - hwloc_obj_type_t type; - int depth; - - for (type = HWLOC_OBJ_SYSTEM; type < HWLOC_OBJ_TYPE_MAX; type++) { - nbobjs = topology->os_distances[type].nbobjs; - if (!nbobjs) - continue; - - depth = hwloc_get_type_depth(topology, type); - if (depth == HWLOC_TYPE_DEPTH_UNKNOWN || depth == HWLOC_TYPE_DEPTH_MULTIPLE) - continue; - - if (topology->os_distances[type].objs) { - assert(topology->os_distances[type].distances); - - hwloc_setup_distances_from_os_matrix(topology, nbobjs, - topology->os_distances[type].objs, - topology->os_distances[type].distances); - } - } -} - -/* destroy a object distances structure */ -void -hwloc_free_logical_distances(struct hwloc_distances_s * dist) -{ - free(dist->latency); - free(dist); -} - -static void hwloc_report_user_distance_error(const char *msg, int line) -{ - static int reported = 0; - - if (!reported) { - fprintf(stderr, "****************************************************************************\n"); - fprintf(stderr, "* Hwloc has encountered what looks like an error from user-given distances.\n"); - fprintf(stderr, "*\n"); - fprintf(stderr, "* %s\n", msg); - fprintf(stderr, "* Error occurred in topology.c line %d\n", line); - fprintf(stderr, "*\n"); - fprintf(stderr, "* Please make sure that distances given through the interface or environment\n"); - fprintf(stderr, "* variables do not contradict any other topology information.\n"); - fprintf(stderr, "****************************************************************************\n"); - reported = 1; - } -} - -/* - * Place objects in groups if they are in a transitive graph of minimal distances. - * Return how many groups were created, or 0 if some incomplete distance graphs were found. - */ -static unsigned -hwloc_setup_group_from_min_distance(unsigned nbobjs, - float *_distances, - unsigned *groupids) -{ - float min_distance = FLT_MAX; - unsigned groupid = 1; - unsigned i,j,k; - unsigned skipped = 0; - -#define DISTANCE(i, j) _distances[(i) * nbobjs + (j)] - - memset(groupids, 0, nbobjs*sizeof(*groupids)); - - /* find the minimal distance */ - for(i=0; i<nbobjs; i++) - for(j=i+1; j<nbobjs; j++) - if (DISTANCE(i, j) < min_distance) - min_distance = DISTANCE(i, j); - hwloc_debug("found minimal distance %f between objects\n", min_distance); - - if (min_distance == FLT_MAX) - return 0; - - /* build groups of objects connected with this distance */ - for(i=0; i<nbobjs; i++) { - unsigned size; - int firstfound; - - /* if already grouped, skip */ - if (groupids[i]) - continue; - - /* start a new group */ - groupids[i] = groupid; - size = 1; - firstfound = i; - - while (firstfound != -1) { - /* we added new objects to the group, the first one was firstfound. - * rescan all connections from these new objects (starting at first found) to any other objects, - * so as to find new objects minimally-connected by transivity. - */ - int newfirstfound = -1; - for(j=firstfound; j<nbobjs; j++) - if (groupids[j] == groupid) - for(k=0; k<nbobjs; k++) - if (!groupids[k] && DISTANCE(j, k) == min_distance) { - groupids[k] = groupid; - size++; - if (newfirstfound == -1) - newfirstfound = k; - if (i == j) - hwloc_debug("object %u is minimally connected to %u\n", k, i); - else - hwloc_debug("object %u is minimally connected to %u through %u\n", k, i, j); - } - firstfound = newfirstfound; - } - - if (size == 1) { - /* cancel this useless group, ignore this object and try from the next one */ - groupids[i] = 0; - skipped++; - continue; - } - - /* valid this group */ - groupid++; - hwloc_debug("found transitive graph with %u objects with minimal distance %f\n", - size, min_distance); - } - - if (groupid == 2 && !skipped) - /* we created a single group containing all objects, ignore it */ - return 0; - - /* return the last id, since it's also the number of used group ids */ - return groupid-1; -} - -/* - * Look at object physical distances to group them, - * after having done some basic sanity checks. - */ -static void -hwloc__setup_groups_from_distances(struct hwloc_topology *topology, - unsigned nbobjs, - struct hwloc_obj **objs, - float *_distances, - int fromuser) -{ - unsigned *groupids = NULL; - unsigned nbgroups; - unsigned i,j; - - hwloc_debug("trying to group %s objects into Group objects according to physical distances\n", - hwloc_obj_type_string(objs[0]->type)); - - if (nbobjs <= 2) { - return; - } - - groupids = malloc(sizeof(unsigned) * nbobjs); - if (NULL == groupids) { - return; - } - - nbgroups = hwloc_setup_group_from_min_distance(nbobjs, _distances, groupids); - if (!nbgroups) { - goto outter_free; - } - - /* For convenience, put these declarations inside a block. It's a - crying shame we can't use C99 syntax here, and have to do a bunch - of mallocs. :-( */ - { - hwloc_obj_t *groupobjs = NULL; - unsigned *groupsizes = NULL; - float *groupdistances = NULL; - - groupobjs = malloc(sizeof(hwloc_obj_t) * nbgroups); - groupsizes = malloc(sizeof(unsigned) * nbgroups); - groupdistances = malloc(sizeof(float) * nbgroups * nbgroups); - if (NULL == groupobjs || NULL == groupsizes || NULL == groupdistances) { - goto inner_free; - } - /* create new Group objects and record their size */ - memset(&(groupsizes[0]), 0, sizeof(groupsizes[0]) * nbgroups); - for(i=0; i<nbgroups; i++) { - /* create the Group object */ - hwloc_obj_t group_obj; - group_obj = hwloc_alloc_setup_object(HWLOC_OBJ_GROUP, -1); - group_obj->cpuset = hwloc_bitmap_alloc(); - group_obj->attr->group.depth = topology->next_group_depth; - for (j=0; j<nbobjs; j++) - if (groupids[j] == i+1) { - hwloc_bitmap_or(group_obj->cpuset, group_obj->cpuset, objs[j]->cpuset); - groupsizes[i]++; - } - hwloc_debug_1arg_bitmap("adding Group object with %u objects and cpuset %s\n", - groupsizes[i], group_obj->cpuset); - hwloc__insert_object_by_cpuset(topology, group_obj, - fromuser ? hwloc_report_user_distance_error : hwloc_report_os_error); - groupobjs[i] = group_obj; - } - - /* factorize distances */ - memset(&(groupdistances[0]), 0, sizeof(groupdistances[0]) * nbgroups * nbgroups); -#undef DISTANCE -#define DISTANCE(i, j) _distances[(i) * nbobjs + (j)] -#define GROUP_DISTANCE(i, j) groupdistances[(i) * nbgroups + (j)] - for(i=0; i<nbobjs; i++) - if (groupids[i]) - for(j=0; j<nbobjs; j++) - if (groupids[j]) - GROUP_DISTANCE(groupids[i]-1, groupids[j]-1) += DISTANCE(i, j); - for(i=0; i<nbgroups; i++) - for(j=0; j<nbgroups; j++) - GROUP_DISTANCE(i, j) /= groupsizes[i]*groupsizes[j]; -#ifdef HWLOC_DEBUG - hwloc_debug("%s", "generated new distance matrix between groups:\n"); - hwloc_debug("%s", " index"); - for(j=0; j<nbgroups; j++) - hwloc_debug(" % 5d", (int) j); /* print index because os_index is -1 fro Groups */ - hwloc_debug("%s", "\n"); - for(i=0; i<nbgroups; i++) { - hwloc_debug(" % 5d", (int) i); - for(j=0; j<nbgroups; j++) - hwloc_debug(" %2.3f", GROUP_DISTANCE(i, j)); - hwloc_debug("%s", "\n"); - } -#endif - - topology->next_group_depth++; - hwloc__setup_groups_from_distances(topology, nbgroups, groupobjs, (float*) groupdistances, fromuser); - - inner_free: - /* Safely free everything */ - if (NULL != groupobjs) { - free(groupobjs); - } - if (NULL != groupsizes) { - free(groupsizes); - } - if (NULL != groupdistances) { - free(groupdistances); - } - } - - outter_free: - if (NULL != groupids) { - free(groupids); - } -} - -/* - * Look at object physical distances to group them. - */ -static void -hwloc_setup_groups_from_distances(struct hwloc_topology *topology, - unsigned nbobjs, - struct hwloc_obj **objs, - float *_distances, - int fromuser) -{ - unsigned i,j; - - if (getenv("HWLOC_IGNORE_DISTANCES")) - return; - -#ifdef HWLOC_DEBUG - hwloc_debug("%s", "trying to group objects using distance matrix:\n"); - hwloc_debug("%s", " index"); - for(j=0; j<nbobjs; j++) - hwloc_debug(" % 5d", (int) objs[j]->os_index); - hwloc_debug("%s", "\n"); - for(i=0; i<nbobjs; i++) { - hwloc_debug(" % 5d", (int) objs[i]->os_index); - for(j=0; j<nbobjs; j++) - hwloc_debug(" %2.3f", DISTANCE(i, j)); - hwloc_debug("%s", "\n"); - } -#endif - - /* check that the matrix is ok */ - for(i=0; i<nbobjs; i++) { - for(j=i+1; j<nbobjs; j++) { - /* should be symmetric */ - if (DISTANCE(i, j) != DISTANCE(j, i)) { - hwloc_debug("distance matrix asymmetric ([%u,%u]=%f != [%u,%u]=%f), aborting\n", - i, j, DISTANCE(i, j), j, i, DISTANCE(j, i)); - return; - } - /* diagonal is smaller than everything else */ - if (DISTANCE(i, j) <= DISTANCE(i, i)) { - hwloc_debug("distance to self not strictly minimal ([%u,%u]=%f <= [%u,%u]=%f), aborting\n", - i, j, DISTANCE(i, j), i, i, DISTANCE(i, i)); - return; - } - } - } - - hwloc__setup_groups_from_distances(topology, nbobjs, objs, _distances, fromuser); -} - -void -hwloc_group_by_distances(struct hwloc_topology *topology) -{ - unsigned nbobjs; - hwloc_obj_type_t type; - - for (type = HWLOC_OBJ_SYSTEM; type < HWLOC_OBJ_TYPE_MAX; type++) { - nbobjs = topology->os_distances[type].nbobjs; - if (!nbobjs) - continue; - - if (topology->os_distances[type].objs) { - /* if we have objs, we must have distances as well, - * thanks to hwloc_convert_distances_indexes_into_objects() - */ - assert(topology->os_distances[type].distances); - hwloc_setup_groups_from_distances(topology, nbobjs, - topology->os_distances[type].objs, - topology->os_distances[type].distances, - topology->os_distances[type].indexes != NULL); - } - } -} diff --git a/hwloc-1.2.1/src/dolib.c b/hwloc-1.2.1/src/dolib.c deleted file mode 100644 index f88cd054..00000000 --- a/hwloc-1.2.1/src/dolib.c +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009 INRIA. All rights reserved. - * Copyright © 2009 Université Bordeaux 1 - * See COPYING in top-level directory. - */ - -/* Wrapper to avoid msys' tendency to turn / into \ and : into ; */ - -#include <unistd.h> -#include <stdio.h> -#include <stdlib.h> - -int main(int argc, char *argv[]) { - char *prog, *arch, *def, *name, *lib; - char s[1024]; - - if (argc != 6) { - fprintf(stderr,"bad number of arguments"); - exit(EXIT_FAILURE); - } - - prog = argv[1]; - arch = argv[2]; - def = argv[3]; - name = argv[4]; - lib = argv[5]; - - snprintf(s, sizeof(s), "\"%s\" /machine:%s /def:%s /name:%s /out:%s", - prog, arch, def, name, lib); - if (system(s)) { - fprintf(stderr, "%s failed\n", s); - exit(EXIT_FAILURE); - } - - exit(EXIT_SUCCESS); -} diff --git a/hwloc-1.2.1/src/hwloc.dtd b/hwloc-1.2.1/src/hwloc.dtd deleted file mode 100644 index eb6261d9..00000000 --- a/hwloc-1.2.1/src/hwloc.dtd +++ /dev/null @@ -1,37 +0,0 @@ -<!ELEMENT topology (object)+> -<!ELEMENT root (object)+> - -<!ELEMENT object (page_type*,info*,distances*,object*)> -<!ATTLIST object type (System | Machine | Misc | Group | NUMANode | Socket| Cache | Core | PU) #REQUIRED> -<!ATTLIST object os_level CDATA "-1" > -<!ATTLIST object os_index CDATA "-1" > -<!ATTLIST object name CDATA "" > -<!ATTLIST object local_memory CDATA "0" > -<!ATTLIST object cache_size CDATA "0" > -<!ATTLIST object cache_linesize CDATA "0" > -<!ATTLIST object huge_page_size_kB CDATA "0" > -<!ATTLIST object huge_page_free CDATA "0" > -<!ATTLIST object depth CDATA "-1" > -<!ATTLIST object cpuset CDATA "0" > -<!ATTLIST object complete_cpuset CDATA "" > -<!ATTLIST object online_cpuset CDATA "" > -<!ATTLIST object allowed_cpuset CDATA "" > -<!ATTLIST object nodeset CDATA "" > -<!ATTLIST object complete_nodeset CDATA "" > -<!ATTLIST object allowed_nodeset CDATA "" > - -<!ELEMENT page_type EMPTY> -<!ATTLIST page_type size CDATA #REQUIRED> -<!ATTLIST page_type count CDATA #REQUIRED> - -<!ELEMENT info EMPTY> -<!ATTLIST info name CDATA #REQUIRED> -<!ATTLIST info value CDATA #REQUIRED> - -<!ELEMENT distances (latency*)> -<!ATTLIST distances nbobjs CDATA #REQUIRED> -<!ATTLIST distances relative_depth CDATA #REQUIRED> -<!ATTLIST distances latency_base CDATA #REQUIRED> - -<!ELEMENT latency EMPTY> -<!ATTLIST latency value CDATA #REQUIRED> diff --git a/hwloc-1.2.1/src/misc.c b/hwloc-1.2.1/src/misc.c deleted file mode 100644 index 0432a1cd..00000000 --- a/hwloc-1.2.1/src/misc.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2010 INRIA. All rights reserved. - * Copyright © 2009-2010 Université Bordeaux 1 - * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -#include <private/autogen/config.h> -#include <private/misc.h> - -#include <stdarg.h> -#ifdef HAVE_SYS_UTSNAME_H -#include <sys/utsname.h> -#endif -#include <stdlib.h> -#include <stdio.h> -#include <errno.h> -#include <ctype.h> - -int hwloc_snprintf(char *str, size_t size, const char *format, ...) -{ - int ret; - va_list ap; - static char bin; - size_t fakesize; - char *fakestr; - - /* Some systems crash on str == NULL */ - if (!size) { - str = &bin; - size = 1; - } - - va_start(ap, format); - ret = vsnprintf(str, size, format, ap); - va_end(ap); - - if (ret >= 0 && (size_t) ret != size-1) - return ret; - - /* vsnprintf returned size-1 or -1. That could be a system which reports the - * written data and not the actually required room. Try increasing buffer - * size to get the latter. */ - - fakesize = size; - fakestr = NULL; - do { - fakesize *= 2; - free(fakestr); - fakestr = malloc(fakesize); - if (NULL == fakestr) - return -1; - va_start(ap, format); - errno = 0; - ret = vsnprintf(fakestr, fakesize, format, ap); - va_end(ap); - } while ((size_t) ret == fakesize-1 || (ret < 0 && (!errno || errno == ERANGE))); - - if (ret >= 0 && size) { - if (size > (size_t) ret+1) - size = ret+1; - memcpy(str, fakestr, size-1); - str[size-1] = 0; - } - free(fakestr); - - return ret; -} - -int hwloc_namecoloncmp(const char *haystack, const char *needle, size_t n) -{ - size_t i = 0; - while (*haystack && *haystack != ':') { - int ha = *haystack++; - int low_h = tolower(ha); - int ne = *needle++; - int low_n = tolower(ne); - if (low_h != low_n) - return 1; - i++; - } - return i < n; -} - -void hwloc_add_uname_info(struct hwloc_topology *topology __hwloc_attribute_unused) -{ -#ifdef HAVE_UNAME - struct utsname utsname; - - if (uname(&utsname) < 0) - return; - - hwloc_add_object_info(topology->levels[0][0], "OSName", utsname.sysname); - hwloc_add_object_info(topology->levels[0][0], "OSRelease", utsname.release); - hwloc_add_object_info(topology->levels[0][0], "OSVersion", utsname.version); - hwloc_add_object_info(topology->levels[0][0], "HostName", utsname.nodename); - hwloc_add_object_info(topology->levels[0][0], "Architecture", utsname.machine); -#endif /* HAVE_UNAME */ -} diff --git a/hwloc-1.2.1/src/topology-aix.c b/hwloc-1.2.1/src/topology-aix.c deleted file mode 100644 index d8ac8876..00000000 --- a/hwloc-1.2.1/src/topology-aix.c +++ /dev/null @@ -1,602 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2010 INRIA. All rights reserved. - * Copyright © 2009-2011 Université Bordeaux 1 - * Copyright © 2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/* TODO: use SIGRECONFIG & dr_reconfig for state change */ - -#include <private/autogen/config.h> - -#include <sys/types.h> -#include <dirent.h> -#include <unistd.h> -#include <string.h> -#include <errno.h> -#include <stdio.h> -#include <sys/stat.h> -#include <fcntl.h> - -#include <hwloc.h> -#include <private/private.h> -#include <private/debug.h> - -#include <sys/rset.h> -#include <sys/processor.h> -#include <sys/thread.h> -#include <sys/mman.h> -#include <sys/systemcfg.h> - -static int -hwloc_aix_set_sth_cpubind(hwloc_topology_t topology, rstype_t what, rsid_t who, hwloc_const_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) -{ - rsethandle_t rad; - int res; - unsigned cpu; - - if (flags & HWLOC_CPUBIND_NOMEMBIND) { - errno = ENOSYS; - return -1; - } - - /* The resulting binding is always strict */ - - if (hwloc_bitmap_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology))) { - if (ra_detachrset(what, who, 0)) - return -1; - return 0; - } - - rad = rs_alloc(RS_EMPTY); - hwloc_bitmap_foreach_begin(cpu, hwloc_set) - rs_op(RS_ADDRESOURCE, rad, NULL, R_PROCS, cpu); - hwloc_bitmap_foreach_end(); - - res = ra_attachrset(what, who, rad, 0); - - rs_free(rad); - return res; -} - -static int -hwloc_aix_get_sth_cpubind(hwloc_topology_t topology, rstype_t what, rsid_t who, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) -{ - rsethandle_t rset; - unsigned cpu, maxcpus; - int res = -1; - - rset = rs_alloc(RS_EMPTY); - - if (ra_getrset(what, who, 0, rset) == -1) - goto out; - - hwloc_bitmap_zero(hwloc_set); - maxcpus = rs_getinfo(rset, R_MAXPROCS, 0); - for (cpu = 0; cpu < maxcpus; cpu++) - if (rs_op(RS_TESTRESOURCE, rset, NULL, R_PROCS, cpu) == 1) - hwloc_bitmap_set(hwloc_set, cpu); - hwloc_bitmap_and(hwloc_set, hwloc_set, hwloc_topology_get_complete_cpuset(topology)); - res = 0; - -out: - rs_free(rset); - return res; -} - -static int -hwloc_aix_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags) -{ - rsid_t who; - who.at_pid = getpid(); - return hwloc_aix_set_sth_cpubind(topology, R_PROCESS, who, hwloc_set, flags); -} - -static int -hwloc_aix_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags) -{ - rsid_t who; - who.at_pid = getpid(); - return hwloc_aix_get_sth_cpubind(topology, R_PROCESS, who, hwloc_set, flags); -} - -static int -hwloc_aix_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags) -{ - rsid_t who; - who.at_tid = thread_self(); - return hwloc_aix_set_sth_cpubind(topology, R_THREAD, who, hwloc_set, flags); -} - -static int -hwloc_aix_get_thisthread_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags) -{ - rsid_t who; - who.at_tid = thread_self(); - return hwloc_aix_get_sth_cpubind(topology, R_THREAD, who, hwloc_set, flags); -} - -static int -hwloc_aix_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags) -{ - rsid_t who; - who.at_pid = pid; - return hwloc_aix_set_sth_cpubind(topology, R_PROCESS, who, hwloc_set, flags); -} - -static int -hwloc_aix_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t hwloc_set, int flags) -{ - rsid_t who; - who.at_pid = pid; - return hwloc_aix_get_sth_cpubind(topology, R_PROCESS, who, hwloc_set, flags); -} - -#ifdef HWLOC_HAVE_PTHREAD_GETTHRDS_NP -static int -hwloc_aix_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_const_bitmap_t hwloc_set, int flags) -{ - struct __pthrdsinfo info; - int size; - if ((errno = pthread_getthrds_np(&pthread, PTHRDSINFO_QUERY_TID, &info, sizeof(info), NULL, &size))) - return -1; - { - rsid_t who = { .at_tid = info.__pi_tid }; - return hwloc_aix_set_sth_cpubind(topology, R_THREAD, who, hwloc_set, flags); - } -} - -static int -hwloc_aix_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_bitmap_t hwloc_set, int flags) -{ - struct __pthrdsinfo info; - int size; - if (pthread_getthrds_np(&pthread, PTHRDSINFO_QUERY_TID, &info, sizeof(info), NULL, &size)) - return -1; - { - rsid_t who; - who.at_tid = info.__pi_tid; - return hwloc_aix_get_sth_cpubind(topology, R_THREAD, who, hwloc_set, flags); - } -} -#endif /* HWLOC_HAVE_PTHREAD_GETTHRDS_NP */ - -#ifdef P_DEFAULT - -static int -hwloc_aix_membind_policy_from_hwloc(uint_t *aix_policy, int policy) -{ - switch (policy) { - case HWLOC_MEMBIND_DEFAULT: - case HWLOC_MEMBIND_BIND: - *aix_policy = P_DEFAULT; - break; - case HWLOC_MEMBIND_FIRSTTOUCH: - *aix_policy = P_FIRST_TOUCH; - break; - case HWLOC_MEMBIND_INTERLEAVE: - *aix_policy = P_BALANCED; - break; - default: - errno = ENOSYS; - return -1; - } - return 0; -} - -static int -hwloc_aix_prepare_membind(hwloc_topology_t topology, rsethandle_t *rad, hwloc_const_nodeset_t nodeset, int flags __hwloc_attribute_unused) -{ - rsethandle_t rset, noderad; - int MCMlevel; - int node; - - MCMlevel = rs_getinfo(NULL, R_MCMSDL, 0); - if ((topology->flags & HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM)) - rset = rs_alloc(RS_ALL); - else - rset = rs_alloc(RS_PARTITION); - *rad = rs_alloc(RS_EMPTY); - noderad = rs_alloc(RS_EMPTY); - - hwloc_bitmap_foreach_begin(node, nodeset) - rs_getrad(rset, noderad, MCMlevel, node, 0); - rs_op(RS_UNION, noderad, *rad, 0, 0); - hwloc_bitmap_foreach_end(); - - rs_free(rset); - rs_free(noderad); - - return 0; -} - -static int -hwloc_aix_set_sth_membind(hwloc_topology_t topology, rstype_t what, rsid_t who, hwloc_const_bitmap_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - rsethandle_t rad; - int res; - - if (flags & HWLOC_MEMBIND_NOCPUBIND) { - errno = ENOSYS; - return -1; - } - - switch (policy) { - case HWLOC_MEMBIND_DEFAULT: - case HWLOC_MEMBIND_BIND: - break; - default: - errno = ENOSYS; - return -1; - } - - if (hwloc_aix_prepare_membind(topology, &rad, nodeset, flags)) - return -1; - - res = ra_attachrset(what, who, rad, 0); - - rs_free(rad); - return res; -} - -static int -hwloc_aix_get_sth_membind(hwloc_topology_t topology, rstype_t what, rsid_t who, hwloc_bitmap_t nodeset, hwloc_membind_policy_t *policy, int flags __hwloc_attribute_unused) -{ - hwloc_bitmap_t hwloc_set; - rsethandle_t rset; - unsigned cpu, maxcpus; - int res = -1; - int depth, n, i; - - depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - if (depth < 0) { - errno = EXDEV; - return -1; - } - n = hwloc_get_nbobjs_by_depth(topology, depth); - - rset = rs_alloc(RS_EMPTY); - - if (ra_getrset(what, who, 0, rset) == -1) - goto out; - - hwloc_set = hwloc_bitmap_alloc(); - maxcpus = rs_getinfo(rset, R_MAXPROCS, 0); - for (cpu = 0; cpu < maxcpus; cpu++) - if (rs_op(RS_TESTRESOURCE, rset, NULL, R_PROCS, cpu) == 1) - hwloc_bitmap_set(hwloc_set, cpu); - hwloc_bitmap_and(hwloc_set, hwloc_set, hwloc_topology_get_complete_cpuset(topology)); - - hwloc_bitmap_zero(nodeset); - for (i = 0; i < n; i++) { - hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, depth, i); - if (hwloc_bitmap_isincluded(obj->cpuset, hwloc_set)) - hwloc_bitmap_set(nodeset, obj->os_index); - } - - *policy = HWLOC_MEMBIND_DEFAULT; - res = 0; - -out: - rs_free(rset); - return res; -} - -static int -hwloc_aix_set_thisproc_membind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, hwloc_membind_policy_t policy, int flags) -{ - rsid_t who; - who.at_pid = getpid(); - return hwloc_aix_set_sth_membind(topology, R_PROCESS, who, hwloc_set, policy, flags); -} - -static int -hwloc_aix_get_thisproc_membind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, hwloc_membind_policy_t *policy, int flags) -{ - rsid_t who; - who.at_pid = getpid(); - return hwloc_aix_get_sth_membind(topology, R_PROCESS, who, hwloc_set, policy, flags); -} - -static int -hwloc_aix_set_thisthread_membind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, hwloc_membind_policy_t policy, int flags) -{ - rsid_t who; - who.at_tid = thread_self(); - return hwloc_aix_set_sth_membind(topology, R_THREAD, who, hwloc_set, policy, flags); -} - -static int -hwloc_aix_get_thisthread_membind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, hwloc_membind_policy_t *policy, int flags) -{ - rsid_t who; - who.at_tid = thread_self(); - return hwloc_aix_get_sth_membind(topology, R_THREAD, who, hwloc_set, policy, flags); -} - -static int -hwloc_aix_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t hwloc_set, hwloc_membind_policy_t policy, int flags) -{ - rsid_t who; - who.at_pid = pid; - return hwloc_aix_set_sth_membind(topology, R_PROCESS, who, hwloc_set, policy, flags); -} - -static int -hwloc_aix_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t hwloc_set, hwloc_membind_policy_t *policy, int flags) -{ - rsid_t who; - who.at_pid = pid; - return hwloc_aix_get_sth_membind(topology, R_PROCESS, who, hwloc_set, policy, flags); -} - -#if 0 /* def HWLOC_HAVE_PTHREAD_GETTHRDS_NP */ -static int -hwloc_aix_set_thread_membind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_const_bitmap_t hwloc_set, hwloc_membind_policy_t policy, int flags) -{ - struct __pthrdsinfo info; - int size; - if ((errno = pthread_getthrds_np(&pthread, PTHRDSINFO_QUERY_TID, &info, sizeof(info), NULL, &size))) - return -1; - { - rsid_t who; - who.at_tid = info.__pi_tid; - return hwloc_aix_set_sth_membind(topology, R_THREAD, who, hwloc_set, policy, flags); - } -} - -static int -hwloc_aix_get_thread_membind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_bitmap_t hwloc_set, hwloc_membind_policy_t *policy, int flags) -{ - struct __pthrdsinfo info; - int size; - if (pthread_getthrds_np(&pthread, PTHRDSINFO_QUERY_TID, &info, sizeof(info), NULL, &size)) - return -1; - { - rsid_t who; - who.at_tid = info.__pi_tid; - return hwloc_aix_get_sth_membind(topology, R_THREAD, who, hwloc_set, policy, flags); - } -} -#endif /* HWLOC_HAVE_PTHREAD_GETTHRDS_NP */ - -#if 0 -/* TODO: seems to be right, but doesn't seem to be working (EINVAL), even after - * aligning the range on 64K... */ -static int -hwloc_aix_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - subrange_t subrange; - rsid_t rsid = { .at_subrange = &subrange }; - uint_t aix_policy; - int ret; - fprintf(stderr,"yop\n"); - - if ((flags & (HWLOC_MEMBIND_MIGRATE|HWLOC_MEMBIND_STRICT)) - == (HWLOC_MEMBIND_MIGRATE|HWLOC_MEMBIND_STRICT)) { - errno = ENOSYS; - return -1; - } - - subrange.su_offset = (uintptr_t) addr; - subrange.su_length = len; - subrange.su_rstype = R_RSET; - - if (hwloc_aix_membind_policy_from_hwloc(&aix_policy, policy)) - return -1; - - if (hwloc_aix_prepare_membind(topology, &subrange.su_rsid.at_rset, nodeset, flags)) - return -1; - - subrange.su_policy = aix_policy; - - ret = ra_attachrset(R_SUBRANGE, rsid, subrange.su_rsid.at_rset, 0); - rs_free(subrange.su_rsid.at_rset); - return ret; -} -#endif - -static void * -hwloc_aix_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - void *ret; - rsid_t rsid; - uint_t aix_policy; - - if (hwloc_aix_membind_policy_from_hwloc(&aix_policy, policy)) - return hwloc_alloc_or_fail(topology, len, flags); - - if (hwloc_aix_prepare_membind(topology, &rsid.at_rset, nodeset, flags)) - return hwloc_alloc_or_fail(topology, len, flags); - - ret = ra_mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0, R_RSET, rsid, aix_policy); - - rs_free(rsid.at_rset); - return ret; -} -#endif /* P_DEFAULT */ - -static void -look_rset(int sdl, hwloc_obj_type_t type, struct hwloc_topology *topology, int level) -{ - rsethandle_t rset, rad; - int i,maxcpus,j; - int nbnodes; - struct hwloc_obj *obj; - - if ((topology->flags & HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM)) - rset = rs_alloc(RS_ALL); - else - rset = rs_alloc(RS_PARTITION); - rad = rs_alloc(RS_EMPTY); - nbnodes = rs_numrads(rset, sdl, 0); - if (nbnodes == -1) { - perror("rs_numrads"); - return; - } - - for (i = 0; i < nbnodes; i++) { - if (rs_getrad(rset, rad, sdl, i, 0)) { - fprintf(stderr,"rs_getrad(%d) failed: %s\n", i, strerror(errno)); - continue; - } - if (!rs_getinfo(rad, R_NUMPROCS, 0)) - continue; - - /* It seems logical processors are numbered from 1 here, while the - * bindprocessor functions numbers them from 0... */ - obj = hwloc_alloc_setup_object(type, i - (type == HWLOC_OBJ_PU)); - obj->cpuset = hwloc_bitmap_alloc(); - obj->os_level = sdl; - maxcpus = rs_getinfo(rad, R_MAXPROCS, 0); - for (j = 0; j < maxcpus; j++) { - if (rs_op(RS_TESTRESOURCE, rad, NULL, R_PROCS, j)) - hwloc_bitmap_set(obj->cpuset, j); - } - switch(type) { - case HWLOC_OBJ_NODE: - obj->nodeset = hwloc_bitmap_alloc(); - hwloc_bitmap_set(obj->nodeset, i); - obj->memory.local_memory = 0; /* TODO: odd, rs_getinfo(rad, R_MEMSIZE, 0) << 10 returns the total memory ... */ - obj->memory.page_types_len = 2; - obj->memory.page_types = malloc(2*sizeof(*obj->memory.page_types)); - memset(obj->memory.page_types, 0, 2*sizeof(*obj->memory.page_types)); - obj->memory.page_types[0].size = getpagesize(); -#ifdef HAVE__SC_LARGE_PAGESIZE - obj->memory.page_types[1].size = sysconf(_SC_LARGE_PAGESIZE); -#endif - /* TODO: obj->memory.page_types[1].count = rs_getinfo(rset, R_LGPGFREE, 0) / hugepagesize */ - break; - case HWLOC_OBJ_CACHE: - obj->attr->cache.size = _system_configuration.L2_cache_size; - obj->attr->cache.linesize = 0; /* TODO: ? */ - obj->attr->cache.depth = 2; - break; - case HWLOC_OBJ_GROUP: - obj->attr->group.depth = level; - break; - case HWLOC_OBJ_CORE: - { - hwloc_obj_t obj2 = hwloc_alloc_setup_object(HWLOC_OBJ_CACHE, i); - obj2->cpuset = hwloc_bitmap_dup(obj->cpuset); - obj2->attr->cache.size = _system_configuration.dcache_size; - obj2->attr->cache.linesize = _system_configuration.dcache_line; - obj2->attr->cache.depth = 1; - hwloc_debug("Adding an L1 cache for core %d\n", i); - hwloc_insert_object_by_cpuset(topology, obj2); - break; - } - default: - break; - } - hwloc_debug_2args_bitmap("%s %d has cpuset %s\n", - hwloc_obj_type_string(type), - i, obj->cpuset); - hwloc_insert_object_by_cpuset(topology, obj); - } - - rs_free(rset); - rs_free(rad); -} - -void -hwloc_look_aix(struct hwloc_topology *topology) -{ - int i; - /* TODO: R_LGPGDEF/R_LGPGFREE for large pages */ - - hwloc_debug("Note: SMPSDL is at %d\n", rs_getinfo(NULL, R_SMPSDL, 0)); - - for (i=0; i<=rs_getinfo(NULL, R_MAXSDL, 0); i++) - { - int known = 0; -#if 0 - if (i == rs_getinfo(NULL, R_SMPSDL, 0)) - /* Not enabled for now because I'm not sure what it corresponds to. On - * decrypthon it contains all the cpus. Is it a "machine" or a "system" - * level ? - */ - { - hwloc_debug("looking AIX \"SMP\" sdl %d\n", i); - look_rset(i, HWLOC_OBJ_MACHINE, topology, i); - known = 1; - } -#endif - if (i == rs_getinfo(NULL, R_MCMSDL, 0)) - { - hwloc_debug("looking AIX node sdl %d\n", i); - look_rset(i, HWLOC_OBJ_NODE, topology, i); - known = 1; - } -# ifdef R_L2CSDL - if (i == rs_getinfo(NULL, R_L2CSDL, 0)) - { - hwloc_debug("looking AIX L2 sdl %d\n", i); - look_rset(i, HWLOC_OBJ_CACHE, topology, i); - known = 1; - } -# endif -# ifdef R_PCORESDL - if (i == rs_getinfo(NULL, R_PCORESDL, 0)) - { - hwloc_debug("looking AIX core sdl %d\n", i); - look_rset(i, HWLOC_OBJ_CORE, topology, i); - known = 1; - } -# endif - if (i == rs_getinfo(NULL, R_MAXSDL, 0)) - { - hwloc_debug("looking AIX max sdl %d\n", i); - look_rset(i, HWLOC_OBJ_PU, topology, i); - known = 1; - topology->support.discovery->pu = 1; - } - - /* Don't know how it should be rendered, make a misc object for it. */ - if (!known) - { - hwloc_debug("looking AIX unknown sdl %d\n", i); - look_rset(i, HWLOC_OBJ_GROUP, topology, i); - } - } - - hwloc_add_object_info(topology->levels[0][0], "Backend", "AIX"); -} - -void -hwloc_set_aix_hooks(struct hwloc_topology *topology) -{ - topology->set_proc_cpubind = hwloc_aix_set_proc_cpubind; - topology->get_proc_cpubind = hwloc_aix_get_proc_cpubind; -#ifdef HWLOC_HAVE_PTHREAD_GETTHRDS_NP - topology->set_thread_cpubind = hwloc_aix_set_thread_cpubind; - topology->get_thread_cpubind = hwloc_aix_get_thread_cpubind; -#endif /* HWLOC_HAVE_PTHREAD_GETTHRDS_NP */ - topology->set_thisproc_cpubind = hwloc_aix_set_thisproc_cpubind; - topology->get_thisproc_cpubind = hwloc_aix_get_thisproc_cpubind; - topology->set_thisthread_cpubind = hwloc_aix_set_thisthread_cpubind; - topology->get_thisthread_cpubind = hwloc_aix_get_thisthread_cpubind; - /* TODO: get_last_cpu_location: use mycpu() */ -#ifdef P_DEFAULT - topology->set_proc_membind = hwloc_aix_set_proc_membind; - topology->get_proc_membind = hwloc_aix_get_proc_membind; -#if 0 /* def HWLOC_HAVE_PTHREAD_GETTHRDS_NP */ - /* Does it really make sense to set the memory binding of another thread? */ - topology->set_thread_membind = hwloc_aix_set_thread_membind; - topology->get_thread_membind = hwloc_aix_get_thread_membind; -#endif /* HWLOC_HAVE_PTHREAD_GETTHRDS_NP */ - topology->set_thisproc_membind = hwloc_aix_set_thisproc_membind; - topology->get_thisproc_membind = hwloc_aix_get_thisproc_membind; - topology->set_thisthread_membind = hwloc_aix_set_thisthread_membind; - topology->get_thisthread_membind = hwloc_aix_get_thisthread_membind; - /* topology->set_area_membind = hwloc_aix_set_area_membind; */ - /* get_area_membind is not available */ - topology->alloc_membind = hwloc_aix_alloc_membind; - topology->alloc = hwloc_alloc_mmap; - topology->free_membind = hwloc_free_mmap; - topology->support.membind->firsttouch_membind = 1; - topology->support.membind->bind_membind = 1; - topology->support.membind->interleave_membind = 1; -#endif /* P_DEFAULT */ -} diff --git a/hwloc-1.2.1/src/topology-darwin.c b/hwloc-1.2.1/src/topology-darwin.c deleted file mode 100644 index d5d0ef4a..00000000 --- a/hwloc-1.2.1/src/topology-darwin.c +++ /dev/null @@ -1,216 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2010 INRIA. All rights reserved. - * Copyright © 2009-2010 Université Bordeaux 1 - * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/* Detect topology change: registering for power management changes and check - * if for example hw.activecpu changed */ - -/* Apparently, Darwin people do not _want_ to provide binding functions. */ - -#include <private/autogen/config.h> - -#include <sys/types.h> -#include <sys/sysctl.h> -#include <stdlib.h> -#include <inttypes.h> - -#include <hwloc.h> -#include <private/private.h> -#include <private/debug.h> - -void -hwloc_look_darwin(struct hwloc_topology *topology) -{ - int64_t _nprocs; - unsigned nprocs; - int64_t _npackages; - unsigned i, j, cpu; - struct hwloc_obj *obj; - size_t size; - int64_t l1cachesize; - int64_t l2cachesize; - int64_t cachelinesize; - int64_t memsize; - - if (hwloc_get_sysctlbyname("hw.ncpu", &_nprocs) || _nprocs <= 0) - return; - nprocs = _nprocs; - topology->support.discovery->pu = 1; - - hwloc_debug("%u procs\n", nprocs); - - if (!hwloc_get_sysctlbyname("hw.packages", &_npackages) && _npackages > 0) { - unsigned npackages = _npackages; - int64_t _cores_per_package; - int64_t _logical_per_package; - unsigned logical_per_package; - - hwloc_debug("%u packages\n", npackages); - - if (!hwloc_get_sysctlbyname("machdep.cpu.logical_per_package", &_logical_per_package) && _logical_per_package > 0) - logical_per_package = _logical_per_package; - else - /* Assume the trivia. */ - logical_per_package = nprocs / npackages; - - hwloc_debug("%u threads per package\n", logical_per_package); - - - if (nprocs == npackages * logical_per_package) - for (i = 0; i < npackages; i++) { - obj = hwloc_alloc_setup_object(HWLOC_OBJ_SOCKET, i); - obj->cpuset = hwloc_bitmap_alloc(); - for (cpu = i*logical_per_package; cpu < (i+1)*logical_per_package; cpu++) - hwloc_bitmap_set(obj->cpuset, cpu); - - hwloc_debug_1arg_bitmap("package %u has cpuset %s\n", - i, obj->cpuset); - hwloc_insert_object_by_cpuset(topology, obj); - } - - if (!hwloc_get_sysctlbyname("machdep.cpu.cores_per_package", &_cores_per_package) && _cores_per_package > 0) { - unsigned cores_per_package = _cores_per_package; - hwloc_debug("%u cores per package\n", cores_per_package); - - if (!(logical_per_package % cores_per_package)) - for (i = 0; i < npackages * cores_per_package; i++) { - obj = hwloc_alloc_setup_object(HWLOC_OBJ_CORE, i); - obj->cpuset = hwloc_bitmap_alloc(); - for (cpu = i*(logical_per_package/cores_per_package); - cpu < (i+1)*(logical_per_package/cores_per_package); - cpu++) - hwloc_bitmap_set(obj->cpuset, cpu); - - hwloc_debug_1arg_bitmap("core %u has cpuset %s\n", - i, obj->cpuset); - hwloc_insert_object_by_cpuset(topology, obj); - } - } - } - - if (hwloc_get_sysctlbyname("hw.l1dcachesize", &l1cachesize)) - l1cachesize = 0; - - if (hwloc_get_sysctlbyname("hw.l2cachesize", &l2cachesize)) - l2cachesize = 0; - - if (hwloc_get_sysctlbyname("hw.cachelinesize", &cachelinesize)) - cachelinesize = 0; - - if (hwloc_get_sysctlbyname("hw.memsize", &memsize)) - memsize = 0; - - if (!sysctlbyname("hw.cacheconfig", NULL, &size, NULL, 0)) { - unsigned n = size / sizeof(uint32_t); - uint64_t *cacheconfig = NULL; - uint64_t *cachesize = NULL; - uint32_t *cacheconfig32 = NULL; - - cacheconfig = malloc(sizeof(uint64_t) * n); - if (NULL == cacheconfig) { - goto out; - } - cachesize = malloc(sizeof(uint64_t) * n); - if (NULL == cachesize) { - goto out; - } - cacheconfig32 = malloc(sizeof(uint32_t) * n); - if (NULL == cacheconfig32) { - goto out; - } - - if ((!sysctlbyname("hw.cacheconfig", cacheconfig, &size, NULL, 0))) { - /* Yeech. Darwin seemingly has changed from 32bit to 64bit integers for - * cacheconfig, with apparently no way for detection. Assume the machine - * won't have more than 4 billion cpus */ - if (cacheconfig[0] > 0xFFFFFFFFUL) { - memcpy(cacheconfig32, cacheconfig, size); - for (i = 0 ; i < size / sizeof(uint32_t); i++) - cacheconfig[i] = cacheconfig32[i]; - } - - memset(cachesize, 0, sizeof(uint64_t) * n); - size = sizeof(uint64_t) * n; - if (sysctlbyname("hw.cachesize", cachesize, &size, NULL, 0)) { - if (n > 0) - cachesize[0] = memsize; - if (n > 1) - cachesize[1] = l1cachesize; - if (n > 2) - cachesize[2] = l2cachesize; - } - - hwloc_debug("%s", "caches"); - for (i = 0; i < n && cacheconfig[i]; i++) - hwloc_debug(" %"PRIu64"(%"PRIu64"kB)", cacheconfig[i], cachesize[i] / 1024); - - cacheconfig[i] = cacheconfig32[i]; - /* Now we know how many caches there are */ - n = i; - hwloc_debug("\n%u cache levels\n", n - 1); - - /* For each cache level (0 is memory) */ - for (i = 0; i < n; i++) { - /* cacheconfig tells us how many cpus share it, let's iterate on each cache */ - for (j = 0; j < (nprocs / cacheconfig[i]); j++) { - obj = hwloc_alloc_setup_object(i?HWLOC_OBJ_CACHE:HWLOC_OBJ_NODE, j); - if (!i) { - obj->nodeset = hwloc_bitmap_alloc(); - hwloc_bitmap_set(obj->nodeset, j); - } - obj->cpuset = hwloc_bitmap_alloc(); - for (cpu = j*cacheconfig[i]; - cpu < ((j+1)*cacheconfig[i]); - cpu++) - hwloc_bitmap_set(obj->cpuset, cpu); - - if (i) { - hwloc_debug_2args_bitmap("L%ucache %u has cpuset %s\n", - i, j, obj->cpuset); - obj->attr->cache.depth = i; - obj->attr->cache.size = cachesize[i]; - obj->attr->cache.linesize = cachelinesize; - } else { - hwloc_debug_1arg_bitmap("node %u has cpuset %s\n", - j, obj->cpuset); - obj->memory.local_memory = cachesize[i]; - obj->memory.page_types_len = 2; - obj->memory.page_types = malloc(2*sizeof(*obj->memory.page_types)); - memset(obj->memory.page_types, 0, 2*sizeof(*obj->memory.page_types)); - obj->memory.page_types[0].size = getpagesize(); -#ifdef HAVE__SC_LARGE_PAGESIZE - obj->memory.page_types[1].size = sysconf(_SC_LARGE_PAGESIZE); -#endif - } - - hwloc_insert_object_by_cpuset(topology, obj); - } - } - } - out: - if (NULL != cacheconfig) { - free(cacheconfig); - } - if (NULL != cachesize) { - free(cachesize); - } - if (NULL != cacheconfig32) { - free(cacheconfig32); - } - } - - - /* add PU objects */ - hwloc_setup_pu_level(topology, nprocs); - - hwloc_add_object_info(topology->levels[0][0], "Backend", "Darwin"); -} - -void -hwloc_set_darwin_hooks(struct hwloc_topology *topology __hwloc_attribute_unused) -{ -} diff --git a/hwloc-1.2.1/src/topology-freebsd.c b/hwloc-1.2.1/src/topology-freebsd.c deleted file mode 100644 index 90faf96a..00000000 --- a/hwloc-1.2.1/src/topology-freebsd.c +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2010 INRIA. All rights reserved. - * Copyright © 2009-2010 Université Bordeaux 1 - * Copyright © 2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -#include <private/autogen/config.h> - -#include <sys/types.h> -#include <stdlib.h> -#include <inttypes.h> -#include <sys/param.h> -#include <pthread.h> -#ifdef HAVE_PTHREAD_NP_H -#include <pthread_np.h> -#endif -#ifdef HAVE_SYS_CPUSET_H -#include <sys/cpuset.h> -#endif - -#include <hwloc.h> -#include <private/private.h> -#include <private/debug.h> - -#ifdef HAVE_SYS_CPUSET_H -static void -hwloc_freebsd_bsd2hwloc(hwloc_bitmap_t hwloc_cpuset, const cpuset_t *cpuset) -{ - unsigned cpu; - hwloc_bitmap_zero(hwloc_cpuset); - for (cpu = 0; cpu < CPU_SETSIZE; cpu++) - if (CPU_ISSET(cpu, cpuset)) - hwloc_bitmap_set(hwloc_cpuset, cpu); -} - -static void -hwloc_freebsd_hwloc2bsd(hwloc_const_bitmap_t hwloc_cpuset, cpuset_t *cpuset) -{ - unsigned cpu; - CPU_ZERO(cpuset); - for (cpu = 0; cpu < CPU_SETSIZE; cpu++) - if (hwloc_bitmap_isset(hwloc_cpuset, cpu)) - CPU_SET(cpu, cpuset); -} - -static int -hwloc_freebsd_set_sth_affinity(hwloc_topology_t topology __hwloc_attribute_unused, cpulevel_t level, cpuwhich_t which, id_t id, hwloc_const_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused) -{ - cpuset_t cpuset; - - hwloc_freebsd_hwloc2bsd(hwloc_cpuset, &cpuset); - - if (cpuset_setaffinity(level, which, id, sizeof(cpuset), &cpuset)) - return -1; - - return 0; -} - -static int -hwloc_freebsd_get_sth_affinity(hwloc_topology_t topology __hwloc_attribute_unused, cpulevel_t level, cpuwhich_t which, id_t id, hwloc_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused) -{ - cpuset_t cpuset; - - if (cpuset_getaffinity(level, which, id, sizeof(cpuset), &cpuset)) - return -1; - - hwloc_freebsd_bsd2hwloc(hwloc_cpuset, &cpuset); - return 0; -} - -static int -hwloc_freebsd_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_cpuset, int flags) -{ - return hwloc_freebsd_set_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, hwloc_cpuset, flags); -} - -static int -hwloc_freebsd_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_cpuset, int flags) -{ - return hwloc_freebsd_get_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, -1, hwloc_cpuset, flags); -} - -static int -hwloc_freebsd_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_cpuset, int flags) -{ - return hwloc_freebsd_set_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_TID, -1, hwloc_cpuset, flags); -} - -static int -hwloc_freebsd_get_thisthread_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_cpuset, int flags) -{ - return hwloc_freebsd_get_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_TID, -1, hwloc_cpuset, flags); -} - -static int -hwloc_freebsd_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t hwloc_cpuset, int flags) -{ - return hwloc_freebsd_set_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, pid, hwloc_cpuset, flags); -} - -static int -hwloc_freebsd_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t hwloc_cpuset, int flags) -{ - return hwloc_freebsd_get_sth_affinity(topology, CPU_LEVEL_WHICH, CPU_WHICH_PID, pid, hwloc_cpuset, flags); -} - -#ifdef hwloc_thread_t - -#if HAVE_DECL_PTHREAD_SETAFFINITY_NP -#pragma weak pthread_setaffinity_np -static int -hwloc_freebsd_set_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid, hwloc_const_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused) -{ - int err; - cpuset_t cpuset; - - if (!pthread_setaffinity_np) { - errno = ENOSYS; - return -1; - } - - hwloc_freebsd_hwloc2bsd(hwloc_cpuset, &cpuset); - - err = pthread_setaffinity_np(tid, sizeof(cpuset), &cpuset); - - if (err) { - errno = err; - return -1; - } - - return 0; -} -#endif - -#if HAVE_DECL_PTHREAD_GETAFFINITY_NP -#pragma weak pthread_getaffinity_np -static int -hwloc_freebsd_get_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid, hwloc_bitmap_t hwloc_cpuset, int flags __hwloc_attribute_unused) -{ - int err; - cpuset_t cpuset; - - if (!pthread_getaffinity_np) { - errno = ENOSYS; - return -1; - } - - err = pthread_getaffinity_np(tid, sizeof(cpuset), &cpuset); - - if (err) { - errno = err; - return -1; - } - - hwloc_freebsd_bsd2hwloc(hwloc_cpuset, &cpuset); - return 0; -} -#endif -#endif -#endif - -void -hwloc_look_freebsd(struct hwloc_topology *topology) -{ - unsigned nbprocs = hwloc_fallback_nbprocessors(topology); - -#ifdef HAVE__SC_LARGE_PAGESIZE - topology->levels[0][0]->attr->machine.huge_page_size_kB = sysconf(_SC_LARGE_PAGESIZE); -#endif - - hwloc_set_freebsd_hooks(topology); - hwloc_look_x86(topology, nbprocs); - - hwloc_setup_pu_level(topology, nbprocs); - - hwloc_add_object_info(topology->levels[0][0], "Backend", "FreeBSD"); -} - -void -hwloc_set_freebsd_hooks(struct hwloc_topology *topology) -{ -#ifdef HAVE_SYS_CPUSET_H - topology->set_thisproc_cpubind = hwloc_freebsd_set_thisproc_cpubind; - topology->get_thisproc_cpubind = hwloc_freebsd_get_thisproc_cpubind; - topology->set_thisthread_cpubind = hwloc_freebsd_set_thisthread_cpubind; - topology->get_thisthread_cpubind = hwloc_freebsd_get_thisthread_cpubind; - topology->set_proc_cpubind = hwloc_freebsd_set_proc_cpubind; - topology->get_proc_cpubind = hwloc_freebsd_get_proc_cpubind; -#ifdef hwloc_thread_t -#if HAVE_DECL_PTHREAD_SETAFFINITY_NP - topology->set_thread_cpubind = hwloc_freebsd_set_thread_cpubind; -#endif -#if HAVE_DECL_PTHREAD_GETAFFINITY_NP - topology->get_thread_cpubind = hwloc_freebsd_get_thread_cpubind; -#endif -#endif -#endif - /* TODO: get_last_cpu_location: find out ki_lastcpu */ -} diff --git a/hwloc-1.2.1/src/topology-hpux.c b/hwloc-1.2.1/src/topology-hpux.c deleted file mode 100644 index 2ca58c66..00000000 --- a/hwloc-1.2.1/src/topology-hpux.c +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2010 INRIA. All rights reserved. - * Copyright © 2009-2010 Université Bordeaux 1 - * Copyright © 2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/* TODO: psets? (Only for root) - * since 11i 1.6: - _SC_PSET_SUPPORT - pset_create/destroy/assign/setattr - pset_ctl/getattr - pset_bind() - pthread_pset_bind_np() - */ - -#include <private/autogen/config.h> - -#include <sys/types.h> -#include <unistd.h> -#include <string.h> -#include <errno.h> -#include <stdio.h> - -#include <hwloc.h> -#include <private/private.h> -#include <private/debug.h> - -#include <sys/mpctl.h> -#include <sys/mman.h> -#include <pthread.h> - -static ldom_t -hwloc_hpux_find_ldom(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set) -{ - int has_numa = sysconf(_SC_CCNUMA_SUPPORT) == 1; - hwloc_obj_t obj; - - if (!has_numa) - return -1; - - obj = hwloc_get_first_largest_obj_inside_cpuset(topology, hwloc_set); - if (!hwloc_bitmap_isequal(obj->cpuset, hwloc_set) || obj->type != HWLOC_OBJ_NODE) { - /* Does not correspond to exactly one node */ - return -1; - } - - return obj->os_index; -} - -static spu_t -hwloc_hpux_find_spu(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_bitmap_t hwloc_set) -{ - spu_t cpu; - - cpu = hwloc_bitmap_first(hwloc_set); - if (cpu != -1 && hwloc_bitmap_weight(hwloc_set) == 1) - return cpu; - return -1; -} - -/* Note: get_cpubind not available on HP-UX */ -static int -hwloc_hpux_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags) -{ - ldom_t ldom; - spu_t cpu; - - /* Drop previous binding */ - mpctl(MPC_SETLDOM, MPC_LDOMFLOAT, pid); - mpctl(MPC_SETPROCESS, MPC_SPUFLOAT, pid); - - if (hwloc_bitmap_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology))) - return 0; - - ldom = hwloc_hpux_find_ldom(topology, hwloc_set); - if (ldom != -1) - return mpctl(MPC_SETLDOM, ldom, pid); - - cpu = hwloc_hpux_find_spu(topology, hwloc_set); - if (cpu != -1) - return mpctl(flags & HWLOC_CPUBIND_STRICT ? MPC_SETPROCESS_FORCE : MPC_SETPROCESS, cpu, pid); - - errno = EXDEV; - return -1; -} - -static int -hwloc_hpux_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags) -{ - return hwloc_hpux_set_proc_cpubind(topology, MPC_SELFPID, hwloc_set, flags); -} - -#ifdef hwloc_thread_t -static int -hwloc_hpux_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t pthread, hwloc_const_bitmap_t hwloc_set, int flags) -{ - ldom_t ldom, ldom2; - spu_t cpu, cpu2; - - /* Drop previous binding */ - pthread_ldom_bind_np(&ldom2, PTHREAD_LDOMFLOAT_NP, pthread); - pthread_processor_bind_np(PTHREAD_BIND_ADVISORY_NP, &cpu2, PTHREAD_SPUFLOAT_NP, pthread); - - if (hwloc_bitmap_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology))) - return 0; - - ldom = hwloc_hpux_find_ldom(topology, hwloc_set); - if (ldom != -1) - return pthread_ldom_bind_np(&ldom2, ldom, pthread); - - cpu = hwloc_hpux_find_spu(topology, hwloc_set); - if (cpu != -1) - return pthread_processor_bind_np(flags & HWLOC_CPUBIND_STRICT ? PTHREAD_BIND_FORCED_NP : PTHREAD_BIND_ADVISORY_NP, &cpu2, cpu, pthread); - - errno = EXDEV; - return -1; -} - -static int -hwloc_hpux_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags) -{ - return hwloc_hpux_set_thread_cpubind(topology, PTHREAD_SELFTID_NP, hwloc_set, flags); -} -#endif - -/* According to HP docs, HP-UX up to 11iv2 don't support migration */ - -#ifdef MAP_MEM_FIRST_TOUCH -static void* -hwloc_hpux_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - int mmap_flags; - - /* Can not give a set of nodes. */ - if (!hwloc_bitmap_isequal(nodeset, hwloc_topology_get_complete_nodeset(topology))) { - errno = EXDEV; - return hwloc_alloc_or_fail(topology, len, flags); - } - - switch (policy) { - case HWLOC_MEMBIND_DEFAULT: - case HWLOC_MEMBIND_BIND: - mmap_flags = 0; - break; - case HWLOC_MEMBIND_FIRSTTOUCH: - mmap_flags = MAP_MEM_FIRST_TOUCH; - break; - case HWLOC_MEMBIND_INTERLEAVE: - mmap_flags = MAP_MEM_INTERLEAVED; - break; - default: - errno = ENOSYS; - return NULL; - } - - return mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | mmap_flags, -1, 0); -} -#endif /* MAP_MEM_FIRST_TOUCH */ - -void -hwloc_look_hpux(struct hwloc_topology *topology) -{ - int has_numa = sysconf(_SC_CCNUMA_SUPPORT) == 1; - hwloc_obj_t *nodes = NULL, obj; - spu_t currentcpu; - ldom_t currentnode; - int i, nbnodes = 0; - -#ifdef HAVE__SC_LARGE_PAGESIZE - topology->levels[0][0]->attr->machine.huge_page_size_kB = sysconf(_SC_LARGE_PAGESIZE); -#endif - - if (has_numa) { - nbnodes = mpctl(topology->flags & HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM ? - MPC_GETNUMLDOMS_SYS : MPC_GETNUMLDOMS, 0, 0); - - hwloc_debug("%d nodes\n", nbnodes); - - nodes = malloc(nbnodes * sizeof(*nodes)); - - i = 0; - currentnode = mpctl(topology->flags & HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM ? - MPC_GETFIRSTLDOM_SYS : MPC_GETFIRSTLDOM, 0, 0); - while (currentnode != -1 && i < nbnodes) { - hwloc_debug("node %d is %d\n", i, currentnode); - nodes[i] = obj = hwloc_alloc_setup_object(HWLOC_OBJ_NODE, currentnode); - obj->cpuset = hwloc_bitmap_alloc(); - obj->nodeset = hwloc_bitmap_alloc(); - hwloc_bitmap_set(obj->nodeset, currentnode); - /* TODO: obj->attr->node.memory_kB */ - /* TODO: obj->attr->node.huge_page_free */ - - currentnode = mpctl(topology->flags & HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM ? - MPC_GETNEXTLDOM_SYS : MPC_GETNEXTLDOM, currentnode, 0); - i++; - } - } - - i = 0; - currentcpu = mpctl(topology->flags & HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM ? - MPC_GETFIRSTSPU_SYS : MPC_GETFIRSTSPU, 0,0); - while (currentcpu != -1) { - obj = hwloc_alloc_setup_object(HWLOC_OBJ_PU, currentcpu); - obj->cpuset = hwloc_bitmap_alloc(); - hwloc_bitmap_set(obj->cpuset, currentcpu); - - hwloc_debug("cpu %d\n", currentcpu); - - if (nodes) { - /* Add this cpu to its node */ - currentnode = mpctl(MPC_SPUTOLDOM, currentcpu, 0); - if ((ldom_t) nodes[i]->os_index != currentnode) - for (i = 0; i < nbnodes; i++) - if ((ldom_t) nodes[i]->os_index == currentnode) - break; - if (i < nbnodes) { - hwloc_bitmap_set(nodes[i]->cpuset, currentcpu); - hwloc_debug("is in node %d\n", i); - } else { - hwloc_debug("%s", "is in no node?!\n"); - } - } - - /* Add cpu */ - hwloc_insert_object_by_cpuset(topology, obj); - - currentcpu = mpctl(topology->flags & HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM ? - MPC_GETNEXTSPU_SYS : MPC_GETNEXTSPU, currentcpu, 0); - } - - if (nodes) { - /* Add nodes */ - for (i = 0 ; i < nbnodes ; i++) - hwloc_insert_object_by_cpuset(topology, nodes[i]); - free(nodes); - } - - topology->support.discovery->pu = 1; - - hwloc_add_object_info(topology->levels[0][0], "Backend", "HP-UX"); -} - -void -hwloc_set_hpux_hooks(struct hwloc_topology *topology) -{ - topology->set_proc_cpubind = hwloc_hpux_set_proc_cpubind; - topology->set_thisproc_cpubind = hwloc_hpux_set_thisproc_cpubind; -#ifdef hwloc_thread_t - topology->set_thread_cpubind = hwloc_hpux_set_thread_cpubind; - topology->set_thisthread_cpubind = hwloc_hpux_set_thisthread_cpubind; -#endif -#ifdef MAP_MEM_FIRST_TOUCH - topology->alloc_membind = hwloc_hpux_alloc_membind; - topology->alloc = hwloc_alloc_mmap; - topology->free_membind = hwloc_free_mmap; - topology->support.membind->firsttouch_membind = 1; - topology->support.membind->bind_membind = 1; - topology->support.membind->interleave_membind = 1; -#endif /* MAP_MEM_FIRST_TOUCH */ -} diff --git a/hwloc-1.2.1/src/topology-linux.c b/hwloc-1.2.1/src/topology-linux.c deleted file mode 100644 index b5a04feb..00000000 --- a/hwloc-1.2.1/src/topology-linux.c +++ /dev/null @@ -1,2949 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2011 INRIA. All rights reserved. - * Copyright © 2009-2011 Université Bordeaux 1 - * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - * Copyright © 2010 IBM - * See COPYING in top-level directory. - */ - -#include <private/autogen/config.h> -#include <hwloc.h> -#include <hwloc/linux.h> -#include <private/misc.h> -#include <private/private.h> -#include <private/misc.h> -#include <private/debug.h> - -#include <limits.h> -#include <stdio.h> -#include <fcntl.h> -#include <errno.h> -#include <assert.h> -#include <dirent.h> -#include <unistd.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <sched.h> -#include <pthread.h> -#include <sys/mman.h> -#include <sys/syscall.h> -#if defined HWLOC_HAVE_SET_MEMPOLICY || defined HWLOC_HAVE_MBIND -#define migratepages migrate_pages /* workaround broken migratepages prototype in numaif.h before libnuma 2.0.2 */ -#include <numaif.h> -#endif - -#if !defined(HWLOC_HAVE_CPU_SET) && !(defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY)) && defined(HWLOC_HAVE__SYSCALL3) -/* libc doesn't have support for sched_setaffinity, build system call - * ourselves: */ -# include <linux/unistd.h> -# ifndef __NR_sched_setaffinity -# ifdef __i386__ -# define __NR_sched_setaffinity 241 -# elif defined(__x86_64__) -# define __NR_sched_setaffinity 203 -# elif defined(__ia64__) -# define __NR_sched_setaffinity 1231 -# elif defined(__hppa__) -# define __NR_sched_setaffinity 211 -# elif defined(__alpha__) -# define __NR_sched_setaffinity 395 -# elif defined(__s390__) -# define __NR_sched_setaffinity 239 -# elif defined(__sparc__) -# define __NR_sched_setaffinity 261 -# elif defined(__m68k__) -# define __NR_sched_setaffinity 311 -# elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) || defined(__powerpc64__) || defined(__ppc64__) -# define __NR_sched_setaffinity 222 -# elif defined(__arm__) -# define __NR_sched_setaffinity 241 -# elif defined(__cris__) -# define __NR_sched_setaffinity 241 -/*# elif defined(__mips__) - # define __NR_sched_setaffinity TODO (32/64/nabi) */ -# else -# warning "don't know the syscall number for sched_setaffinity on this architecture, will not support binding" -# define sched_setaffinity(pid, lg, mask) (errno = ENOSYS, -1) -# endif -# endif -# ifndef sched_setaffinity - _syscall3(int, sched_setaffinity, pid_t, pid, unsigned int, lg, const void *, mask) -# endif -# ifndef __NR_sched_getaffinity -# ifdef __i386__ -# define __NR_sched_getaffinity 242 -# elif defined(__x86_64__) -# define __NR_sched_getaffinity 204 -# elif defined(__ia64__) -# define __NR_sched_getaffinity 1232 -# elif defined(__hppa__) -# define __NR_sched_getaffinity 212 -# elif defined(__alpha__) -# define __NR_sched_getaffinity 396 -# elif defined(__s390__) -# define __NR_sched_getaffinity 240 -# elif defined(__sparc__) -# define __NR_sched_getaffinity 260 -# elif defined(__m68k__) -# define __NR_sched_getaffinity 312 -# elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) || defined(__powerpc64__) || defined(__ppc64__) -# define __NR_sched_getaffinity 223 -# elif defined(__arm__) -# define __NR_sched_getaffinity 242 -# elif defined(__cris__) -# define __NR_sched_getaffinity 242 -/*# elif defined(__mips__) - # define __NR_sched_getaffinity TODO (32/64/nabi) */ -# else -# warning "don't know the syscall number for sched_getaffinity on this architecture, will not support getting binding" -# define sched_getaffinity(pid, lg, mask) (errno = ENOSYS, -1) -# endif -# endif -# ifndef sched_getaffinity - _syscall3(int, sched_getaffinity, pid_t, pid, unsigned int, lg, void *, mask) -# endif -#endif - -/* Added for ntohl() */ -#include <arpa/inet.h> - -#ifdef HAVE_OPENAT -/* Use our own filesystem functions if we have openat */ - -static const char * -hwloc_checkat(const char *path, int fsroot_fd) -{ - const char *relative_path; - if (fsroot_fd < 0) { - errno = EBADF; - return NULL; - } - - /* Skip leading slashes. */ - for (relative_path = path; *relative_path == '/'; relative_path++); - - return relative_path; -} - -static int -hwloc_openat(const char *path, int fsroot_fd) -{ - const char *relative_path; - - relative_path = hwloc_checkat(path, fsroot_fd); - if (!relative_path) - return -1; - - return openat (fsroot_fd, relative_path, O_RDONLY); -} - -static FILE * -hwloc_fopenat(const char *path, const char *mode, int fsroot_fd) -{ - int fd; - - if (strcmp(mode, "r")) { - errno = ENOTSUP; - return NULL; - } - - fd = hwloc_openat (path, fsroot_fd); - if (fd == -1) - return NULL; - - return fdopen(fd, mode); -} - -static int -hwloc_accessat(const char *path, int mode, int fsroot_fd) -{ - const char *relative_path; - - relative_path = hwloc_checkat(path, fsroot_fd); - if (!relative_path) - return -1; - - return faccessat(fsroot_fd, relative_path, mode, 0); -} - -static int -hwloc_fstatat(const char *path, struct stat *st, int flags, int fsroot_fd) -{ - const char *relative_path; - - relative_path = hwloc_checkat(path, fsroot_fd); - if (!relative_path) - return -1; - - return fstatat(fsroot_fd, relative_path, st, flags); -} - -static DIR* -hwloc_opendirat(const char *path, int fsroot_fd) -{ - int dir_fd; - const char *relative_path; - - relative_path = hwloc_checkat(path, fsroot_fd); - if (!relative_path) - return NULL; - - dir_fd = openat(fsroot_fd, relative_path, O_RDONLY | O_DIRECTORY); - if (dir_fd < 0) - return NULL; - - return fdopendir(dir_fd); -} - -#endif /* HAVE_OPENAT */ - -/* Static inline version of fopen so that we can use openat if we have - it, but still preserve compiler parameter checking */ -static __hwloc_inline int -hwloc_open(const char *p, int d __hwloc_attribute_unused) -{ -#ifdef HAVE_OPENAT - return hwloc_openat(p, d); -#else - return open(p, O_RDONLY); -#endif -} - -static __hwloc_inline FILE * -hwloc_fopen(const char *p, const char *m, int d __hwloc_attribute_unused) -{ -#ifdef HAVE_OPENAT - return hwloc_fopenat(p, m, d); -#else - return fopen(p, m); -#endif -} - -/* Static inline version of access so that we can use openat if we have - it, but still preserve compiler parameter checking */ -static __hwloc_inline int -hwloc_access(const char *p, int m, int d __hwloc_attribute_unused) -{ -#ifdef HAVE_OPENAT - return hwloc_accessat(p, m, d); -#else - return access(p, m); -#endif -} - -static __hwloc_inline int -hwloc_stat(const char *p, struct stat *st, int d __hwloc_attribute_unused) -{ -#ifdef HAVE_OPENAT - return hwloc_fstatat(p, st, 0, d); -#else - return stat(p, st); -#endif -} - -/* Static inline version of opendir so that we can use openat if we have - it, but still preserve compiler parameter checking */ -static __hwloc_inline DIR * -hwloc_opendir(const char *p, int d __hwloc_attribute_unused) -{ -#ifdef HAVE_OPENAT - return hwloc_opendirat(p, d); -#else - return opendir(p); -#endif -} - -int -hwloc_linux_set_tid_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, pid_t tid __hwloc_attribute_unused, hwloc_const_bitmap_t hwloc_set __hwloc_attribute_unused) -{ - /* TODO Kerrighed: Use - * int migrate (pid_t pid, int destination_node); - * int migrate_self (int destination_node); - * int thread_migrate (int thread_id, int destination_node); - */ - - /* The resulting binding is always strict */ - -#if defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY) - cpu_set_t *plinux_set; - unsigned cpu; - int last; - size_t setsize; - int err; - - last = hwloc_bitmap_last(hwloc_set); - if (last == -1) { - errno = EINVAL; - return -1; - } - - setsize = CPU_ALLOC_SIZE(last+1); - plinux_set = CPU_ALLOC(last+1); - - CPU_ZERO_S(setsize, plinux_set); - hwloc_bitmap_foreach_begin(cpu, hwloc_set) - CPU_SET_S(cpu, setsize, plinux_set); - hwloc_bitmap_foreach_end(); - - err = sched_setaffinity(tid, setsize, plinux_set); - - CPU_FREE(plinux_set); - return err; -#elif defined(HWLOC_HAVE_CPU_SET) - cpu_set_t linux_set; - unsigned cpu; - - CPU_ZERO(&linux_set); - hwloc_bitmap_foreach_begin(cpu, hwloc_set) - CPU_SET(cpu, &linux_set); - hwloc_bitmap_foreach_end(); - -#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY - return sched_setaffinity(tid, &linux_set); -#else /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ - return sched_setaffinity(tid, sizeof(linux_set), &linux_set); -#endif /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ -#elif defined(HWLOC_HAVE__SYSCALL3) - unsigned long mask = hwloc_bitmap_to_ulong(hwloc_set); - -#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY - return sched_setaffinity(tid, (void*) &mask); -#else /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ - return sched_setaffinity(tid, sizeof(mask), (void*) &mask); -#endif /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ -#else /* !_SYSCALL3 */ - errno = ENOSYS; - return -1; -#endif /* !_SYSCALL3 */ -} - -#if defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY) -/* - * On some kernels, sched_getaffinity requires the output size to be larger - * than the kernel cpu_set size (defined by CONFIG_NR_CPUS). - * Try sched_affinity on ourself until we find a nr_cpus value that makes - * the kernel happy. - */ -static int -hwloc_linux_find_kernel_nr_cpus(hwloc_topology_t topology) -{ - static int nr_cpus = -1; - - if (nr_cpus != -1) - /* already computed */ - return nr_cpus; - - /* start with a nr_cpus that may contain the whole topology */ - nr_cpus = hwloc_bitmap_last(topology->levels[0][0]->complete_cpuset) + 1; - while (1) { - cpu_set_t *set = CPU_ALLOC(nr_cpus); - size_t setsize = CPU_ALLOC_SIZE(nr_cpus); - int err = sched_getaffinity(0, setsize, set); /* always works, unless setsize is too small */ - CPU_FREE(set); - if (!err) - /* found it */ - return nr_cpus; - nr_cpus *= 2; - } -} -#endif - -int -hwloc_linux_get_tid_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, pid_t tid __hwloc_attribute_unused, hwloc_bitmap_t hwloc_set __hwloc_attribute_unused) -{ - int err __hwloc_attribute_unused; - /* TODO Kerrighed */ - -#if defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY) - cpu_set_t *plinux_set; - unsigned cpu; - int last; - size_t setsize; - int kernel_nr_cpus; - - /* find the kernel nr_cpus so as to use a large enough cpu_set size */ - kernel_nr_cpus = hwloc_linux_find_kernel_nr_cpus(topology); - setsize = CPU_ALLOC_SIZE(kernel_nr_cpus); - plinux_set = CPU_ALLOC(kernel_nr_cpus); - - err = sched_getaffinity(tid, setsize, plinux_set); - - if (err < 0) { - CPU_FREE(plinux_set); - return -1; - } - - last = hwloc_bitmap_last(topology->levels[0][0]->complete_cpuset); - assert(last != -1); - - hwloc_bitmap_zero(hwloc_set); - for(cpu=0; cpu<=(unsigned) last; cpu++) - if (CPU_ISSET_S(cpu, setsize, plinux_set)) - hwloc_bitmap_set(hwloc_set, cpu); - - CPU_FREE(plinux_set); -#elif defined(HWLOC_HAVE_CPU_SET) - cpu_set_t linux_set; - unsigned cpu; - -#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY - err = sched_getaffinity(tid, &linux_set); -#else /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ - err = sched_getaffinity(tid, sizeof(linux_set), &linux_set); -#endif /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ - if (err < 0) - return -1; - - hwloc_bitmap_zero(hwloc_set); - for(cpu=0; cpu<CPU_SETSIZE; cpu++) - if (CPU_ISSET(cpu, &linux_set)) - hwloc_bitmap_set(hwloc_set, cpu); -#elif defined(HWLOC_HAVE__SYSCALL3) - unsigned long mask; - -#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY - err = sched_getaffinity(tid, (void*) &mask); -#else /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ - err = sched_getaffinity(tid, sizeof(mask), (void*) &mask); -#endif /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ - if (err < 0) - return -1; - - hwloc_bitmap_from_ulong(hwloc_set, mask); -#else /* !_SYSCALL3 */ - errno = ENOSYS; - return -1; -#endif /* !_SYSCALL3 */ - - return 0; -} - -/* Get the array of tids of a process from the task directory in /proc */ -static int -hwloc_linux_get_proc_tids(DIR *taskdir, unsigned *nr_tidsp, pid_t ** tidsp) -{ - struct dirent *dirent; - unsigned nr_tids = 0; - unsigned max_tids = 32; - pid_t *tids; - struct stat sb; - - /* take the number of links as a good estimate for the number of tids */ - if (fstat(dirfd(taskdir), &sb) == 0) - max_tids = sb.st_nlink; - - tids = malloc(max_tids*sizeof(pid_t)); - if (!tids) { - errno = ENOMEM; - return -1; - } - - rewinddir(taskdir); - - while ((dirent = readdir(taskdir)) != NULL) { - if (nr_tids == max_tids) { - pid_t *newtids; - max_tids += 8; - newtids = realloc(tids, max_tids*sizeof(pid_t)); - if (!newtids) { - free(tids); - errno = ENOMEM; - return -1; - } - tids = newtids; - } - if (!strcmp(dirent->d_name, ".") || !strcmp(dirent->d_name, "..")) - continue; - tids[nr_tids++] = atoi(dirent->d_name); - } - - *nr_tidsp = nr_tids; - *tidsp = tids; - return 0; -} - -/* Callbacks for binding each process sub-tid */ -typedef int (*hwloc_linux_foreach_proc_tid_cb_t)(hwloc_topology_t topology, pid_t tid, void *data, int idx, int flags); - -static int -hwloc_linux_foreach_proc_tid_set_cpubind_cb(hwloc_topology_t topology, pid_t tid, void *data, int idx __hwloc_attribute_unused, int flags __hwloc_attribute_unused) -{ - hwloc_bitmap_t cpuset = data; - return hwloc_linux_set_tid_cpubind(topology, tid, cpuset); -} - -static int -hwloc_linux_foreach_proc_tid_get_cpubind_cb(hwloc_topology_t topology, pid_t tid, void *data, int idx, int flags) -{ - hwloc_bitmap_t *cpusets = data; - hwloc_bitmap_t cpuset = cpusets[0]; - hwloc_bitmap_t tidset = cpusets[1]; - - if (hwloc_linux_get_tid_cpubind(topology, tid, tidset)) - return -1; - - /* reset the cpuset on first iteration */ - if (!idx) - hwloc_bitmap_zero(cpuset); - - if (flags & HWLOC_CPUBIND_STRICT) { - /* if STRICT, we want all threads to have the same binding */ - if (!idx) { - /* this is the first thread, copy its binding */ - hwloc_bitmap_copy(cpuset, tidset); - } else if (!hwloc_bitmap_isequal(cpuset, tidset)) { - /* this is not the first thread, and it's binding is different */ - errno = EXDEV; - return -1; - } - } else { - /* if not STRICT, just OR all thread bindings */ - hwloc_bitmap_or(cpuset, cpuset, tidset); - } - return 0; -} - -/* Call the callback for each process tid. */ -static int -hwloc_linux_foreach_proc_tid(hwloc_topology_t topology, - pid_t pid, hwloc_linux_foreach_proc_tid_cb_t cb, - void *data, int flags) -{ - char taskdir_path[128]; - DIR *taskdir; - pid_t *tids, *newtids; - unsigned i, nr, newnr; - int err; - - if (pid) - snprintf(taskdir_path, sizeof(taskdir_path), "/proc/%u/task", (unsigned) pid); - else - snprintf(taskdir_path, sizeof(taskdir_path), "/proc/self/task"); - - taskdir = opendir(taskdir_path); - if (!taskdir) { - errno = ENOSYS; - err = -1; - goto out; - } - - /* read the current list of threads */ - err = hwloc_linux_get_proc_tids(taskdir, &nr, &tids); - if (err < 0) - goto out_with_dir; - - retry: - /* apply the callback to all threads */ - for(i=0; i<nr; i++) { - err = cb(topology, tids[i], data, i, flags); - if (err < 0) - goto out_with_tids; - } - - /* re-read the list of thread and retry if it changed in the meantime */ - err = hwloc_linux_get_proc_tids(taskdir, &newnr, &newtids); - if (err < 0) - goto out_with_tids; - if (newnr != nr || memcmp(newtids, tids, nr*sizeof(pid_t))) { - free(tids); - tids = newtids; - nr = newnr; - goto retry; - } - - err = 0; - free(newtids); - out_with_tids: - free(tids); - out_with_dir: - closedir(taskdir); - out: - return err; -} - -static int -hwloc_linux_set_pid_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags) -{ - return hwloc_linux_foreach_proc_tid(topology, pid, - hwloc_linux_foreach_proc_tid_set_cpubind_cb, - (void*) hwloc_set, flags); -} - -static int -hwloc_linux_get_pid_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_bitmap_t hwloc_set, int flags) -{ - hwloc_bitmap_t tidset = hwloc_bitmap_alloc(); - hwloc_bitmap_t cpusets[2]; - int ret; - - cpusets[0] = hwloc_set; - cpusets[1] = tidset; - ret = hwloc_linux_foreach_proc_tid(topology, pid, - hwloc_linux_foreach_proc_tid_get_cpubind_cb, - (void*) cpusets, flags); - hwloc_bitmap_free(tidset); - return ret; -} - -static int -hwloc_linux_set_proc_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags) -{ - if (pid == 0) - pid = topology->pid; - if (flags & HWLOC_CPUBIND_THREAD) - return hwloc_linux_set_tid_cpubind(topology, pid, hwloc_set); - else - return hwloc_linux_set_pid_cpubind(topology, pid, hwloc_set, flags); -} - -static int -hwloc_linux_get_proc_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_bitmap_t hwloc_set, int flags) -{ - if (pid == 0) - pid = topology->pid; - if (flags & HWLOC_CPUBIND_THREAD) - return hwloc_linux_get_tid_cpubind(topology, pid, hwloc_set); - else - return hwloc_linux_get_pid_cpubind(topology, pid, hwloc_set, flags); -} - -static int -hwloc_linux_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags) -{ - return hwloc_linux_set_pid_cpubind(topology, topology->pid, hwloc_set, flags); -} - -static int -hwloc_linux_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags) -{ - return hwloc_linux_get_pid_cpubind(topology, topology->pid, hwloc_set, flags); -} - -static int -hwloc_linux_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) -{ - if (topology->pid) { - errno = ENOSYS; - return -1; - } - return hwloc_linux_set_tid_cpubind(topology, 0, hwloc_set); -} - -static int -hwloc_linux_get_thisthread_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) -{ - if (topology->pid) { - errno = ENOSYS; - return -1; - } - return hwloc_linux_get_tid_cpubind(topology, 0, hwloc_set); -} - -#if HAVE_DECL_PTHREAD_SETAFFINITY_NP -#pragma weak pthread_setaffinity_np -#pragma weak pthread_self - -static int -hwloc_linux_set_thread_cpubind(hwloc_topology_t topology, pthread_t tid, hwloc_const_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) -{ - int err; - - if (topology->pid) { - errno = ENOSYS; - return -1; - } - - if (!pthread_self) { - /* ?! Application uses set_thread_cpubind, but doesn't link against libpthread ?! */ - errno = ENOSYS; - return -1; - } - if (tid == pthread_self()) - return hwloc_linux_set_tid_cpubind(topology, 0, hwloc_set); - - if (!pthread_setaffinity_np) { - errno = ENOSYS; - return -1; - } - /* TODO Kerrighed: Use - * int migrate (pid_t pid, int destination_node); - * int migrate_self (int destination_node); - * int thread_migrate (int thread_id, int destination_node); - */ - -#if defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY) - /* Use a separate block so that we can define specific variable - types here */ - { - cpu_set_t *plinux_set; - unsigned cpu; - int last; - size_t setsize; - - last = hwloc_bitmap_last(hwloc_set); - if (last == -1) { - errno = EINVAL; - return -1; - } - - setsize = CPU_ALLOC_SIZE(last+1); - plinux_set = CPU_ALLOC(last+1); - - CPU_ZERO_S(setsize, plinux_set); - hwloc_bitmap_foreach_begin(cpu, hwloc_set) - CPU_SET_S(cpu, setsize, plinux_set); - hwloc_bitmap_foreach_end(); - - err = pthread_setaffinity_np(tid, setsize, plinux_set); - - CPU_FREE(plinux_set); - } -#elif defined(HWLOC_HAVE_CPU_SET) - /* Use a separate block so that we can define specific variable - types here */ - { - cpu_set_t linux_set; - unsigned cpu; - - CPU_ZERO(&linux_set); - hwloc_bitmap_foreach_begin(cpu, hwloc_set) - CPU_SET(cpu, &linux_set); - hwloc_bitmap_foreach_end(); - -#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY - err = pthread_setaffinity_np(tid, &linux_set); -#else /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ - err = pthread_setaffinity_np(tid, sizeof(linux_set), &linux_set); -#endif /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ - } -#else /* CPU_SET */ - /* Use a separate block so that we can define specific variable - types here */ - { - unsigned long mask = hwloc_bitmap_to_ulong(hwloc_set); - -#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY - err = pthread_setaffinity_np(tid, (void*) &mask); -#else /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ - err = pthread_setaffinity_np(tid, sizeof(mask), (void*) &mask); -#endif /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ - } -#endif /* CPU_SET */ - - if (err) { - errno = err; - return -1; - } - return 0; -} -#endif /* HAVE_DECL_PTHREAD_SETAFFINITY_NP */ - -#if HAVE_DECL_PTHREAD_GETAFFINITY_NP -#pragma weak pthread_getaffinity_np -#pragma weak pthread_self - -static int -hwloc_linux_get_thread_cpubind(hwloc_topology_t topology, pthread_t tid, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) -{ - int err; - - if (topology->pid) { - errno = ENOSYS; - return -1; - } - - if (!pthread_self) { - /* ?! Application uses set_thread_cpubind, but doesn't link against libpthread ?! */ - errno = ENOSYS; - return -1; - } - if (tid == pthread_self()) - return hwloc_linux_get_tid_cpubind(topology, 0, hwloc_set); - - if (!pthread_getaffinity_np) { - errno = ENOSYS; - return -1; - } - /* TODO Kerrighed */ - -#if defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY) - /* Use a separate block so that we can define specific variable - types here */ - { - cpu_set_t *plinux_set; - unsigned cpu; - int last; - size_t setsize; - - last = hwloc_bitmap_last(topology->levels[0][0]->complete_cpuset); - assert (last != -1); - - setsize = CPU_ALLOC_SIZE(last+1); - plinux_set = CPU_ALLOC(last+1); - - err = pthread_getaffinity_np(tid, setsize, plinux_set); - if (err) { - CPU_FREE(plinux_set); - errno = err; - return -1; - } - - hwloc_bitmap_zero(hwloc_set); - for(cpu=0; cpu<(unsigned) last; cpu++) - if (CPU_ISSET_S(cpu, setsize, plinux_set)) - hwloc_bitmap_set(hwloc_set, cpu); - - CPU_FREE(plinux_set); - } -#elif defined(HWLOC_HAVE_CPU_SET) - /* Use a separate block so that we can define specific variable - types here */ - { - cpu_set_t linux_set; - unsigned cpu; - -#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY - err = pthread_getaffinity_np(tid, &linux_set); -#else /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ - err = pthread_getaffinity_np(tid, sizeof(linux_set), &linux_set); -#endif /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ - if (err) { - errno = err; - return -1; - } - - hwloc_bitmap_zero(hwloc_set); - for(cpu=0; cpu<CPU_SETSIZE; cpu++) - if (CPU_ISSET(cpu, &linux_set)) - hwloc_bitmap_set(hwloc_set, cpu); - } -#else /* CPU_SET */ - /* Use a separate block so that we can define specific variable - types here */ - { - unsigned long mask; - -#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY - err = pthread_getaffinity_np(tid, (void*) &mask); -#else /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ - err = pthread_getaffinity_np(tid, sizeof(mask), (void*) &mask); -#endif /* HWLOC_HAVE_OLD_SCHED_SETAFFINITY */ - if (err) { - errno = err; - return -1; - } - - hwloc_bitmap_from_ulong(hwloc_set, mask); - } -#endif /* CPU_SET */ - - return 0; -} -#endif /* HAVE_DECL_PTHREAD_GETAFFINITY_NP */ - -static int -hwloc_linux_get_tid_last_cpu_location(hwloc_topology_t topology __hwloc_attribute_unused, pid_t tid, hwloc_bitmap_t set) -{ - /* read /proc/pid/stat. - * its second field contains the command name between parentheses, - * and the command itself may contain parentheses, - * so read the whole line and find the last closing parenthesis to find the third field. - */ - char buf[1024] = ""; - char name[64]; - char *tmp; - FILE *file; - int i; - - if (!tid) { -#ifdef SYS_gettid - tid = syscall(SYS_gettid); -#else - errno = ENOSYS; - return -1; -#endif - } - - snprintf(name, sizeof(name), "/proc/%lu/stat", (unsigned long) tid); - file = fopen(name, "r"); - if (!file) { - errno = ENOSYS; - return -1; - } - tmp = fgets(buf, sizeof(buf), file); - fclose(file); - if (!tmp) { - errno = ENOSYS; - return -1; - } - - tmp = strrchr(buf, ')'); - if (!tmp) { - errno = ENOSYS; - return -1; - } - /* skip ') ' to find the actual third argument */ - tmp += 2; - - /* skip 35 fields */ - for(i=0; i<36; i++) { - tmp = strchr(tmp, ' '); - if (!tmp) { - errno = ENOSYS; - return -1; - } - /* skip the ' ' itself */ - tmp++; - } - - /* read the last cpu in the 38th field now */ - if (sscanf(tmp, "%d ", &i) != 1) { - errno = ENOSYS; - return -1; - } - - hwloc_bitmap_only(set, i); - return 0; -} - -static int -hwloc_linux_foreach_proc_tid_get_last_cpu_location_cb(hwloc_topology_t topology, pid_t tid, void *data, int idx, int flags __hwloc_attribute_unused) -{ - hwloc_bitmap_t *cpusets = data; - hwloc_bitmap_t cpuset = cpusets[0]; - hwloc_bitmap_t tidset = cpusets[1]; - - if (hwloc_linux_get_tid_last_cpu_location(topology, tid, tidset)) - return -1; - - /* reset the cpuset on first iteration */ - if (!idx) - hwloc_bitmap_zero(cpuset); - - hwloc_bitmap_or(cpuset, cpuset, tidset); - return 0; -} - -static int -hwloc_linux_get_pid_last_cpu_location(hwloc_topology_t topology, pid_t pid, hwloc_bitmap_t hwloc_set, int flags) -{ - hwloc_bitmap_t tidset = hwloc_bitmap_alloc(); - hwloc_bitmap_t cpusets[2]; - int ret; - - cpusets[0] = hwloc_set; - cpusets[1] = tidset; - ret = hwloc_linux_foreach_proc_tid(topology, pid, - hwloc_linux_foreach_proc_tid_get_last_cpu_location_cb, - (void*) cpusets, flags); - hwloc_bitmap_free(tidset); - return ret; -} - -static int -hwloc_linux_get_proc_last_cpu_location(hwloc_topology_t topology, pid_t pid, hwloc_bitmap_t hwloc_set, int flags) -{ - if (pid == 0) - pid = topology->pid; - if (flags & HWLOC_CPUBIND_THREAD) - return hwloc_linux_get_tid_last_cpu_location(topology, pid, hwloc_set); - else - return hwloc_linux_get_pid_last_cpu_location(topology, pid, hwloc_set, flags); -} - -static int -hwloc_linux_get_thisproc_last_cpu_location(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags) -{ - return hwloc_linux_get_pid_last_cpu_location(topology, topology->pid, hwloc_set, flags); -} - -static int -hwloc_linux_get_thisthread_last_cpu_location(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) -{ - if (topology->pid) { - errno = ENOSYS; - return -1; - } - return hwloc_linux_get_tid_last_cpu_location(topology, 0, hwloc_set); -} - - -#if defined HWLOC_HAVE_SET_MEMPOLICY || defined HWLOC_HAVE_MBIND -static int -hwloc_linux_membind_policy_from_hwloc(int *linuxpolicy, hwloc_membind_policy_t policy, int flags) -{ - switch (policy) { - case HWLOC_MEMBIND_DEFAULT: - case HWLOC_MEMBIND_FIRSTTOUCH: - *linuxpolicy = MPOL_DEFAULT; - break; - case HWLOC_MEMBIND_BIND: - if (flags & HWLOC_MEMBIND_STRICT) - *linuxpolicy = MPOL_BIND; - else - *linuxpolicy = MPOL_PREFERRED; - break; - case HWLOC_MEMBIND_INTERLEAVE: - *linuxpolicy = MPOL_INTERLEAVE; - break; - /* TODO: next-touch when (if?) patch applied upstream */ - default: - errno = ENOSYS; - return -1; - } - return 0; -} - -static int -hwloc_linux_membind_mask_from_nodeset(hwloc_topology_t topology __hwloc_attribute_unused, - hwloc_const_nodeset_t nodeset, - unsigned *max_os_index_p, unsigned long **linuxmaskp) -{ - unsigned max_os_index = 0; /* highest os_index + 1 */ - unsigned long *linuxmask; - unsigned i; - hwloc_nodeset_t linux_nodeset = NULL; - - if (hwloc_bitmap_isfull(nodeset)) { - linux_nodeset = hwloc_bitmap_alloc(); - hwloc_bitmap_only(linux_nodeset, 0); - nodeset = linux_nodeset; - } - - max_os_index = hwloc_bitmap_last(nodeset); - if (max_os_index == (unsigned) -1) - max_os_index = 0; - /* add 1 to convert the last os_index into a max_os_index, - * and round up to the nearest multiple of BITS_PER_LONG */ - max_os_index = (max_os_index + 1 + HWLOC_BITS_PER_LONG - 1) & ~(HWLOC_BITS_PER_LONG - 1); - - linuxmask = calloc(max_os_index/HWLOC_BITS_PER_LONG, sizeof(long)); - if (!linuxmask) { - errno = ENOMEM; - return -1; - } - - for(i=0; i<max_os_index/HWLOC_BITS_PER_LONG; i++) - linuxmask[i] = hwloc_bitmap_to_ith_ulong(nodeset, i); - - if (linux_nodeset) - hwloc_bitmap_free(linux_nodeset); - - *max_os_index_p = max_os_index; - *linuxmaskp = linuxmask; - return 0; -} - -static void -hwloc_linux_membind_mask_to_nodeset(hwloc_topology_t topology __hwloc_attribute_unused, - hwloc_nodeset_t nodeset, - unsigned max_os_index, const unsigned long *linuxmask) -{ - unsigned i; - -#ifdef HWLOC_DEBUG - /* max_os_index comes from hwloc_linux_find_kernel_max_numnodes() so it's a multiple of HWLOC_BITS_PER_LONG */ - assert(!(max_os_index%HWLOC_BITS_PER_LONG)); -#endif - - hwloc_bitmap_zero(nodeset); - for(i=0; i<max_os_index/HWLOC_BITS_PER_LONG; i++) - hwloc_bitmap_set_ith_ulong(nodeset, i, linuxmask[i]); -} -#endif /* HWLOC_HAVE_SET_MEMPOLICY || HWLOC_HAVE_MBIND */ - -#ifdef HWLOC_HAVE_MBIND -static int -hwloc_linux_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - unsigned max_os_index; /* highest os_index + 1 */ - unsigned long *linuxmask; - size_t remainder; - int linuxpolicy; - unsigned linuxflags = 0; - int err; - - remainder = (uintptr_t) addr & (sysconf(_SC_PAGESIZE)-1); - addr = (char*) addr - remainder; - len += remainder; - - err = hwloc_linux_membind_policy_from_hwloc(&linuxpolicy, policy, flags); - if (err < 0) - return err; - - if (linuxpolicy == MPOL_DEFAULT) - /* Some Linux kernels don't like being passed a set */ - return mbind((void *) addr, len, linuxpolicy, NULL, 0, 0); - - err = hwloc_linux_membind_mask_from_nodeset(topology, nodeset, &max_os_index, &linuxmask); - if (err < 0) - goto out; - - if (flags & HWLOC_MEMBIND_MIGRATE) { -#ifdef MPOL_MF_MOVE - linuxflags = MPOL_MF_MOVE; - if (flags & HWLOC_MEMBIND_STRICT) - linuxflags |= MPOL_MF_STRICT; -#else - if (flags & HWLOC_MEMBIND_STRICT) { - errno = ENOSYS; - goto out_with_mask; - } -#endif - } - - err = mbind((void *) addr, len, linuxpolicy, linuxmask, max_os_index+1, linuxflags); - if (err < 0) - goto out_with_mask; - - free(linuxmask); - return 0; - - out_with_mask: - free(linuxmask); - out: - return -1; -} - -static void * -hwloc_linux_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - void *buffer; - int err; - - buffer = hwloc_alloc_mmap(topology, len); - if (buffer == MAP_FAILED) - return NULL; - - err = hwloc_linux_set_area_membind(topology, buffer, len, nodeset, policy, flags); - if (err < 0 && policy & HWLOC_MEMBIND_STRICT) { - munmap(buffer, len); - return NULL; - } - - return buffer; -} -#endif /* HWLOC_HAVE_MBIND */ - -#ifdef HWLOC_HAVE_SET_MEMPOLICY -static int -hwloc_linux_set_thisthread_membind(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - unsigned max_os_index; /* highest os_index + 1 */ - unsigned long *linuxmask; - int linuxpolicy; - int err; - - err = hwloc_linux_membind_policy_from_hwloc(&linuxpolicy, policy, flags); - if (err < 0) - return err; - - if (linuxpolicy == MPOL_DEFAULT) - /* Some Linux kernels don't like being passed a set */ - return set_mempolicy(linuxpolicy, NULL, 0); - - err = hwloc_linux_membind_mask_from_nodeset(topology, nodeset, &max_os_index, &linuxmask); - if (err < 0) - goto out; - - if (flags & HWLOC_MEMBIND_MIGRATE) { -#ifdef HWLOC_HAVE_MIGRATE_PAGES - unsigned long *fullmask = malloc(max_os_index/HWLOC_BITS_PER_LONG * sizeof(long)); - if (fullmask) { - memset(fullmask, 0xf, max_os_index/HWLOC_BITS_PER_LONG * sizeof(long)); - err = migrate_pages(0, max_os_index+1, fullmask, linuxmask); - free(fullmask); - } else - err = -1; - if (err < 0 && (flags & HWLOC_MEMBIND_STRICT)) - goto out_with_mask; -#else - errno = ENOSYS; - goto out_with_mask; -#endif - } - - err = set_mempolicy(linuxpolicy, linuxmask, max_os_index+1); - if (err < 0) - goto out_with_mask; - - free(linuxmask); - return 0; - - out_with_mask: - free(linuxmask); - out: - return -1; -} - -/* - * On some kernels, get_mempolicy requires the output size to be larger - * than the kernel MAX_NUMNODES (defined by CONFIG_NODES_SHIFT). - * Try get_mempolicy on ourself until we find a max_os_index value that - * makes the kernel happy. - */ -static int -hwloc_linux_find_kernel_max_numnodes(hwloc_topology_t topology __hwloc_attribute_unused) -{ - static int max_numnodes = -1; - int linuxpolicy; - - if (max_numnodes != -1) - /* already computed */ - return max_numnodes; - - /* start with a single ulong, it's the minimal and it's enough for most machines */ - max_numnodes = HWLOC_BITS_PER_LONG; - while (1) { - unsigned long *mask = malloc(max_numnodes / HWLOC_BITS_PER_LONG * sizeof(long)); - int err = get_mempolicy(&linuxpolicy, mask, max_numnodes, 0, 0); - free(mask); - if (!err || errno != EINVAL) - /* found it */ - return max_numnodes; - max_numnodes *= 2; - } -} - -static int -hwloc_linux_get_thisthread_membind(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t *policy, int flags __hwloc_attribute_unused) -{ - unsigned max_os_index; - unsigned long *linuxmask; - int linuxpolicy; - int err; - - max_os_index = hwloc_linux_find_kernel_max_numnodes(topology); - - linuxmask = malloc(max_os_index/HWLOC_BITS_PER_LONG * sizeof(long)); - if (!linuxmask) { - errno = ENOMEM; - goto out; - } - - err = get_mempolicy(&linuxpolicy, linuxmask, max_os_index, 0, 0); - if (err < 0) - goto out_with_mask; - - if (linuxpolicy == MPOL_DEFAULT) { - hwloc_bitmap_copy(nodeset, hwloc_topology_get_topology_nodeset(topology)); - } else { - hwloc_linux_membind_mask_to_nodeset(topology, nodeset, max_os_index, linuxmask); - } - - switch (linuxpolicy) { - case MPOL_DEFAULT: - *policy = HWLOC_MEMBIND_FIRSTTOUCH; - break; - case MPOL_PREFERRED: - case MPOL_BIND: - *policy = HWLOC_MEMBIND_BIND; - break; - case MPOL_INTERLEAVE: - *policy = HWLOC_MEMBIND_INTERLEAVE; - break; - default: - errno = EINVAL; - goto out_with_mask; - } - - free(linuxmask); - return 0; - - out_with_mask: - free(linuxmask); - out: - return -1; -} - -#endif /* HWLOC_HAVE_SET_MEMPOLICY */ - -int -hwloc_backend_sysfs_init(struct hwloc_topology *topology, const char *fsroot_path __hwloc_attribute_unused) -{ -#ifdef HAVE_OPENAT - int root; - - assert(topology->backend_type == HWLOC_BACKEND_NONE); - - if (!fsroot_path) - fsroot_path = "/"; - - root = open(fsroot_path, O_RDONLY | O_DIRECTORY); - if (root < 0) - return -1; - - if (strcmp(fsroot_path, "/")) - topology->is_thissystem = 0; - - topology->backend_params.sysfs.root_path = strdup(fsroot_path); - topology->backend_params.sysfs.root_fd = root; -#else - topology->backend_params.sysfs.root_path = NULL; - topology->backend_params.sysfs.root_fd = -1; -#endif - topology->backend_type = HWLOC_BACKEND_SYSFS; - return 0; -} - -void -hwloc_backend_sysfs_exit(struct hwloc_topology *topology) -{ - assert(topology->backend_type == HWLOC_BACKEND_SYSFS); -#ifdef HAVE_OPENAT - close(topology->backend_params.sysfs.root_fd); - free(topology->backend_params.sysfs.root_path); - topology->backend_params.sysfs.root_path = NULL; -#endif - topology->backend_type = HWLOC_BACKEND_NONE; -} - -static int -hwloc_parse_sysfs_unsigned(const char *mappath, unsigned *value, int fsroot_fd) -{ - char string[11]; - FILE * fd; - - fd = hwloc_fopen(mappath, "r", fsroot_fd); - if (!fd) { - *value = -1; - return -1; - } - - if (!fgets(string, 11, fd)) { - *value = -1; - fclose(fd); - return -1; - } - *value = strtoul(string, NULL, 10); - - fclose(fd); - - return 0; -} - - -/* kernel cpumaps are composed of an array of 32bits cpumasks */ -#define KERNEL_CPU_MASK_BITS 32 -#define KERNEL_CPU_MAP_LEN (KERNEL_CPU_MASK_BITS/4+2) - -int -hwloc_linux_parse_cpumap_file(FILE *file, hwloc_bitmap_t set) -{ - unsigned long *maps; - unsigned long map; - int nr_maps = 0; - static int nr_maps_allocated = 8; /* only compute the power-of-two above the kernel cpumask size once */ - int i; - - maps = malloc(nr_maps_allocated * sizeof(*maps)); - - /* reset to zero first */ - hwloc_bitmap_zero(set); - - /* parse the whole mask */ - while (fscanf(file, "%lx,", &map) == 1) /* read one kernel cpu mask and the ending comma */ - { - if (nr_maps == nr_maps_allocated) { - nr_maps_allocated *= 2; - maps = realloc(maps, nr_maps_allocated * sizeof(*maps)); - } - - if (!map && !nr_maps) - /* ignore the first map if it's empty */ - continue; - - memmove(&maps[1], &maps[0], nr_maps*sizeof(*maps)); - maps[0] = map; - nr_maps++; - } - - /* convert into a set */ -#if KERNEL_CPU_MASK_BITS == HWLOC_BITS_PER_LONG - for(i=0; i<nr_maps; i++) - hwloc_bitmap_set_ith_ulong(set, i, maps[i]); -#else - for(i=0; i<(nr_maps+1)/2; i++) { - unsigned long mask; - mask = maps[2*i]; - if (2*i+1<nr_maps) - mask |= maps[2*i+1] << KERNEL_CPU_MASK_BITS; - hwloc_bitmap_set_ith_ulong(set, i, mask); - } -#endif - - free(maps); - - return 0; -} - -static hwloc_bitmap_t -hwloc_parse_cpumap(const char *mappath, int fsroot_fd) -{ - hwloc_bitmap_t set; - FILE * file; - - file = hwloc_fopen(mappath, "r", fsroot_fd); - if (!file) - return NULL; - - set = hwloc_bitmap_alloc(); - hwloc_linux_parse_cpumap_file(file, set); - - fclose(file); - return set; -} - -static char * -hwloc_strdup_mntpath(const char *escapedpath, size_t length) -{ - char *path = malloc(length+1); - const char *src = escapedpath, *tmp = src; - char *dst = path; - - while ((tmp = strchr(src, '\\')) != NULL) { - strncpy(dst, src, tmp-src); - dst += tmp-src; - if (!strncmp(tmp+1, "040", 3)) - *dst = ' '; - else if (!strncmp(tmp+1, "011", 3)) - *dst = ' '; - else if (!strncmp(tmp+1, "012", 3)) - *dst = '\n'; - else - *dst = '\\'; - dst++; - src = tmp+4; - } - - strcpy(dst, src); - - return path; -} - -static void -hwloc_find_linux_cpuset_mntpnt(char **cgroup_mntpnt, char **cpuset_mntpnt, int fsroot_fd) -{ -#define PROC_MOUNT_LINE_LEN 512 - char line[PROC_MOUNT_LINE_LEN]; - FILE *fd; - - *cgroup_mntpnt = NULL; - *cpuset_mntpnt = NULL; - - /* ideally we should use setmntent, getmntent, hasmntopt and endmntent, - * but they do not support fsroot_fd. - */ - - fd = hwloc_fopen("/proc/mounts", "r", fsroot_fd); - if (!fd) - return; - - while (fgets(line, sizeof(line), fd)) { - char *path; - char *type; - char *tmp; - - /* remove the ending " 0 0\n" that the kernel always adds */ - tmp = line + strlen(line) - 5; - if (tmp < line || strcmp(tmp, " 0 0\n")) - fprintf(stderr, "Unexpected end of /proc/mounts line `%s'\n", line); - else - *tmp = '\0'; - - /* path is after first field and a space */ - tmp = strchr(line, ' '); - if (!tmp) - continue; - path = tmp+1; - - /* type is after path, which may not contain spaces since the kernel escaped them to \040 - * (see the manpage of getmntent) */ - tmp = strchr(path, ' '); - if (!tmp) - continue; - type = tmp+1; - /* mark the end of path to ease upcoming strdup */ - *tmp = '\0'; - - if (!strncmp(type, "cpuset ", 7)) { - /* found a cpuset mntpnt */ - hwloc_debug("Found cpuset mount point on %s\n", path); - *cpuset_mntpnt = hwloc_strdup_mntpath(path, type-path); - break; - - } else if (!strncmp(type, "cgroup ", 7)) { - /* found a cgroup mntpnt */ - char *opt, *opts; - int cpuset_opt = 0; - int noprefix_opt = 0; - - /* find options */ - tmp = strchr(type, ' '); - if (!tmp) - continue; - opts = tmp+1; - - /* look at options */ - while ((opt = strsep(&opts, ",")) != NULL) { - if (!strcmp(opt, "cpuset")) - cpuset_opt = 1; - else if (!strcmp(opt, "noprefix")) - noprefix_opt = 1; - } - if (!cpuset_opt) - continue; - - if (noprefix_opt) { - hwloc_debug("Found cgroup emulating a cpuset mount point on %s\n", path); - *cpuset_mntpnt = hwloc_strdup_mntpath(path, type-path); - } else { - hwloc_debug("Found cgroup/cpuset mount point on %s\n", path); - *cgroup_mntpnt = hwloc_strdup_mntpath(path, type-path); - } - break; - } - } - - fclose(fd); -} - -/* - * Linux cpusets may be managed directly or through cgroup. - * If cgroup is used, tasks get a /proc/pid/cgroup which may contain a - * single line %d:cpuset:<name>. If cpuset are used they get /proc/pid/cpuset - * containing <name>. - */ -static char * -hwloc_read_linux_cpuset_name(int fsroot_fd, hwloc_pid_t pid) -{ -#define CPUSET_NAME_LEN 128 - char cpuset_name[CPUSET_NAME_LEN]; - FILE *fd; - char *tmp; - - /* check whether a cgroup-cpuset is enabled */ - if (!pid) - fd = hwloc_fopen("/proc/self/cgroup", "r", fsroot_fd); - else { - char path[] = "/proc/XXXXXXXXXX/cgroup"; - snprintf(path, sizeof(path), "/proc/%d/cgroup", pid); - fd = hwloc_fopen(path, "r", fsroot_fd); - } - if (fd) { - /* find a cpuset line */ -#define CGROUP_LINE_LEN 256 - char line[CGROUP_LINE_LEN]; - while (fgets(line, sizeof(line), fd)) { - char *end, *colon = strchr(line, ':'); - if (!colon) - continue; - if (strncmp(colon, ":cpuset:", 8)) - continue; - - /* found a cgroup-cpuset line, return the name */ - fclose(fd); - end = strchr(colon, '\n'); - if (end) - *end = '\0'; - hwloc_debug("Found cgroup-cpuset %s\n", colon+8); - return strdup(colon+8); - } - fclose(fd); - } - - /* check whether a cpuset is enabled */ - if (!pid) - fd = hwloc_fopen("/proc/self/cpuset", "r", fsroot_fd); - else { - char path[] = "/proc/XXXXXXXXXX/cpuset"; - snprintf(path, sizeof(path), "/proc/%d/cpuset", pid); - fd = hwloc_fopen(path, "r", fsroot_fd); - } - if (!fd) { - /* found nothing */ - hwloc_debug("%s", "No cgroup or cpuset found\n"); - return NULL; - } - - /* found a cpuset, return the name */ - tmp = fgets(cpuset_name, sizeof(cpuset_name), fd); - fclose(fd); - if (!tmp) - return NULL; - tmp = strchr(cpuset_name, '\n'); - if (tmp) - *tmp = '\0'; - hwloc_debug("Found cpuset %s\n", cpuset_name); - return strdup(cpuset_name); -} - -/* - * Then, the cpuset description is available from either the cgroup or - * the cpuset filesystem (usually mounted in / or /dev) where there - * are cgroup<name>/cpuset.{cpus,mems} or cpuset<name>/{cpus,mems} files. - */ -static char * -hwloc_read_linux_cpuset_mask(const char *cgroup_mntpnt, const char *cpuset_mntpnt, const char *cpuset_name, const char *attr_name, int fsroot_fd) -{ -#define CPUSET_FILENAME_LEN 256 - char cpuset_filename[CPUSET_FILENAME_LEN]; - FILE *fd; - char *info = NULL, *tmp; - ssize_t ssize; - size_t size; - - if (cgroup_mntpnt) { - /* try to read the cpuset from cgroup */ - snprintf(cpuset_filename, CPUSET_FILENAME_LEN, "%s%s/cpuset.%s", cgroup_mntpnt, cpuset_name, attr_name); - hwloc_debug("Trying to read cgroup file <%s>\n", cpuset_filename); - fd = hwloc_fopen(cpuset_filename, "r", fsroot_fd); - if (fd) - goto gotfile; - } else if (cpuset_mntpnt) { - /* try to read the cpuset directly */ - snprintf(cpuset_filename, CPUSET_FILENAME_LEN, "%s%s/%s", cpuset_mntpnt, cpuset_name, attr_name); - hwloc_debug("Trying to read cpuset file <%s>\n", cpuset_filename); - fd = hwloc_fopen(cpuset_filename, "r", fsroot_fd); - if (fd) - goto gotfile; - } - - /* found no cpuset description, ignore it */ - hwloc_debug("Couldn't find cpuset <%s> description, ignoring\n", cpuset_name); - goto out; - -gotfile: - ssize = getline(&info, &size, fd); - fclose(fd); - if (ssize < 0) - goto out; - if (!info) - goto out; - - tmp = strchr(info, '\n'); - if (tmp) - *tmp = '\0'; - -out: - return info; -} - -static void -hwloc_admin_disable_set_from_cpuset(struct hwloc_topology *topology, - const char *cgroup_mntpnt, const char *cpuset_mntpnt, const char *cpuset_name, - const char *attr_name, - hwloc_bitmap_t admin_enabled_cpus_set) -{ - char *cpuset_mask; - char *current, *comma, *tmp; - int prevlast, nextfirst, nextlast; /* beginning/end of enabled-segments */ - hwloc_bitmap_t tmpset; - - cpuset_mask = hwloc_read_linux_cpuset_mask(cgroup_mntpnt, cpuset_mntpnt, cpuset_name, - attr_name, topology->backend_params.sysfs.root_fd); - if (!cpuset_mask) - return; - - hwloc_debug("found cpuset %s: %s\n", attr_name, cpuset_mask); - - current = cpuset_mask; - prevlast = -1; - - while (1) { - /* save a pointer to the next comma and erase it to simplify things */ - comma = strchr(current, ','); - if (comma) - *comma = '\0'; - - /* find current enabled-segment bounds */ - nextfirst = strtoul(current, &tmp, 0); - if (*tmp == '-') - nextlast = strtoul(tmp+1, NULL, 0); - else - nextlast = nextfirst; - if (prevlast+1 <= nextfirst-1) { - hwloc_debug("%s [%d:%d] excluded by cpuset\n", attr_name, prevlast+1, nextfirst-1); - hwloc_bitmap_clr_range(admin_enabled_cpus_set, prevlast+1, nextfirst-1); - } - - /* switch to next enabled-segment */ - prevlast = nextlast; - if (!comma) - break; - current = comma+1; - } - - hwloc_debug("%s [%d:%d] excluded by cpuset\n", attr_name, prevlast+1, nextfirst-1); - /* no easy way to clear until the infinity */ - tmpset = hwloc_bitmap_alloc(); - hwloc_bitmap_set_range(tmpset, 0, prevlast); - hwloc_bitmap_and(admin_enabled_cpus_set, admin_enabled_cpus_set, tmpset); - hwloc_bitmap_free(tmpset); - - free(cpuset_mask); -} - -static void -hwloc_parse_meminfo_info(struct hwloc_topology *topology, - const char *path, - int prefixlength, - uint64_t *local_memory, - uint64_t *meminfo_hugepages_count, - uint64_t *meminfo_hugepages_size, - int onlytotal) -{ - char string[64]; - FILE *fd; - - fd = hwloc_fopen(path, "r", topology->backend_params.sysfs.root_fd); - if (!fd) - return; - - while (fgets(string, sizeof(string), fd) && *string != '\0') - { - unsigned long long number; - if (strlen(string) < (size_t) prefixlength) - continue; - if (sscanf(string+prefixlength, "MemTotal: %llu kB", (unsigned long long *) &number) == 1) { - *local_memory = number << 10; - if (onlytotal) - break; - } - else if (!onlytotal) { - if (sscanf(string+prefixlength, "Hugepagesize: %llu", (unsigned long long *) &number) == 1) - *meminfo_hugepages_size = number << 10; - else if (sscanf(string+prefixlength, "HugePages_Free: %llu", (unsigned long long *) &number) == 1) - /* these are free hugepages, not the total amount of huge pages */ - *meminfo_hugepages_count = number; - } - } - - fclose(fd); -} - -#define SYSFS_NUMA_NODE_PATH_LEN 128 - -static void -hwloc_parse_hugepages_info(struct hwloc_topology *topology, - const char *dirpath, - struct hwloc_obj_memory_s *memory, - uint64_t *remaining_local_memory) -{ - DIR *dir; - struct dirent *dirent; - unsigned long index_ = 1; - FILE *hpfd; - char line[64]; - char path[SYSFS_NUMA_NODE_PATH_LEN]; - - dir = hwloc_opendir(dirpath, topology->backend_params.sysfs.root_fd); - if (dir) { - while ((dirent = readdir(dir)) != NULL) { - if (strncmp(dirent->d_name, "hugepages-", 10)) - continue; - memory->page_types[index_].size = strtoul(dirent->d_name+10, NULL, 0) * 1024ULL; - sprintf(path, "%s/%s/nr_hugepages", dirpath, dirent->d_name); - hpfd = hwloc_fopen(path, "r", topology->backend_params.sysfs.root_fd); - if (hpfd) { - if (fgets(line, sizeof(line), hpfd)) { - fclose(hpfd); - /* these are the actual total amount of huge pages */ - memory->page_types[index_].count = strtoull(line, NULL, 0); - *remaining_local_memory -= memory->page_types[index_].count * memory->page_types[index_].size; - index_++; - } - } - } - closedir(dir); - memory->page_types_len = index_; - } -} - -static void -hwloc_get_kerrighed_node_meminfo_info(struct hwloc_topology *topology, unsigned long node, struct hwloc_obj_memory_s *memory) -{ - char path[128]; - uint64_t meminfo_hugepages_count, meminfo_hugepages_size = 0; - - if (topology->is_thissystem) { - memory->page_types_len = 2; - memory->page_types = malloc(2*sizeof(*memory->page_types)); - memset(memory->page_types, 0, 2*sizeof(*memory->page_types)); - /* Try to get the hugepage size from sysconf in case we fail to get it from /proc/meminfo later */ -#ifdef HAVE__SC_LARGE_PAGESIZE - memory->page_types[1].size = sysconf(_SC_LARGE_PAGESIZE); -#endif - memory->page_types[0].size = getpagesize(); - } - - snprintf(path, sizeof(path), "/proc/nodes/node%lu/meminfo", node); - hwloc_parse_meminfo_info(topology, path, 0 /* no prefix */, - &memory->local_memory, - &meminfo_hugepages_count, &meminfo_hugepages_size, - memory->page_types == NULL); - - if (memory->page_types) { - uint64_t remaining_local_memory = memory->local_memory; - if (meminfo_hugepages_size) { - memory->page_types[1].size = meminfo_hugepages_size; - memory->page_types[1].count = meminfo_hugepages_count; - remaining_local_memory -= meminfo_hugepages_count * meminfo_hugepages_size; - } else { - memory->page_types_len = 1; - } - memory->page_types[0].count = remaining_local_memory / memory->page_types[0].size; - } -} - -static void -hwloc_get_procfs_meminfo_info(struct hwloc_topology *topology, struct hwloc_obj_memory_s *memory) -{ - uint64_t meminfo_hugepages_count, meminfo_hugepages_size = 0; - struct stat st; - int has_sysfs_hugepages = 0; - int types = 2; - int err; - - err = hwloc_stat("/sys/kernel/mm/hugepages", &st, topology->backend_params.sysfs.root_fd); - if (!err) { - types = 1 + st.st_nlink-2; - has_sysfs_hugepages = 1; - } - - if (topology->is_thissystem) { - memory->page_types_len = types; - memory->page_types = malloc(types*sizeof(*memory->page_types)); - memset(memory->page_types, 0, types*sizeof(*memory->page_types)); - /* Try to get the hugepage size from sysconf in case we fail to get it from /proc/meminfo later */ -#ifdef HAVE__SC_LARGE_PAGESIZE - memory->page_types[1].size = sysconf(_SC_LARGE_PAGESIZE); -#endif - memory->page_types[0].size = getpagesize(); - } - - hwloc_parse_meminfo_info(topology, "/proc/meminfo", 0 /* no prefix */, - &memory->local_memory, - &meminfo_hugepages_count, &meminfo_hugepages_size, - memory->page_types == NULL); - - if (memory->page_types) { - uint64_t remaining_local_memory = memory->local_memory; - if (has_sysfs_hugepages) { - /* read from node%d/hugepages/hugepages-%skB/nr_hugepages */ - hwloc_parse_hugepages_info(topology, "/sys/kernel/mm/hugepages", memory, &remaining_local_memory); - } else { - /* use what we found in meminfo */ - if (meminfo_hugepages_size) { - memory->page_types[1].size = meminfo_hugepages_size; - memory->page_types[1].count = meminfo_hugepages_count; - remaining_local_memory -= meminfo_hugepages_count * meminfo_hugepages_size; - } else { - memory->page_types_len = 1; - } - } - memory->page_types[0].count = remaining_local_memory / memory->page_types[0].size; - } -} - -static void -hwloc_sysfs_node_meminfo_info(struct hwloc_topology *topology, - const char *syspath, int node, - struct hwloc_obj_memory_s *memory) -{ - char path[SYSFS_NUMA_NODE_PATH_LEN]; - char meminfopath[SYSFS_NUMA_NODE_PATH_LEN]; - uint64_t meminfo_hugepages_count = 0; - uint64_t meminfo_hugepages_size = 0; - struct stat st; - int has_sysfs_hugepages = 0; - int types = 2; - int err; - - sprintf(path, "%s/node%d/hugepages", syspath, node); - err = hwloc_stat(path, &st, topology->backend_params.sysfs.root_fd); - if (!err) { - types = 1 + st.st_nlink-2; - has_sysfs_hugepages = 1; - } - - if (topology->is_thissystem) { - memory->page_types_len = types; - memory->page_types = malloc(types*sizeof(*memory->page_types)); - memset(memory->page_types, 0, types*sizeof(*memory->page_types)); - } - - sprintf(meminfopath, "%s/node%d/meminfo", syspath, node); - hwloc_parse_meminfo_info(topology, meminfopath, - hwloc_snprintf(NULL, 0, "Node %d ", node), - &memory->local_memory, - &meminfo_hugepages_count, NULL /* no hugepage size in node-specific meminfo */, - memory->page_types == NULL); - - if (memory->page_types) { - uint64_t remaining_local_memory = memory->local_memory; - if (has_sysfs_hugepages) { - /* read from node%d/hugepages/hugepages-%skB/nr_hugepages */ - hwloc_parse_hugepages_info(topology, path, memory, &remaining_local_memory); - } else { - /* get hugepage size from machine-specific meminfo since there is no size in node-specific meminfo, - * hwloc_get_procfs_meminfo_info must have been called earlier */ - meminfo_hugepages_size = topology->levels[0][0]->memory.page_types[1].size; - /* use what we found in meminfo */ - if (meminfo_hugepages_size) { - memory->page_types[1].count = meminfo_hugepages_count; - memory->page_types[1].size = meminfo_hugepages_size; - remaining_local_memory -= meminfo_hugepages_count * meminfo_hugepages_size; - } else { - memory->page_types_len = 1; - } - } - /* update what's remaining as normal pages */ - memory->page_types[0].size = getpagesize(); - memory->page_types[0].count = remaining_local_memory / memory->page_types[0].size; - } -} - -static void -hwloc_parse_node_distance(const char *distancepath, unsigned nbnodes, float *distances, int fsroot_fd) -{ - char string[4096]; /* enough for hundreds of nodes */ - char *tmp, *next; - FILE * fd; - - fd = hwloc_fopen(distancepath, "r", fsroot_fd); - if (!fd) - return; - - if (!fgets(string, sizeof(string), fd)) { - fclose(fd); - return; - } - - tmp = string; - while (tmp) { - unsigned distance = strtoul(tmp, &next, 0); - if (next == tmp) - break; - *distances = (float) distance; - distances++; - nbnodes--; - if (!nbnodes) - break; - tmp = next+1; - } - - fclose(fd); -} - -static void -look_sysfsnode(struct hwloc_topology *topology, const char *path, unsigned *found) -{ - unsigned osnode; - unsigned nbnodes = 0; - DIR *dir; - struct dirent *dirent; - hwloc_obj_t node; - hwloc_bitmap_t nodeset = hwloc_bitmap_alloc(); - - *found = 0; - - /* Get the list of nodes first */ - dir = hwloc_opendir(path, topology->backend_params.sysfs.root_fd); - if (dir) - { - while ((dirent = readdir(dir)) != NULL) - { - if (strncmp(dirent->d_name, "node", 4)) - continue; - osnode = strtoul(dirent->d_name+4, NULL, 0); - hwloc_bitmap_set(nodeset, osnode); - nbnodes++; - } - closedir(dir); - } - - if (nbnodes <= 1) - { - hwloc_bitmap_free(nodeset); - return; - } - - /* For convenience, put these declarations inside a block. */ - - { - hwloc_obj_t * nodes = calloc(nbnodes, sizeof(hwloc_obj_t)); - float * distances = calloc(nbnodes*nbnodes, sizeof(float)); - unsigned *indexes = calloc(nbnodes, sizeof(unsigned)); - unsigned index_; - - if (NULL == indexes || NULL == distances || NULL == nodes) { - free(nodes); - free(indexes); - free(distances); - goto out; - } - - /* Get node indexes now. We need them in order since Linux groups - * sparse distances but keep them in order in the sysfs distance files. - */ - index_ = 0; - hwloc_bitmap_foreach_begin (osnode, nodeset) { - indexes[index_] = osnode; - index_++; - } hwloc_bitmap_foreach_end(); - hwloc_bitmap_free(nodeset); - -#ifdef HWLOC_DEBUG - hwloc_debug("%s", "numa distance indexes: "); - for (index_ = 0; index_ < nbnodes; index_++) { - hwloc_debug(" %u", indexes[index_]); - } - hwloc_debug("%s", "\n"); -#endif - - /* Get actual distances now */ - for (index_ = 0; index_ < nbnodes; index_++) { - char nodepath[SYSFS_NUMA_NODE_PATH_LEN]; - hwloc_bitmap_t cpuset; - osnode = indexes[index_]; - - sprintf(nodepath, "%s/node%u/cpumap", path, osnode); - cpuset = hwloc_parse_cpumap(nodepath, topology->backend_params.sysfs.root_fd); - if (!cpuset) - continue; - - node = hwloc_alloc_setup_object(HWLOC_OBJ_NODE, osnode); - node->cpuset = cpuset; - node->nodeset = hwloc_bitmap_alloc(); - hwloc_bitmap_set(node->nodeset, osnode); - - hwloc_sysfs_node_meminfo_info(topology, path, osnode, &node->memory); - - hwloc_debug_1arg_bitmap("os node %u has cpuset %s\n", - osnode, node->cpuset); - hwloc_insert_object_by_cpuset(topology, node); - nodes[index_] = node; - - /* Linux nodeX/distance file contains distance from X to other localities (from ACPI SLIT table or so), - * store them in slots X*N...X*N+N-1 */ - sprintf(nodepath, "%s/node%u/distance", path, osnode); - hwloc_parse_node_distance(nodepath, nbnodes, distances+index_*nbnodes, topology->backend_params.sysfs.root_fd); - } - - hwloc_topology__set_distance_matrix(topology, HWLOC_OBJ_NODE, nbnodes, indexes, nodes, distances); - } - - out: - *found = nbnodes; -} - -/* Reads the entire file and returns bytes read if bytes_read != NULL - * Returned pointer can be freed by using free(). */ -static void * -hwloc_read_raw(const char *p, const char *p1, size_t *bytes_read, int root_fd) -{ - char *fname = NULL; - char *ret = NULL; - struct stat fs; - int file = -1; - unsigned len; - - len = strlen(p) + 1 + strlen(p1) + 1; - fname = malloc(len); - if (NULL == fname) { - return NULL; - } - snprintf(fname, len, "%s/%s", p, p1); - - file = hwloc_open(fname, root_fd); - if (-1 == file) { - goto out; - } - if (fstat(file, &fs)) { - goto out; - } - - ret = (char *) malloc(fs.st_size); - if (NULL != ret) { - ssize_t cb = read(file, ret, fs.st_size); - if (cb == -1) { - free(ret); - ret = NULL; - } else { - if (NULL != bytes_read) - *bytes_read = cb; - } - } - - out: - close(file); - if (NULL != fname) { - free(fname); - } - return ret; -} - -/* Reads the entire file and returns it as a 0-terminated string - * Returned pointer can be freed by using free(). */ -static char * -hwloc_read_str(const char *p, const char *p1, int root_fd) -{ - size_t cb = 0; - char *ret = hwloc_read_raw(p, p1, &cb, root_fd); - if ((NULL != ret) && (0 < cb) && (0 != ret[cb-1])) { - ret = realloc(ret, cb + 1); - ret[cb] = 0; - } - return ret; -} - -/* Reads first 32bit bigendian value */ -static ssize_t -hwloc_read_unit32be(const char *p, const char *p1, uint32_t *buf, int root_fd) -{ - size_t cb = 0; - uint32_t *tmp = hwloc_read_raw(p, p1, &cb, root_fd); - if (sizeof(*buf) != cb) { - errno = EINVAL; - return -1; - } - *buf = htonl(*tmp); - free(tmp); - return sizeof(*buf); -} - -typedef struct { - unsigned int n, allocated; - struct { - hwloc_bitmap_t cpuset; - uint32_t phandle; - uint32_t l2_cache; - char *name; - } *p; -} device_tree_cpus_t; - -static void -add_device_tree_cpus_node(device_tree_cpus_t *cpus, hwloc_bitmap_t cpuset, - uint32_t l2_cache, uint32_t phandle, const char *name) -{ - if (cpus->n == cpus->allocated) { - if (!cpus->allocated) - cpus->allocated = 64; - else - cpus->allocated *= 2; - cpus->p = realloc(cpus->p, cpus->allocated * sizeof(cpus->p[0])); - } - cpus->p[cpus->n].phandle = phandle; - cpus->p[cpus->n].cpuset = (NULL == cpuset)?NULL:hwloc_bitmap_dup(cpuset); - cpus->p[cpus->n].l2_cache = l2_cache; - cpus->p[cpus->n].name = strdup(name); - ++cpus->n; -} - -/* Walks over the cache list in order to detect nested caches and CPU mask for each */ -static int -look_powerpc_device_tree_discover_cache(device_tree_cpus_t *cpus, - uint32_t phandle, unsigned int *level, hwloc_bitmap_t cpuset) -{ - unsigned int i; - int ret = -1; - if ((NULL == level) || (NULL == cpuset) || phandle == (uint32_t) -1) - return ret; - for (i = 0; i < cpus->n; ++i) { - if (phandle != cpus->p[i].l2_cache) - continue; - if (NULL != cpus->p[i].cpuset) { - hwloc_bitmap_or(cpuset, cpuset, cpus->p[i].cpuset); - ret = 0; - } else { - ++(*level); - if (0 == look_powerpc_device_tree_discover_cache(cpus, - cpus->p[i].phandle, level, cpuset)) - ret = 0; - } - } - return ret; -} - -static void -try_add_cache_from_device_tree_cpu(struct hwloc_topology *topology, - const char *cpu, unsigned int level, hwloc_bitmap_t cpuset) -{ - /* Ignore Instruction caches */ - /* d-cache-block-size - ignore */ - /* d-cache-line-size - to read, in bytes */ - /* d-cache-sets - ignore */ - /* d-cache-size - to read, in bytes */ - /* d-tlb-sets - ignore */ - /* d-tlb-size - ignore, always 0 on power6 */ - /* i-cache-* and i-tlb-* represent instruction cache, ignore */ - uint32_t d_cache_line_size = 0, d_cache_size = 0; - struct hwloc_obj *c = NULL; - - hwloc_read_unit32be(cpu, "d-cache-line-size", &d_cache_line_size, - topology->backend_params.sysfs.root_fd); - hwloc_read_unit32be(cpu, "d-cache-size", &d_cache_size, - topology->backend_params.sysfs.root_fd); - - if ( (0 == d_cache_line_size) && (0 == d_cache_size) ) - return; - - c = hwloc_alloc_setup_object(HWLOC_OBJ_CACHE, -1); - c->attr->cache.depth = level; - c->attr->cache.linesize = d_cache_line_size; - c->attr->cache.size = d_cache_size; - c->cpuset = hwloc_bitmap_dup(cpuset); - hwloc_debug_1arg_bitmap("cache depth %d has cpuset %s\n", level, c->cpuset); - hwloc_insert_object_by_cpuset(topology, c); -} - -/* - * Discovers L1/L2/L3 cache information on IBM PowerPC systems for old kernels (RHEL5.*) - * which provide NUMA nodes information without any details - */ -static void -look_powerpc_device_tree(struct hwloc_topology *topology) -{ - device_tree_cpus_t cpus; - const char ofroot[] = "/proc/device-tree/cpus"; - unsigned int i; - int root_fd = topology->backend_params.sysfs.root_fd; - DIR *dt = hwloc_opendir(ofroot, root_fd); - struct dirent *dirent; - - cpus.n = 0; - cpus.p = NULL; - cpus.allocated = 0; - - if (NULL == dt) - return; - - while (NULL != (dirent = readdir(dt))) { - struct stat statbuf; - int err; - char *cpu; - char *device_type; - uint32_t reg = -1, l2_cache = -1, phandle = -1; - unsigned len; - - if ('.' == dirent->d_name[0]) - continue; - - len = sizeof(ofroot) + 1 + strlen(dirent->d_name) + 1; - cpu = malloc(len); - if (NULL == cpu) { - continue; - } - snprintf(cpu, len, "%s/%s", ofroot, dirent->d_name); - - err = hwloc_stat(cpu, &statbuf, root_fd); - if (err < 0 || !S_ISDIR(statbuf.st_mode)) - goto cont; - - device_type = hwloc_read_str(cpu, "device_type", root_fd); - if (NULL == device_type) - goto cont; - - hwloc_read_unit32be(cpu, "reg", ®, root_fd); - if (hwloc_read_unit32be(cpu, "next-level-cache", &l2_cache, root_fd) == -1) - hwloc_read_unit32be(cpu, "l2-cache", &l2_cache, root_fd); - if (hwloc_read_unit32be(cpu, "phandle", &phandle, root_fd) == -1) - if (hwloc_read_unit32be(cpu, "ibm,phandle", &phandle, root_fd) == -1) - hwloc_read_unit32be(cpu, "linux,phandle", &phandle, root_fd); - - if (0 == strcmp(device_type, "cache")) { - add_device_tree_cpus_node(&cpus, NULL, l2_cache, phandle, dirent->d_name); - } - else if (0 == strcmp(device_type, "cpu")) { - /* Found CPU */ - hwloc_bitmap_t cpuset = NULL; - size_t cb = 0; - uint32_t *threads = hwloc_read_raw(cpu, "ibm,ppc-interrupt-server#s", &cb, root_fd); - uint32_t nthreads = cb / sizeof(threads[0]); - - if (NULL != threads) { - cpuset = hwloc_bitmap_alloc(); - for (i = 0; i < nthreads; ++i) { - if (hwloc_bitmap_isset(topology->levels[0][0]->complete_cpuset, ntohl(threads[i]))) - hwloc_bitmap_set(cpuset, ntohl(threads[i])); - } - free(threads); - } else if ((unsigned int)-1 != reg) { - cpuset = hwloc_bitmap_alloc(); - hwloc_bitmap_set(cpuset, reg); - } - - if (NULL == cpuset) { - hwloc_debug("%s has no \"reg\" property, skipping\n", cpu); - } else { - struct hwloc_obj *core = NULL; - add_device_tree_cpus_node(&cpus, cpuset, l2_cache, phandle, dirent->d_name); - - /* Add core */ - core = hwloc_alloc_setup_object(HWLOC_OBJ_CORE, reg); - core->cpuset = hwloc_bitmap_dup(cpuset); - hwloc_insert_object_by_cpuset(topology, core); - - /* Add L1 cache */ - try_add_cache_from_device_tree_cpu(topology, cpu, 1, cpuset); - - hwloc_bitmap_free(cpuset); - } - free(device_type); - } -cont: - free(cpu); - } - closedir(dt); - - /* No cores and L2 cache were found, exiting */ - if (0 == cpus.n) { - hwloc_debug("No cores and L2 cache were found in %s, exiting\n", ofroot); - return; - } - -#ifdef HWLOC_DEBUG - for (i = 0; i < cpus.n; ++i) { - hwloc_debug("%i: %s ibm,phandle=%08X l2_cache=%08X ", - i, cpus.p[i].name, cpus.p[i].phandle, cpus.p[i].l2_cache); - if (NULL == cpus.p[i].cpuset) { - hwloc_debug("%s\n", "no cpuset"); - } else { - hwloc_debug_bitmap("cpuset %s\n", cpus.p[i].cpuset); - } - } -#endif - - /* Scan L2/L3/... caches */ - for (i = 0; i < cpus.n; ++i) { - unsigned int level = 2; - hwloc_bitmap_t cpuset; - /* Skip real CPUs */ - if (NULL != cpus.p[i].cpuset) - continue; - - /* Calculate cache level and CPU mask */ - cpuset = hwloc_bitmap_alloc(); - if (0 == look_powerpc_device_tree_discover_cache(&cpus, - cpus.p[i].phandle, &level, cpuset)) { - char *cpu; - unsigned len; - - len = sizeof(ofroot) + 1 + strlen(cpus.p[i].name) + 1; - cpu = malloc(len); - if (NULL == cpu) { - return; - } - snprintf(cpu, len, "%s/%s", ofroot, cpus.p[i].name); - - try_add_cache_from_device_tree_cpu(topology, cpu, level, cpuset); - free(cpu); - } - hwloc_bitmap_free(cpuset); - } - - /* Do cleanup */ - for (i = 0; i < cpus.n; ++i) { - hwloc_bitmap_free(cpus.p[i].cpuset); - free(cpus.p[i].name); - } - free(cpus.p); -} - -/* Look at Linux' /sys/devices/system/cpu/cpu%d/topology/ */ -static void -look_sysfscpu(struct hwloc_topology *topology, const char *path) -{ - hwloc_bitmap_t cpuset; /* Set of cpus for which we have topology information */ -#define CPU_TOPOLOGY_STR_LEN 128 - char str[CPU_TOPOLOGY_STR_LEN]; - DIR *dir; - int i,j; - FILE *fd; - unsigned caches_added; - - cpuset = hwloc_bitmap_alloc(); - - /* fill the cpuset of interesting cpus */ - dir = hwloc_opendir(path, topology->backend_params.sysfs.root_fd); - if (dir) { - struct dirent *dirent; - while ((dirent = readdir(dir)) != NULL) { - unsigned long cpu; - char online[2]; - - if (strncmp(dirent->d_name, "cpu", 3)) - continue; - cpu = strtoul(dirent->d_name+3, NULL, 0); - - /* Maybe we don't have topology information but at least it exists */ - hwloc_bitmap_set(topology->levels[0][0]->complete_cpuset, cpu); - - /* check whether this processor is online */ - sprintf(str, "%s/cpu%lu/online", path, cpu); - fd = hwloc_fopen(str, "r", topology->backend_params.sysfs.root_fd); - if (fd) { - if (fgets(online, sizeof(online), fd)) { - fclose(fd); - if (atoi(online)) { - hwloc_debug("os proc %lu is online\n", cpu); - } else { - hwloc_debug("os proc %lu is offline\n", cpu); - hwloc_bitmap_clr(topology->levels[0][0]->online_cpuset, cpu); - } - } else { - fclose(fd); - } - } - - /* check whether the kernel exports topology information for this cpu */ - sprintf(str, "%s/cpu%lu/topology", path, cpu); - if (hwloc_access(str, X_OK, topology->backend_params.sysfs.root_fd) < 0 && errno == ENOENT) { - hwloc_debug("os proc %lu has no accessible %s/cpu%lu/topology\n", - cpu, path, cpu); - continue; - } - - hwloc_bitmap_set(cpuset, cpu); - } - closedir(dir); - } - - topology->support.discovery->pu = 1; - hwloc_debug_1arg_bitmap("found %d cpu topologies, cpuset %s\n", - hwloc_bitmap_weight(cpuset), cpuset); - - caches_added = 0; - hwloc_bitmap_foreach_begin(i, cpuset) - { - struct hwloc_obj *sock, *core, *thread; - hwloc_bitmap_t socketset, coreset, threadset, savedcoreset; - unsigned mysocketid, mycoreid; - int threadwithcoreid = 0; - - /* look at the socket */ - mysocketid = 0; /* shut-up the compiler */ - sprintf(str, "%s/cpu%d/topology/physical_package_id", path, i); - hwloc_parse_sysfs_unsigned(str, &mysocketid, topology->backend_params.sysfs.root_fd); - - sprintf(str, "%s/cpu%d/topology/core_siblings", path, i); - socketset = hwloc_parse_cpumap(str, topology->backend_params.sysfs.root_fd); - if (socketset && hwloc_bitmap_first(socketset) == i) { - /* first cpu in this socket, add the socket */ - sock = hwloc_alloc_setup_object(HWLOC_OBJ_SOCKET, mysocketid); - sock->cpuset = socketset; - hwloc_debug_1arg_bitmap("os socket %u has cpuset %s\n", - mysocketid, socketset); - hwloc_insert_object_by_cpuset(topology, sock); - socketset = NULL; /* don't free it */ - } - hwloc_bitmap_free(socketset); - - /* look at the core */ - mycoreid = 0; /* shut-up the compiler */ - sprintf(str, "%s/cpu%d/topology/core_id", path, i); - hwloc_parse_sysfs_unsigned(str, &mycoreid, topology->backend_params.sysfs.root_fd); - - sprintf(str, "%s/cpu%d/topology/thread_siblings", path, i); - coreset = hwloc_parse_cpumap(str, topology->backend_params.sysfs.root_fd); - savedcoreset = coreset; /* store it for later work-arounds */ - - if (coreset && hwloc_bitmap_weight(coreset) > 1) { - /* check if this is hyperthreading or different coreids */ - unsigned siblingid, siblingcoreid; - hwloc_bitmap_t set = hwloc_bitmap_dup(coreset); - hwloc_bitmap_clr(set, i); - siblingid = hwloc_bitmap_first(set); - siblingcoreid = mycoreid; - sprintf(str, "%s/cpu%d/topology/core_id", path, siblingid); - hwloc_parse_sysfs_unsigned(str, &siblingcoreid, topology->backend_params.sysfs.root_fd); - threadwithcoreid = (siblingcoreid != mycoreid); - hwloc_bitmap_free(set); - } - - - if (coreset && (hwloc_bitmap_first(coreset) == i || threadwithcoreid)) { - /* regular core */ - core = hwloc_alloc_setup_object(HWLOC_OBJ_CORE, mycoreid); - if (threadwithcoreid) { - /* amd multicore compute-unit, create one core per thread */ - core->cpuset = hwloc_bitmap_alloc(); - hwloc_bitmap_set(core->cpuset, i); - } else { - core->cpuset = coreset; - } - hwloc_debug_1arg_bitmap("os core %u has cpuset %s\n", - mycoreid, coreset); - hwloc_insert_object_by_cpuset(topology, core); - coreset = NULL; /* don't free it */ - } - - /* look at the thread */ - threadset = hwloc_bitmap_alloc(); - hwloc_bitmap_only(threadset, i); - - /* add the thread */ - thread = hwloc_alloc_setup_object(HWLOC_OBJ_PU, i); - thread->cpuset = threadset; - hwloc_debug_1arg_bitmap("thread %d has cpuset %s\n", - i, threadset); - hwloc_insert_object_by_cpuset(topology, thread); - - /* look at the caches */ - for(j=0; j<10; j++) { -#define SHARED_CPU_MAP_STRLEN 128 - char mappath[SHARED_CPU_MAP_STRLEN]; - char str2[20]; /* enough for a level number (one digit) or a type (Data/Instruction/Unified) */ - struct hwloc_obj *cache; - hwloc_bitmap_t cacheset; - unsigned long kB = 0; - unsigned linesize = 0; - int depth; /* 0 for L1, .... */ - - /* get the cache level depth */ - sprintf(mappath, "%s/cpu%d/cache/index%d/level", path, i, j); - fd = hwloc_fopen(mappath, "r", topology->backend_params.sysfs.root_fd); - if (fd) { - if (fgets(str2,sizeof(str2), fd)) - depth = strtoul(str2, NULL, 10)-1; - else - continue; - fclose(fd); - } else - continue; - - /* ignore Instruction caches */ - sprintf(mappath, "%s/cpu%d/cache/index%d/type", path, i, j); - fd = hwloc_fopen(mappath, "r", topology->backend_params.sysfs.root_fd); - if (fd) { - if (fgets(str2, sizeof(str2), fd)) { - fclose(fd); - if (!strncmp(str2, "Instruction", 11)) - continue; - } else { - fclose(fd); - continue; - } - } else - continue; - - /* get the cache size */ - sprintf(mappath, "%s/cpu%d/cache/index%d/size", path, i, j); - fd = hwloc_fopen(mappath, "r", topology->backend_params.sysfs.root_fd); - if (fd) { - if (fgets(str2,sizeof(str2), fd)) - kB = atol(str2); /* in kB */ - fclose(fd); - } - - /* get the line size */ - sprintf(mappath, "%s/cpu%d/cache/index%d/coherency_line_size", path, i, j); - fd = hwloc_fopen(mappath, "r", topology->backend_params.sysfs.root_fd); - if (fd) { - if (fgets(str2,sizeof(str2), fd)) - linesize = atol(str2); /* in bytes */ - fclose(fd); - } - - sprintf(mappath, "%s/cpu%d/cache/index%d/shared_cpu_map", path, i, j); - cacheset = hwloc_parse_cpumap(mappath, topology->backend_params.sysfs.root_fd); - if (cacheset) { - if (hwloc_bitmap_weight(cacheset) < 1) { - /* mask is wrong (useful for many itaniums) */ - if (savedcoreset) - /* assume it's a core-specific cache */ - hwloc_bitmap_copy(cacheset, savedcoreset); - else - /* assumes it's not shared */ - hwloc_bitmap_only(cacheset, i); - } - - if (hwloc_bitmap_first(cacheset) == i) { - /* first cpu in this cache, add the cache */ - cache = hwloc_alloc_setup_object(HWLOC_OBJ_CACHE, -1); - cache->attr->cache.size = kB << 10; - cache->attr->cache.depth = depth+1; - cache->attr->cache.linesize = linesize; - cache->cpuset = cacheset; - hwloc_debug_1arg_bitmap("cache depth %d has cpuset %s\n", - depth, cacheset); - hwloc_insert_object_by_cpuset(topology, cache); - cacheset = NULL; /* don't free it */ - ++caches_added; - } - } - hwloc_bitmap_free(cacheset); - } - hwloc_bitmap_free(coreset); - } - hwloc_bitmap_foreach_end(); - - if (0 == caches_added) - look_powerpc_device_tree(topology); - - hwloc_bitmap_free(cpuset); -} - - -/* Look at Linux' /proc/cpuinfo */ -# define PROCESSOR "processor" -# define PHYSID "physical id" -# define COREID "core id" -#define HWLOC_NBMAXCPUS 1024 /* FIXME: drop */ -static int -look_cpuinfo(struct hwloc_topology *topology, const char *path, - hwloc_bitmap_t online_cpuset) -{ - FILE *fd; - char *str = NULL; - char *endptr; - unsigned len; - unsigned proc_physids[HWLOC_NBMAXCPUS]; - unsigned osphysids[HWLOC_NBMAXCPUS]; - unsigned proc_coreids[HWLOC_NBMAXCPUS]; - unsigned oscoreids[HWLOC_NBMAXCPUS]; - unsigned proc_osphysids[HWLOC_NBMAXCPUS]; - unsigned core_osphysids[HWLOC_NBMAXCPUS]; - unsigned procid_max=0; - unsigned numprocs=0; - unsigned numsockets=0; - unsigned numcores=0; - unsigned long physid; - unsigned long coreid; - unsigned missingsocket; - unsigned missingcore; - unsigned long processor = (unsigned long) -1; - unsigned i; - hwloc_bitmap_t cpuset; - hwloc_obj_t obj; - - for (i = 0; i < HWLOC_NBMAXCPUS; i++) { - proc_physids[i] = -1; - osphysids[i] = -1; - proc_coreids[i] = -1; - oscoreids[i] = -1; - proc_osphysids[i] = -1; - core_osphysids[i] = -1; - } - - if (!(fd=hwloc_fopen(path,"r", topology->backend_params.sysfs.root_fd))) - { - hwloc_debug("%s", "could not open /proc/cpuinfo\n"); - return -1; - } - - cpuset = hwloc_bitmap_alloc(); - /* Just record information and count number of sockets and cores */ - - len = strlen(PHYSID) + 1 + 9 + 1 + 1; - str = malloc(len); - hwloc_debug("%s", "\n\n * Topology extraction from /proc/cpuinfo *\n\n"); - while (fgets(str,len,fd)!=NULL) - { -# define getprocnb_begin(field, var) \ - if ( !strncmp(field,str,strlen(field))) \ - { \ - char *c = strchr(str, ':')+1; \ - var = strtoul(c,&endptr,0); \ - if (endptr==c) \ - { \ - hwloc_debug("%s", "no number in "field" field of /proc/cpuinfo\n"); \ - hwloc_bitmap_free(cpuset); \ - free(str); \ - return -1; \ - } \ - else if (var==ULONG_MAX) \ - { \ - hwloc_debug("%s", "too big "field" number in /proc/cpuinfo\n"); \ - hwloc_bitmap_free(cpuset); \ - free(str); \ - return -1; \ - } \ - hwloc_debug(field " %lu\n", var) -# define getprocnb_end() \ - } - getprocnb_begin(PROCESSOR,processor); - hwloc_bitmap_set(cpuset, processor); - - obj = hwloc_alloc_setup_object(HWLOC_OBJ_PU, processor); - obj->cpuset = hwloc_bitmap_alloc(); - hwloc_bitmap_only(obj->cpuset, processor); - - hwloc_debug_2args_bitmap("cpu %u (os %lu) has cpuset %s\n", - numprocs, processor, obj->cpuset); - numprocs++; - hwloc_insert_object_by_cpuset(topology, obj); - - getprocnb_end() else - getprocnb_begin(PHYSID,physid); - proc_osphysids[processor]=physid; - for (i=0; i<numsockets; i++) - if (physid == osphysids[i]) - break; - proc_physids[processor]=i; - hwloc_debug("%lu on socket %u (%lx)\n", processor, i, physid); - if (i==numsockets) - osphysids[(numsockets)++] = physid; - getprocnb_end() else - getprocnb_begin(COREID,coreid); - for (i=0; i<numcores; i++) - if (coreid == oscoreids[i] && proc_osphysids[processor] == core_osphysids[i]) - break; - proc_coreids[processor]=i; - if (i==numcores) - { - core_osphysids[numcores] = proc_osphysids[processor]; - oscoreids[numcores] = coreid; - (numcores)++; - } - getprocnb_end() - if (str[strlen(str)-1]!='\n') - { - /* ignore end of line */ - if (fscanf(fd,"%*[^\n]") == EOF) - break; - getc(fd); - } - } - fclose(fd); - free(str); - - if (processor == (unsigned long) -1) { - hwloc_bitmap_free(cpuset); - return -1; - } - - topology->support.discovery->pu = 1; - /* setup the final number of procs */ - procid_max = processor + 1; - hwloc_bitmap_copy(online_cpuset, cpuset); - hwloc_bitmap_free(cpuset); - - hwloc_debug("%u online processors found, with id max %u\n", numprocs, procid_max); - hwloc_debug_bitmap("online processor cpuset: %s\n", online_cpuset); - - hwloc_debug("%s", "\n * Topology summary *\n"); - hwloc_debug("%u processors (%u max id)\n", numprocs, procid_max); - - /* Some buggy Linuxes don't provide numbers for processor 0, which makes us - * provide bogus information. We should rather drop it. */ - missingsocket=0; - missingcore=0; - hwloc_bitmap_foreach_begin(processor, online_cpuset) - if (proc_physids[processor] == (unsigned) -1) - missingsocket=1; - if (proc_coreids[processor] == (unsigned) -1) - missingcore=1; - if (missingcore && missingsocket) - /* No usable information, no need to continue */ - break; - hwloc_bitmap_foreach_end(); - - hwloc_debug("%u sockets%s\n", numsockets, missingsocket ? ", but some missing socket" : ""); - if (!missingsocket && numsockets>0) - hwloc_setup_level(procid_max, numsockets, osphysids, proc_physids, topology, HWLOC_OBJ_SOCKET); - - look_powerpc_device_tree(topology); - - hwloc_debug("%u cores%s\n", numcores, missingcore ? ", but some missing core" : ""); - if (!missingcore && numcores>0) - hwloc_setup_level(procid_max, numcores, oscoreids, proc_coreids, topology, HWLOC_OBJ_CORE); - - return 0; -} - -static void -hwloc__get_dmi_one_info(struct hwloc_topology *topology, hwloc_obj_t obj, const char *sysfs_name, const char *hwloc_name) -{ - char sysfs_path[128]; - char dmi_line[64]; - char *tmp; - FILE *fd; - - snprintf(sysfs_path, sizeof(sysfs_path), "/sys/class/dmi/id/%s", sysfs_name); - - dmi_line[0] = '\0'; - fd = hwloc_fopen(sysfs_path, "r", topology->backend_params.sysfs.root_fd); - if (fd) { - tmp = fgets(dmi_line, sizeof(dmi_line), fd); - fclose (fd); - if (tmp && dmi_line[0] != '\0') { - tmp = strchr(dmi_line, '\n'); - if (tmp) - *tmp = '\0'; - hwloc_debug("found %s '%s'\n", hwloc_name, dmi_line); - hwloc_add_object_info(obj, hwloc_name, dmi_line); - } - } -} - -static void -hwloc__get_dmi_info(struct hwloc_topology *topology, hwloc_obj_t obj) -{ - hwloc__get_dmi_one_info(topology, obj, "product_name", "DMIProductName"); - hwloc__get_dmi_one_info(topology, obj, "product_version", "DMIProductVersion"); - hwloc__get_dmi_one_info(topology, obj, "product_serial", "DMIProductSerial"); - hwloc__get_dmi_one_info(topology, obj, "product_uuid", "DMIProductUUID"); - hwloc__get_dmi_one_info(topology, obj, "board_vendor", "DMIBoardVendor"); - hwloc__get_dmi_one_info(topology, obj, "board_name", "DMIBoardName"); - hwloc__get_dmi_one_info(topology, obj, "board_version", "DMIBoardVersion"); - hwloc__get_dmi_one_info(topology, obj, "board_serial", "DMIBoardSerial"); - hwloc__get_dmi_one_info(topology, obj, "board_asset_tag", "DMIBoardAssetTag"); - hwloc__get_dmi_one_info(topology, obj, "chassis_vendor", "DMIChassisVendor"); - hwloc__get_dmi_one_info(topology, obj, "chassis_type", "DMIChassisType"); - hwloc__get_dmi_one_info(topology, obj, "chassis_version", "DMIChassisVersion"); - hwloc__get_dmi_one_info(topology, obj, "chassis_serial", "DMIChassisSerial"); - hwloc__get_dmi_one_info(topology, obj, "chassis_asset_tag", "DMIChassisAssetTag"); - hwloc__get_dmi_one_info(topology, obj, "bios_vendor", "DMIBIOSVendor"); - hwloc__get_dmi_one_info(topology, obj, "bios_version", "DMIBIOSVersion"); - hwloc__get_dmi_one_info(topology, obj, "bios_date", "DMIBIOSDate"); - hwloc__get_dmi_one_info(topology, obj, "sys_vendor", "DMISysVendor"); -} - -void -hwloc_look_linux(struct hwloc_topology *topology) -{ - DIR *nodes_dir; - unsigned nbnodes; - char *cpuset_mntpnt, *cgroup_mntpnt, *cpuset_name = NULL; - int err; - - /* Gather the list of admin-disabled cpus and mems */ - hwloc_find_linux_cpuset_mntpnt(&cgroup_mntpnt, &cpuset_mntpnt, topology->backend_params.sysfs.root_fd); - if (cgroup_mntpnt || cpuset_mntpnt) { - cpuset_name = hwloc_read_linux_cpuset_name(topology->backend_params.sysfs.root_fd, topology->pid); - if (cpuset_name) { - hwloc_admin_disable_set_from_cpuset(topology, cgroup_mntpnt, cpuset_mntpnt, cpuset_name, "cpus", topology->levels[0][0]->allowed_cpuset); - hwloc_admin_disable_set_from_cpuset(topology, cgroup_mntpnt, cpuset_mntpnt, cpuset_name, "mems", topology->levels[0][0]->allowed_nodeset); - } - free(cgroup_mntpnt); - free(cpuset_mntpnt); - } - - nodes_dir = hwloc_opendir("/proc/nodes", topology->backend_params.sysfs.root_fd); - if (nodes_dir) { - /* Kerrighed */ - struct dirent *dirent; - char path[128]; - hwloc_obj_t machine; - hwloc_bitmap_t machine_online_set; - - /* replace top-level object type with SYSTEM and add some MACHINE underneath */ - - topology->levels[0][0]->type = HWLOC_OBJ_SYSTEM; - topology->levels[0][0]->name = strdup("Kerrighed"); - - /* No cpuset support for now. */ - /* No sys support for now. */ - while ((dirent = readdir(nodes_dir)) != NULL) { - unsigned long node; - if (strncmp(dirent->d_name, "node", 4)) - continue; - machine_online_set = hwloc_bitmap_alloc(); - node = strtoul(dirent->d_name+4, NULL, 0); - snprintf(path, sizeof(path), "/proc/nodes/node%lu/cpuinfo", node); - err = look_cpuinfo(topology, path, machine_online_set); - if (err < 0) - continue; - hwloc_bitmap_or(topology->levels[0][0]->online_cpuset, topology->levels[0][0]->online_cpuset, machine_online_set); - machine = hwloc_alloc_setup_object(HWLOC_OBJ_MACHINE, node); - machine->cpuset = machine_online_set; - hwloc_debug_1arg_bitmap("machine number %lu has cpuset %s\n", - node, machine_online_set); - hwloc_insert_object_by_cpuset(topology, machine); - - /* Get the machine memory attributes */ - hwloc_get_kerrighed_node_meminfo_info(topology, node, &machine->memory); - - /* Gather DMI info */ - /* FIXME: get the right DMI info of each machine */ - hwloc__get_dmi_info(topology, machine); - } - closedir(nodes_dir); - } else { - /* Get the machine memory attributes */ - hwloc_get_procfs_meminfo_info(topology, &topology->levels[0][0]->memory); - - /* Gather NUMA information. Must be after hwloc_get_procfs_meminfo_info so that the hugepage size is known */ - look_sysfsnode(topology, "/sys/devices/system/node", &nbnodes); - - /* if we found some numa nodes, the machine object has no local memory */ - if (nbnodes) { - unsigned i; - topology->levels[0][0]->memory.local_memory = 0; - if (topology->levels[0][0]->memory.page_types) - for(i=0; i<topology->levels[0][0]->memory.page_types_len; i++) - topology->levels[0][0]->memory.page_types[i].count = 0; - } - - /* Gather the list of cpus now */ - if (getenv("HWLOC_LINUX_USE_CPUINFO") - || (hwloc_access("/sys/devices/system/cpu/cpu0/topology/core_siblings", R_OK, topology->backend_params.sysfs.root_fd) < 0 - && hwloc_access("/sys/devices/system/cpu/cpu0/topology/thread_siblings", R_OK, topology->backend_params.sysfs.root_fd) < 0)) { - /* revert to reading cpuinfo only if /sys/.../topology unavailable (before 2.6.16) - * or not containing anything interesting */ - err = look_cpuinfo(topology, "/proc/cpuinfo", topology->levels[0][0]->online_cpuset); - if (err < 0) { - if (topology->is_thissystem) - hwloc_setup_pu_level(topology, hwloc_fallback_nbprocessors(topology)); - else - /* fsys-root but not this system, no way, assume there's just 1 - * processor :/ */ - hwloc_setup_pu_level(topology, 1); - } - } else { - look_sysfscpu(topology, "/sys/devices/system/cpu"); - } - - /* Gather DMI info */ - hwloc__get_dmi_info(topology, topology->levels[0][0]); - } - - hwloc_add_object_info(topology->levels[0][0], "Backend", "Linux"); - if (cpuset_name) { - hwloc_add_object_info(topology->levels[0][0], "LinuxCgroup", cpuset_name); - free(cpuset_name); - } - - /* gather uname info if fsroot wasn't changed */ - if (topology->is_thissystem) - hwloc_add_uname_info(topology); -} - -void -hwloc_set_linux_hooks(struct hwloc_topology *topology) -{ - topology->set_thisthread_cpubind = hwloc_linux_set_thisthread_cpubind; - topology->get_thisthread_cpubind = hwloc_linux_get_thisthread_cpubind; - topology->set_thisproc_cpubind = hwloc_linux_set_thisproc_cpubind; - topology->get_thisproc_cpubind = hwloc_linux_get_thisproc_cpubind; - topology->set_proc_cpubind = hwloc_linux_set_proc_cpubind; - topology->get_proc_cpubind = hwloc_linux_get_proc_cpubind; -#if HAVE_DECL_PTHREAD_SETAFFINITY_NP - topology->set_thread_cpubind = hwloc_linux_set_thread_cpubind; -#endif /* HAVE_DECL_PTHREAD_SETAFFINITY_NP */ -#if HAVE_DECL_PTHREAD_GETAFFINITY_NP - topology->get_thread_cpubind = hwloc_linux_get_thread_cpubind; -#endif /* HAVE_DECL_PTHREAD_GETAFFINITY_NP */ - topology->get_thisthread_last_cpu_location = hwloc_linux_get_thisthread_last_cpu_location; - topology->get_thisproc_last_cpu_location = hwloc_linux_get_thisproc_last_cpu_location; - topology->get_proc_last_cpu_location = hwloc_linux_get_proc_last_cpu_location; -#ifdef HWLOC_HAVE_SET_MEMPOLICY - topology->set_thisthread_membind = hwloc_linux_set_thisthread_membind; - topology->get_thisthread_membind = hwloc_linux_get_thisthread_membind; -#endif /* HWLOC_HAVE_SET_MEMPOLICY */ -#ifdef HWLOC_HAVE_MBIND - topology->set_area_membind = hwloc_linux_set_area_membind; - topology->alloc_membind = hwloc_linux_alloc_membind; - topology->alloc = hwloc_alloc_mmap; - topology->free_membind = hwloc_free_mmap; - topology->support.membind->firsttouch_membind = 1; - topology->support.membind->bind_membind = 1; - topology->support.membind->interleave_membind = 1; -#endif /* HWLOC_HAVE_MBIND */ -#if (defined HWLOC_HAVE_MIGRATE_PAGES) || ((defined HWLOC_HAVE_MBIND) && (defined MPOL_MF_MOVE)) - topology->support.membind->migrate_membind = 1; -#endif -} diff --git a/hwloc-1.2.1/src/topology-osf.c b/hwloc-1.2.1/src/topology-osf.c deleted file mode 100644 index 4d629dce..00000000 --- a/hwloc-1.2.1/src/topology-osf.c +++ /dev/null @@ -1,343 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2011 INRIA. All rights reserved. - * Copyright © 2009-2011 Université Bordeaux 1 - * Copyright © 2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -#include <private/autogen/config.h> - -#include <sys/types.h> -#include <dirent.h> -#include <unistd.h> -#include <string.h> -#include <errno.h> -#include <stdio.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <pthread.h> - -#include <hwloc.h> -#include <private/private.h> -#include <private/debug.h> - -#include <numa.h> -#include <radset.h> -#include <cpuset.h> -#include <sys/mman.h> - -/* - * TODO - * - * nsg_init(), nsg_attach_pid(), RAD_MIGRATE/RAD_WAIT - * assign_pid_to_pset() - * - * pthread_use_only_cpu too? - */ - -static int -prepare_radset(hwloc_topology_t topology, radset_t *radset, hwloc_const_bitmap_t hwloc_set) -{ - unsigned cpu; - cpuset_t target_cpuset; - cpuset_t cpuset, xor_cpuset; - radid_t radid; - int ret = 0; - int ret_errno = 0; - - cpusetcreate(&target_cpuset); - cpuemptyset(target_cpuset); - hwloc_bitmap_foreach_begin(cpu, hwloc_set) - cpuaddset(target_cpuset, cpu); - hwloc_bitmap_foreach_end(); - - cpusetcreate(&cpuset); - cpusetcreate(&xor_cpuset); - for (radid = 0; radid < topology->backend_params.osf.nbnodes; radid++) { - cpuemptyset(cpuset); - if (rad_get_cpus(radid, cpuset)==-1) { - fprintf(stderr,"rad_get_cpus(%d) failed: %s\n",radid,strerror(errno)); - continue; - } - cpuxorset(target_cpuset, cpuset, xor_cpuset); - if (cpucountset(xor_cpuset) == 0) { - /* Found it */ - radsetcreate(radset); - rademptyset(*radset); - radaddset(*radset, radid); - ret = 1; - goto out; - } - } - /* radset containing exactly this set of CPUs not found */ - ret_errno = EXDEV; - -out: - cpusetdestroy(&target_cpuset); - cpusetdestroy(&cpuset); - cpusetdestroy(&xor_cpuset); - errno = ret_errno; - return ret; -} - -/* Note: get_cpubind not available on OSF */ - -static int -hwloc_osf_set_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_const_bitmap_t hwloc_set, int flags) -{ - radset_t radset; - - if (hwloc_bitmap_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology))) { - if ((errno = pthread_rad_detach(thread))) - return -1; - return 0; - } - - /* Apparently OSF migrates pages */ - if (flags & HWLOC_CPUBIND_NOMEMBIND) { - errno = ENOSYS; - return -1; - } - - if (!prepare_radset(topology, &radset, hwloc_set)) - return -1; - - if (flags & HWLOC_CPUBIND_STRICT) { - if ((errno = pthread_rad_bind(thread, radset, RAD_INSIST | RAD_WAIT))) - return -1; - } else { - if ((errno = pthread_rad_attach(thread, radset, RAD_WAIT))) - return -1; - } - radsetdestroy(&radset); - - return 0; -} - -static int -hwloc_osf_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags) -{ - radset_t radset; - - if (hwloc_bitmap_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology))) { - if (rad_detach_pid(pid)) - return -1; - return 0; - } - - /* Apparently OSF migrates pages */ - if (flags & HWLOC_CPUBIND_NOMEMBIND) { - errno = ENOSYS; - return -1; - } - - if (!prepare_radset(topology, &radset, hwloc_set)) - return -1; - - if (flags & HWLOC_CPUBIND_STRICT) { - if (rad_bind_pid(pid, radset, RAD_INSIST | RAD_WAIT)) - return -1; - } else { - if (rad_attach_pid(pid, radset, RAD_WAIT)) - return -1; - } - radsetdestroy(&radset); - - return 0; -} - -static int -hwloc_osf_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags) -{ - return hwloc_osf_set_thread_cpubind(topology, pthread_self(), hwloc_set, flags); -} - -static int -hwloc_osf_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags) -{ - return hwloc_osf_set_proc_cpubind(topology, getpid(), hwloc_set, flags); -} - -static int -hwloc_osf_prepare_mattr(hwloc_topology_t topology __hwloc_attribute_unused, memalloc_attr_t *mattr, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags __hwloc_attribute_unused) -{ - unsigned long osf_policy; - int node; - - switch (policy) { - case HWLOC_MEMBIND_FIRSTTOUCH: - osf_policy = MPOL_THREAD; - break; - case HWLOC_MEMBIND_DEFAULT: - case HWLOC_MEMBIND_BIND: - osf_policy = MPOL_DIRECTED; - break; - case HWLOC_MEMBIND_INTERLEAVE: - osf_policy = MPOL_STRIPPED; - break; - case HWLOC_MEMBIND_REPLICATE: - osf_policy = MPOL_REPLICATED; - break; - default: - errno = ENOSYS; - return -1; - } - - memset(mattr, 0, sizeof(*mattr)); - mattr->mattr_policy = osf_policy; - mattr->mattr_rad = RAD_NONE; - radsetcreate(&mattr->mattr_radset); - rademptyset(mattr->mattr_radset); - - hwloc_bitmap_foreach_begin(node, nodeset) - radaddset(mattr->mattr_radset, node); - hwloc_bitmap_foreach_end(); - return 0; -} - -static int -hwloc_osf_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - memalloc_attr_t mattr; - int behavior = 0; - int ret; - - if (flags & HWLOC_MEMBIND_MIGRATE) - behavior |= MADV_CURRENT; - if (flags & HWLOC_MEMBIND_STRICT) - behavior |= MADV_INSIST; - - if (hwloc_osf_prepare_mattr(topology, &mattr, nodeset, policy, flags)) - return -1; - - ret = nmadvise(addr, len, MADV_CURRENT, &mattr); - radsetdestroy(&mattr.mattr_radset); - return ret; -} - -static void * -hwloc_osf_alloc_membind(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - memalloc_attr_t mattr; - void *ptr; - - if (hwloc_osf_prepare_mattr(topology, &mattr, nodeset, policy, flags)) - return hwloc_alloc_or_fail(topology, len, flags); - - /* TODO: rather use acreate/amalloc ? */ - ptr = nmmap(NULL, len, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, - 0, &mattr); - radsetdestroy(&mattr.mattr_radset); - return ptr; -} - -void -hwloc_look_osf(struct hwloc_topology *topology) -{ - cpu_cursor_t cursor; - unsigned nbnodes; - radid_t radid, radid2; - radset_t radset, radset2; - cpuid_t cpuid; - cpuset_t cpuset; - struct hwloc_obj *obj; - unsigned distance; - - topology->backend_params.osf.nbnodes = nbnodes = rad_get_num(); - - cpusetcreate(&cpuset); - radsetcreate(&radset); - radsetcreate(&radset2); - { - hwloc_obj_t *nodes = calloc(nbnodes, sizeof(hwloc_obj_t)); - unsigned *indexes = calloc(nbnodes, sizeof(unsigned)); - float *distances = calloc(nbnodes*nbnodes, sizeof(float)); - unsigned nfound; - numa_attr_t attr; - - attr.nattr_type = R_RAD; - attr.nattr_descr.rd_radset = radset; - attr.nattr_flags = 0; - - for (radid = 0; radid < (radid_t) nbnodes; radid++) { - rademptyset(radset); - radaddset(radset, radid); - cpuemptyset(cpuset); - if (rad_get_cpus(radid, cpuset)==-1) { - fprintf(stderr,"rad_get_cpus(%d) failed: %s\n",radid,strerror(errno)); - continue; - } - - indexes[radid] = radid; - nodes[radid] = obj = hwloc_alloc_setup_object(HWLOC_OBJ_NODE, radid); - obj->cpuset = hwloc_bitmap_alloc(); - obj->memory.local_memory = rad_get_physmem(radid) * getpagesize(); - obj->memory.page_types_len = 2; - obj->memory.page_types = malloc(2*sizeof(*obj->memory.page_types)); - memset(obj->memory.page_types, 0, 2*sizeof(*obj->memory.page_types)); - obj->memory.page_types[0].size = getpagesize(); -#ifdef HAVE__SC_LARGE_PAGESIZE - obj->memory.page_types[1].size = sysconf(_SC_LARGE_PAGESIZE); -#endif - - cursor = SET_CURSOR_INIT; - while((cpuid = cpu_foreach(cpuset, 0, &cursor)) != CPU_NONE) - hwloc_bitmap_set(obj->cpuset, cpuid); - - hwloc_debug_1arg_bitmap("node %d has cpuset %s\n", - radid, obj->cpuset); - - hwloc_insert_object_by_cpuset(topology, obj); - - nfound = 0; - for (radid2 = 0; radid2 < (radid_t) nbnodes; radid2++) - distances[radid*nbnodes+radid2] = RAD_DIST_REMOTE; - for (distance = RAD_DIST_LOCAL; distance < RAD_DIST_REMOTE; distance++) { - attr.nattr_distance = distance; - /* get set of NUMA nodes at distance <= DISTANCE */ - if (nloc(&attr, radset2)) { - fprintf(stderr,"nloc failed: %s\n", strerror(errno)); - continue; - } - cursor = SET_CURSOR_INIT; - while ((radid2 = rad_foreach(radset2, 0, &cursor)) != RAD_NONE) { - if (distances[radid*nbnodes+radid2] == RAD_DIST_REMOTE) { - distances[radid*nbnodes+radid2] = (float) distance; - nfound++; - } - } - if (nfound == nbnodes) - /* Finished finding distances, no need to go up to RAD_DIST_REMOTE */ - break; - } - } - - hwloc_topology__set_distance_matrix(topology, HWLOC_OBJ_NODE, nbnodes, indexes, nodes, distances); - } - radsetdestroy(&radset2); - radsetdestroy(&radset); - cpusetdestroy(&cpuset); - - /* add PU objects */ - hwloc_setup_pu_level(topology, hwloc_fallback_nbprocessors(topology)); - - hwloc_add_object_info(topology->levels[0][0], "Backend", "OSF"); -} - -void -hwloc_set_osf_hooks(struct hwloc_topology *topology) -{ - topology->set_thread_cpubind = hwloc_osf_set_thread_cpubind; - topology->set_thisthread_cpubind = hwloc_osf_set_thisthread_cpubind; - topology->set_proc_cpubind = hwloc_osf_set_proc_cpubind; - topology->set_thisproc_cpubind = hwloc_osf_set_thisproc_cpubind; - topology->set_area_membind = hwloc_osf_set_area_membind; - topology->alloc_membind = hwloc_osf_alloc_membind; - topology->alloc = hwloc_alloc_mmap; - topology->free_membind = hwloc_free_mmap; - topology->support.membind->firsttouch_membind = 1; - topology->support.membind->bind_membind = 1; - topology->support.membind->interleave_membind = 1; - topology->support.membind->replicate_membind = 1; -} diff --git a/hwloc-1.2.1/src/topology-solaris.c b/hwloc-1.2.1/src/topology-solaris.c deleted file mode 100644 index 55aff8c8..00000000 --- a/hwloc-1.2.1/src/topology-solaris.c +++ /dev/null @@ -1,667 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2011 INRIA. All rights reserved. - * Copyright © 2009-2011 Université Bordeaux 1 - * Copyright © 2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -#include <private/autogen/config.h> -#include <hwloc.h> -#include <private/private.h> -#include <private/debug.h> - -#include <stdio.h> -#include <errno.h> -#include <dirent.h> -#include <unistd.h> -#include <sys/types.h> -#include <sys/processor.h> -#include <sys/procset.h> -#include <sys/types.h> -#include <sys/mman.h> - -#ifdef HAVE_LIBLGRP -# include <sys/lgrp_user.h> -#endif - -/* TODO: use psets? (only for root) - * TODO: get cache info from prtdiag? (it is setgid sys to be able to read from - * crw-r----- 1 root sys 88, 0 nov 3 14:35 /devices/pseudo/devinfo@0:devinfo - * and run (apparently undocumented) ioctls on it. - */ - -static int -hwloc_solaris_set_sth_cpubind(hwloc_topology_t topology, idtype_t idtype, id_t id, hwloc_const_bitmap_t hwloc_set, int flags) -{ - unsigned target_cpu; - - /* The resulting binding is always strict */ - - if (hwloc_bitmap_isequal(hwloc_set, hwloc_topology_get_complete_cpuset(topology))) { - if (processor_bind(idtype, id, PBIND_NONE, NULL) != 0) - return -1; -#ifdef HAVE_LIBLGRP - if (!(flags & HWLOC_CPUBIND_NOMEMBIND)) { - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - if (depth >= 0) { - int n = hwloc_get_nbobjs_by_depth(topology, depth); - int i; - - for (i = 0; i < n; i++) { - hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, depth, i); - lgrp_affinity_set(idtype, id, obj->os_index, LGRP_AFF_NONE); - } - } - } -#endif /* HAVE_LIBLGRP */ - return 0; - } - -#ifdef HAVE_LIBLGRP - if (!(flags & HWLOC_CPUBIND_NOMEMBIND)) { - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - if (depth >= 0) { - int n = hwloc_get_nbobjs_by_depth(topology, depth); - int i; - int ok; - hwloc_bitmap_t target = hwloc_bitmap_alloc(); - - for (i = 0; i < n; i++) { - hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, depth, i); - if (hwloc_bitmap_isincluded(obj->cpuset, hwloc_set)) - hwloc_bitmap_or(target, target, obj->cpuset); - } - - ok = hwloc_bitmap_isequal(target, hwloc_set); - hwloc_bitmap_free(target); - - if (ok) { - /* Ok, managed to achieve hwloc_set by just combining NUMA nodes */ - - for (i = 0; i < n; i++) { - hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, depth, i); - - if (hwloc_bitmap_isincluded(obj->cpuset, hwloc_set)) { - lgrp_affinity_set(idtype, id, obj->os_index, LGRP_AFF_STRONG); - } else { - if (flags & HWLOC_CPUBIND_STRICT) - lgrp_affinity_set(idtype, id, obj->os_index, LGRP_AFF_NONE); - else - lgrp_affinity_set(idtype, id, obj->os_index, LGRP_AFF_WEAK); - } - } - - return 0; - } - } - } -#endif /* HAVE_LIBLGRP */ - - if (hwloc_bitmap_weight(hwloc_set) != 1) { - errno = EXDEV; - return -1; - } - - target_cpu = hwloc_bitmap_first(hwloc_set); - - if (processor_bind(idtype, id, - (processorid_t) (target_cpu), NULL) != 0) - return -1; - - return 0; -} - -static int -hwloc_solaris_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags) -{ - return hwloc_solaris_set_sth_cpubind(topology, P_PID, pid, hwloc_set, flags); -} - -static int -hwloc_solaris_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags) -{ - return hwloc_solaris_set_sth_cpubind(topology, P_PID, P_MYID, hwloc_set, flags); -} - -static int -hwloc_solaris_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags) -{ - return hwloc_solaris_set_sth_cpubind(topology, P_LWPID, P_MYID, hwloc_set, flags); -} - -#ifdef HAVE_LIBLGRP -static int -hwloc_solaris_get_sth_cpubind(hwloc_topology_t topology, idtype_t idtype, id_t id, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - int n; - int i; - - if (depth < 0) { - errno = ENOSYS; - return -1; - } - - hwloc_bitmap_zero(hwloc_set); - n = hwloc_get_nbobjs_by_depth(topology, depth); - - for (i = 0; i < n; i++) { - hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, depth, i); - lgrp_affinity_t aff = lgrp_affinity_get(idtype, id, obj->os_index); - - if (aff == LGRP_AFF_STRONG) - hwloc_bitmap_or(hwloc_set, hwloc_set, obj->cpuset); - } - - if (hwloc_bitmap_iszero(hwloc_set)) - hwloc_bitmap_copy(hwloc_set, hwloc_topology_get_complete_cpuset(topology)); - - return 0; -} - -static int -hwloc_solaris_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_bitmap_t hwloc_set, int flags) -{ - return hwloc_solaris_get_sth_cpubind(topology, P_PID, pid, hwloc_set, flags); -} - -static int -hwloc_solaris_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags) -{ - return hwloc_solaris_get_sth_cpubind(topology, P_PID, P_MYID, hwloc_set, flags); -} - -static int -hwloc_solaris_get_thisthread_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_set, int flags) -{ - return hwloc_solaris_get_sth_cpubind(topology, P_LWPID, P_MYID, hwloc_set, flags); -} -#endif /* HAVE_LIBLGRP */ - -/* TODO: given thread, probably not easy because of the historical n:m implementation */ -#ifdef HAVE_LIBLGRP -static int -hwloc_solaris_set_sth_membind(hwloc_topology_t topology, idtype_t idtype, id_t id, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - int depth; - int n, i; - - switch (policy) { - case HWLOC_MEMBIND_DEFAULT: - case HWLOC_MEMBIND_BIND: - break; - default: - errno = ENOSYS; - return -1; - } - - if (flags & HWLOC_MEMBIND_NOCPUBIND) { - errno = ENOSYS; - return -1; - } - - depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - if (depth < 0) { - errno = EXDEV; - return -1; - } - n = hwloc_get_nbobjs_by_depth(topology, depth); - - for (i = 0; i < n; i++) { - hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, depth, i); - if (hwloc_bitmap_isset(nodeset, obj->os_index)) { - lgrp_affinity_set(idtype, id, obj->os_index, LGRP_AFF_STRONG); - } else { - if (flags & HWLOC_CPUBIND_STRICT) - lgrp_affinity_set(idtype, id, obj->os_index, LGRP_AFF_NONE); - else - lgrp_affinity_set(idtype, id, obj->os_index, LGRP_AFF_WEAK); - } - } - - return 0; -} - -static int -hwloc_solaris_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - return hwloc_solaris_set_sth_membind(topology, P_PID, pid, nodeset, policy, flags); -} - -static int -hwloc_solaris_set_thisproc_membind(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - return hwloc_solaris_set_sth_membind(topology, P_PID, P_MYID, nodeset, policy, flags); -} - -static int -hwloc_solaris_set_thisthread_membind(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - return hwloc_solaris_set_sth_membind(topology, P_LWPID, P_MYID, nodeset, policy, flags); -} - -static int -hwloc_solaris_get_sth_membind(hwloc_topology_t topology, idtype_t idtype, id_t id, hwloc_nodeset_t nodeset, hwloc_membind_policy_t *policy, int flags __hwloc_attribute_unused) -{ - int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE); - int n; - int i; - - if (depth < 0) { - errno = ENOSYS; - return -1; - } - - hwloc_bitmap_zero(nodeset); - n = hwloc_get_nbobjs_by_depth(topology, depth); - - for (i = 0; i < n; i++) { - hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, depth, i); - lgrp_affinity_t aff = lgrp_affinity_get(idtype, id, obj->os_index); - - if (aff == LGRP_AFF_STRONG) - hwloc_bitmap_set(nodeset, obj->os_index); - } - - if (hwloc_bitmap_iszero(nodeset)) - hwloc_bitmap_copy(nodeset, hwloc_topology_get_complete_nodeset(topology)); - - *policy = HWLOC_MEMBIND_DEFAULT; - return 0; -} - -static int -hwloc_solaris_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_nodeset_t nodeset, hwloc_membind_policy_t *policy, int flags) -{ - return hwloc_solaris_get_sth_membind(topology, P_PID, pid, nodeset, policy, flags); -} - -static int -hwloc_solaris_get_thisproc_membind(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t *policy, int flags) -{ - return hwloc_solaris_get_sth_membind(topology, P_PID, P_MYID, nodeset, policy, flags); -} - -static int -hwloc_solaris_get_thisthread_membind(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t *policy, int flags) -{ - return hwloc_solaris_get_sth_membind(topology, P_LWPID, P_MYID, nodeset, policy, flags); -} -#endif /* HAVE_LIBLGRP */ - - -#ifdef MADV_ACCESS_LWP -static int -hwloc_solaris_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags __hwloc_attribute_unused) -{ - int advice; - size_t remainder; - - /* Can not give a set of nodes just for an area. */ - if (!hwloc_bitmap_isequal(nodeset, hwloc_topology_get_complete_nodeset(topology))) { - errno = EXDEV; - return -1; - } - - switch (policy) { - case HWLOC_MEMBIND_DEFAULT: - case HWLOC_MEMBIND_BIND: - advice = MADV_ACCESS_DEFAULT; - break; - case HWLOC_MEMBIND_FIRSTTOUCH: - case HWLOC_MEMBIND_NEXTTOUCH: - advice = MADV_ACCESS_LWP; - break; - case HWLOC_MEMBIND_INTERLEAVE: - advice = MADV_ACCESS_MANY; - break; - default: - errno = ENOSYS; - return -1; - } - - remainder = (uintptr_t) addr & (sysconf(_SC_PAGESIZE)-1); - addr = (char*) addr - remainder; - len += remainder; - return madvise((void*) addr, len, advice); -} -#endif - -#ifdef HAVE_LIBLGRP -static void -browse(struct hwloc_topology *topology, lgrp_cookie_t cookie, lgrp_id_t lgrp, hwloc_obj_t *glob_lgrps, unsigned *curlgrp) -{ - int n; - hwloc_obj_t obj; - lgrp_mem_size_t mem_size; - - n = lgrp_cpus(cookie, lgrp, NULL, 0, LGRP_CONTENT_HIERARCHY); - if (n == -1) - return; - - /* Is this lgrp a NUMA node? */ - if ((mem_size = lgrp_mem_size(cookie, lgrp, LGRP_MEM_SZ_INSTALLED, LGRP_CONTENT_DIRECT)) > 0) - { - int i; - processorid_t *cpuids; - cpuids = malloc(sizeof(processorid_t) * n); - assert(cpuids != NULL); - - obj = hwloc_alloc_setup_object(HWLOC_OBJ_NODE, lgrp); - obj->nodeset = hwloc_bitmap_alloc(); - hwloc_bitmap_set(obj->nodeset, lgrp); - obj->cpuset = hwloc_bitmap_alloc(); - glob_lgrps[(*curlgrp)++] = obj; - - lgrp_cpus(cookie, lgrp, cpuids, n, LGRP_CONTENT_HIERARCHY); - for (i = 0; i < n ; i++) { - hwloc_debug("node %ld's cpu %d is %d\n", lgrp, i, cpuids[i]); - hwloc_bitmap_set(obj->cpuset, cpuids[i]); - } - hwloc_debug_1arg_bitmap("node %ld has cpuset %s\n", - lgrp, obj->cpuset); - - /* or LGRP_MEM_SZ_FREE */ - hwloc_debug("node %ld has %lldkB\n", lgrp, mem_size/1024); - obj->memory.local_memory = mem_size; - obj->memory.page_types_len = 2; - obj->memory.page_types = malloc(2*sizeof(*obj->memory.page_types)); - memset(obj->memory.page_types, 0, 2*sizeof(*obj->memory.page_types)); - obj->memory.page_types[0].size = getpagesize(); -#ifdef HAVE__SC_LARGE_PAGESIZE - obj->memory.page_types[1].size = sysconf(_SC_LARGE_PAGESIZE); -#endif - hwloc_insert_object_by_cpuset(topology, obj); - free(cpuids); - } - - n = lgrp_children(cookie, lgrp, NULL, 0); - { - lgrp_id_t *lgrps; - int i; - - lgrps = malloc(sizeof(lgrp_id_t) * n); - assert(lgrps != NULL); - lgrp_children(cookie, lgrp, lgrps, n); - hwloc_debug("lgrp %ld has %d children\n", lgrp, n); - for (i = 0; i < n ; i++) - { - browse(topology, cookie, lgrps[i], glob_lgrps, curlgrp); - } - hwloc_debug("lgrp %ld's children done\n", lgrp); - free(lgrps); - } -} - -static void -hwloc_look_lgrp(struct hwloc_topology *topology) -{ - lgrp_cookie_t cookie; - unsigned curlgrp = 0; - int nlgrps; - lgrp_id_t root; - - if ((topology->flags & HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM)) - cookie = lgrp_init(LGRP_VIEW_OS); - else - cookie = lgrp_init(LGRP_VIEW_CALLER); - if (cookie == LGRP_COOKIE_NONE) - { - hwloc_debug("lgrp_init failed: %s\n", strerror(errno)); - return; - } - nlgrps = lgrp_nlgrps(cookie); - root = lgrp_root(cookie); - { - hwloc_obj_t *glob_lgrps = calloc(nlgrps, sizeof(hwloc_obj_t)); - browse(topology, cookie, root, glob_lgrps, &curlgrp); -#ifdef HAVE_LGRP_LATENCY_COOKIE - { - float *distances = calloc(curlgrp*curlgrp, sizeof(float)); - unsigned *indexes = calloc(curlgrp,sizeof(unsigned)); - unsigned i, j; - for (i = 0; i < curlgrp; i++) { - indexes[i] = glob_lgrps[i]->os_index; - for (j = 0; j < curlgrp; j++) - distances[i*curlgrp+j] = (float) lgrp_latency_cookie(cookie, glob_lgrps[i]->os_index, glob_lgrps[j]->os_index, LGRP_LAT_CPU_TO_MEM); - } - hwloc_topology__set_distance_matrix(topology, HWLOC_OBJ_NODE, curlgrp, indexes, glob_lgrps, distances); - } -#endif /* HAVE_LGRP_LATENCY_COOKIE */ - } - lgrp_fini(cookie); -} -#endif /* LIBLGRP */ - -#ifdef HAVE_LIBKSTAT -#include <kstat.h> -#define HWLOC_NBMAXCPUS 1024 /* FIXME: drop */ -static int -hwloc_look_kstat(struct hwloc_topology *topology) -{ - kstat_ctl_t *kc = kstat_open(); - kstat_t *ksp; - kstat_named_t *stat; - unsigned look_cores = 1, look_chips = 1; - - unsigned numsockets = 0; - unsigned proc_physids[HWLOC_NBMAXCPUS]; - unsigned proc_osphysids[HWLOC_NBMAXCPUS]; - unsigned osphysids[HWLOC_NBMAXCPUS]; - - unsigned numcores = 0; - unsigned proc_coreids[HWLOC_NBMAXCPUS]; - unsigned oscoreids[HWLOC_NBMAXCPUS]; - - unsigned core_osphysids[HWLOC_NBMAXCPUS]; - - unsigned numprocs = 0; - unsigned proc_procids[HWLOC_NBMAXCPUS]; - unsigned osprocids[HWLOC_NBMAXCPUS]; - - unsigned physid, coreid, cpuid; - unsigned procid_max = 0; - unsigned i; - - for (cpuid = 0; cpuid < HWLOC_NBMAXCPUS; cpuid++) - { - proc_procids[cpuid] = -1; - proc_physids[cpuid] = -1; - proc_osphysids[cpuid] = -1; - proc_coreids[cpuid] = -1; - } - - if (!kc) - { - hwloc_debug("kstat_open failed: %s\n", strerror(errno)); - return 0; - } - - for (ksp = kc->kc_chain; ksp; ksp = ksp->ks_next) - { - if (strncmp("cpu_info", ksp->ks_module, 8)) - continue; - - cpuid = ksp->ks_instance; - if (cpuid > HWLOC_NBMAXCPUS) - { - fprintf(stderr,"CPU id too big: %u\n", cpuid); - continue; - } - - if (kstat_read(kc, ksp, NULL) == -1) - { - fprintf(stderr, "kstat_read failed for CPU%u: %s\n", cpuid, strerror(errno)); - continue; - } - - hwloc_debug("cpu%u\n", cpuid); - proc_procids[cpuid] = numprocs; - osprocids[numprocs] = cpuid; - numprocs++; - - if (cpuid >= procid_max) - procid_max = cpuid + 1; - - stat = (kstat_named_t *) kstat_data_lookup(ksp, "state"); - if (!stat) - hwloc_debug("could not read state for CPU%u: %s\n", cpuid, strerror(errno)); - else if (stat->data_type != KSTAT_DATA_CHAR) - hwloc_debug("unknown kstat type %d for cpu state\n", stat->data_type); - else - { - hwloc_debug("cpu%u's state is %s\n", cpuid, stat->value.c); - if (strcmp(stat->value.c, "on-line")) - /* not online */ - hwloc_bitmap_clr(topology->levels[0][0]->online_cpuset, cpuid); - } - - if (look_chips) do { - /* Get Chip ID */ - stat = (kstat_named_t *) kstat_data_lookup(ksp, "chip_id"); - if (!stat) - { - if (numsockets) - fprintf(stderr, "could not read socket id for CPU%u: %s\n", cpuid, strerror(errno)); - else - hwloc_debug("could not read socket id for CPU%u: %s\n", cpuid, strerror(errno)); - look_chips = 0; - continue; - } - switch (stat->data_type) { - case KSTAT_DATA_INT32: - physid = stat->value.i32; - break; - case KSTAT_DATA_UINT32: - physid = stat->value.ui32; - break; -#ifdef _INT64_TYPE - case KSTAT_DATA_UINT64: - physid = stat->value.ui64; - break; - case KSTAT_DATA_INT64: - physid = stat->value.i64; - break; -#endif - default: - fprintf(stderr, "chip_id type %d unknown\n", stat->data_type); - look_chips = 0; - continue; - } - proc_osphysids[cpuid] = physid; - for (i = 0; i < numsockets; i++) - if (physid == osphysids[i]) - break; - proc_physids[cpuid] = i; - hwloc_debug("%u on socket %u (%u)\n", cpuid, i, physid); - if (i == numsockets) - osphysids[numsockets++] = physid; - } while(0); - - if (look_cores) do { - /* Get Core ID */ - stat = (kstat_named_t *) kstat_data_lookup(ksp, "core_id"); - if (!stat) - { - if (numcores) - fprintf(stderr, "could not read core id for CPU%u: %s\n", cpuid, strerror(errno)); - else - hwloc_debug("could not read core id for CPU%u: %s\n", cpuid, strerror(errno)); - look_cores = 0; - continue; - } - switch (stat->data_type) { - case KSTAT_DATA_INT32: - coreid = stat->value.i32; - break; - case KSTAT_DATA_UINT32: - coreid = stat->value.ui32; - break; -#ifdef _INT64_TYPE - case KSTAT_DATA_UINT64: - coreid = stat->value.ui64; - break; - case KSTAT_DATA_INT64: - coreid = stat->value.i64; - break; -#endif - default: - fprintf(stderr, "core_id type %d unknown\n", stat->data_type); - look_cores = 0; - continue; - } - for (i = 0; i < numcores; i++) - if (coreid == oscoreids[i] && proc_osphysids[cpuid] == core_osphysids[i]) - break; - proc_coreids[cpuid] = i; - hwloc_debug("%u on core %u (%u)\n", cpuid, i, coreid); - if (i == numcores) - { - core_osphysids[numcores] = proc_osphysids[cpuid]; - oscoreids[numcores++] = coreid; - } - } while(0); - - /* Note: there is also clog_id for the Thread ID (not unique) and - * pkg_core_id for the core ID (not unique). They are not useful to us - * however. */ - } - - if (look_chips) - hwloc_setup_level(procid_max, numsockets, osphysids, proc_physids, topology, HWLOC_OBJ_SOCKET); - - if (look_cores) - hwloc_setup_level(procid_max, numcores, oscoreids, proc_coreids, topology, HWLOC_OBJ_CORE); - - if (numprocs) - hwloc_setup_level(procid_max, numprocs, osprocids, proc_procids, topology, HWLOC_OBJ_PU); - - kstat_close(kc); - - return numprocs > 0; -} -#endif /* LIBKSTAT */ - -void -hwloc_look_solaris(struct hwloc_topology *topology) -{ - unsigned nbprocs = hwloc_fallback_nbprocessors (topology); -#ifdef HAVE_LIBLGRP - hwloc_look_lgrp(topology); -#endif /* HAVE_LIBLGRP */ -#ifdef HAVE_LIBKSTAT - nbprocs = 0; - if (hwloc_look_kstat(topology)) - return; -#endif /* HAVE_LIBKSTAT */ - hwloc_setup_pu_level(topology, nbprocs); - - hwloc_add_object_info(topology->levels[0][0], "Backend", "Solaris"); -} - -void -hwloc_set_solaris_hooks(struct hwloc_topology *topology) -{ - topology->set_proc_cpubind = hwloc_solaris_set_proc_cpubind; - topology->set_thisproc_cpubind = hwloc_solaris_set_thisproc_cpubind; - topology->set_thisthread_cpubind = hwloc_solaris_set_thisthread_cpubind; -#ifdef HAVE_LIBLGRP - topology->get_proc_cpubind = hwloc_solaris_get_proc_cpubind; - topology->get_thisproc_cpubind = hwloc_solaris_get_thisproc_cpubind; - topology->get_thisthread_cpubind = hwloc_solaris_get_thisthread_cpubind; - topology->set_proc_membind = hwloc_solaris_set_proc_membind; - topology->set_thisproc_membind = hwloc_solaris_set_thisproc_membind; - topology->set_thisthread_membind = hwloc_solaris_set_thisthread_membind; - topology->get_proc_membind = hwloc_solaris_get_proc_membind; - topology->get_thisproc_membind = hwloc_solaris_get_thisproc_membind; - topology->get_thisthread_membind = hwloc_solaris_get_thisthread_membind; -#endif /* HAVE_LIBLGRP */ -#ifdef MADV_ACCESS_LWP - topology->set_area_membind = hwloc_solaris_set_area_membind; - topology->support.membind->firsttouch_membind = 1; - topology->support.membind->bind_membind = 1; - topology->support.membind->interleave_membind = 1; - topology->support.membind->nexttouch_membind = 1; -#endif -} diff --git a/hwloc-1.2.1/src/topology-synthetic.c b/hwloc-1.2.1/src/topology-synthetic.c deleted file mode 100644 index d716ea0b..00000000 --- a/hwloc-1.2.1/src/topology-synthetic.c +++ /dev/null @@ -1,335 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2011 INRIA. All rights reserved. - * Copyright © 2009-2010 Université Bordeaux 1 - * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -#include <private/autogen/config.h> -#include <hwloc.h> -#include <private/private.h> -#include <private/misc.h> -#include <private/debug.h> - -#include <limits.h> -#include <assert.h> -#include <strings.h> - -/* Read from DESCRIPTION a series of integers describing a symmetrical - topology and update `topology->synthetic_description' accordingly. On - success, return zero. */ -int -hwloc_backend_synthetic_init(struct hwloc_topology *topology, const char *description) -{ - const char *pos, *next_pos; - unsigned long item, count; - unsigned i; - int cache_depth = 0, group_depth = 0; - int nb_machine_levels = 0, nb_node_levels = 0; - int nb_pu_levels = 0; - - assert(topology->backend_type == HWLOC_BACKEND_NONE); - - for (pos = description, count = 1; *pos; pos = next_pos) { -#define HWLOC_OBJ_TYPE_UNKNOWN ((hwloc_obj_type_t) -1) - hwloc_obj_type_t type = HWLOC_OBJ_TYPE_UNKNOWN; - - while (*pos == ' ') - pos++; - - if (!*pos) - break; - - if (*pos < '0' || *pos > '9') { - if (!hwloc_namecoloncmp(pos, "machines", 2)) { - type = HWLOC_OBJ_MACHINE; - } else if (!hwloc_namecoloncmp(pos, "nodes", 1)) - type = HWLOC_OBJ_NODE; - else if (!hwloc_namecoloncmp(pos, "sockets", 1)) - type = HWLOC_OBJ_SOCKET; - else if (!hwloc_namecoloncmp(pos, "cores", 2)) - type = HWLOC_OBJ_CORE; - else if (!hwloc_namecoloncmp(pos, "caches", 2)) - type = HWLOC_OBJ_CACHE; - else if (!hwloc_namecoloncmp(pos, "pus", 1) || !hwloc_namecoloncmp(pos, "procs", 1) /* backward compatiblity with 0.9 */) - type = HWLOC_OBJ_PU; - else if (!hwloc_namecoloncmp(pos, "misc", 2)) - type = HWLOC_OBJ_MISC; - else if (!hwloc_namecoloncmp(pos, "group", 2)) - type = HWLOC_OBJ_GROUP; - else - fprintf(stderr, "Unknown object type `%s'\n", pos); - - next_pos = strchr(pos, ':'); - if (!next_pos) { - fprintf(stderr,"synthetic string doesn't have a `:' after object type at '%s'\n", pos); - errno = EINVAL; - return -1; - } - pos = next_pos + 1; - } - item = strtoul(pos, (char **)&next_pos, 0); - if (next_pos == pos) { - fprintf(stderr,"synthetic string doesn't have a number of objects at '%s'\n", pos); - errno = EINVAL; - return -1; - } - - if (count + 1 >= HWLOC_SYNTHETIC_MAX_DEPTH) { - fprintf(stderr,"Too many synthetic levels, max %d\n", HWLOC_SYNTHETIC_MAX_DEPTH); - errno = EINVAL; - return -1; - } - if (item > UINT_MAX) { - fprintf(stderr,"Too big arity, max %u\n", UINT_MAX); - errno = EINVAL; - return -1; - } - - topology->backend_params.synthetic.arity[count-1] = (unsigned)item; - topology->backend_params.synthetic.type[count] = type; - count++; - } - - if (count <= 0) { - fprintf(stderr,"synthetic string doesn't contain any object\n"); - errno = EINVAL; - return -1; - } - - for(i=count-1; i>0; i--) { - hwloc_obj_type_t type; - - type = topology->backend_params.synthetic.type[i]; - - if (type == HWLOC_OBJ_TYPE_UNKNOWN) { - if (i == count-1) - type = HWLOC_OBJ_PU; - else { - switch (topology->backend_params.synthetic.type[i+1]) { - case HWLOC_OBJ_PU: type = HWLOC_OBJ_CORE; break; - case HWLOC_OBJ_CORE: type = HWLOC_OBJ_CACHE; break; - case HWLOC_OBJ_CACHE: type = HWLOC_OBJ_SOCKET; break; - case HWLOC_OBJ_SOCKET: type = HWLOC_OBJ_NODE; break; - case HWLOC_OBJ_NODE: - case HWLOC_OBJ_GROUP: type = HWLOC_OBJ_GROUP; break; - case HWLOC_OBJ_MACHINE: - case HWLOC_OBJ_MISC: type = HWLOC_OBJ_MISC; break; - default: - assert(0); - } - } - topology->backend_params.synthetic.type[i] = type; - } - switch (type) { - case HWLOC_OBJ_PU: - if (nb_pu_levels) { - fprintf(stderr,"synthetic string can not have several PU levels\n"); - errno = EINVAL; - return -1; - } - nb_pu_levels++; - break; - case HWLOC_OBJ_CACHE: - cache_depth++; - break; - case HWLOC_OBJ_GROUP: - group_depth++; - break; - case HWLOC_OBJ_NODE: - nb_node_levels++; - break; - case HWLOC_OBJ_MACHINE: - nb_machine_levels++; - break; - default: - break; - } - } - - if (nb_pu_levels > 1) { - fprintf(stderr,"synthetic string can not have several PU levels\n"); - errno = EINVAL; - return -1; - } - if (nb_node_levels > 1) { - fprintf(stderr,"synthetic string can not have several NUMA node levels\n"); - errno = EINVAL; - return -1; - } - if (nb_machine_levels > 1) { - fprintf(stderr,"synthetic string can not have several machine levels\n"); - errno = EINVAL; - return -1; - } - - if (nb_machine_levels) - topology->backend_params.synthetic.type[0] = HWLOC_OBJ_SYSTEM; - else { - topology->backend_params.synthetic.type[0] = HWLOC_OBJ_MACHINE; - nb_machine_levels++; - } - - if (cache_depth == 1) - /* if there is a single cache level, make it L2 */ - cache_depth = 2; - - for (i=0; i<count; i++) { - hwloc_obj_type_t type = topology->backend_params.synthetic.type[i]; - - if (type == HWLOC_OBJ_GROUP) - topology->backend_params.synthetic.depth[i] = group_depth--; - else if (type == HWLOC_OBJ_CACHE) - topology->backend_params.synthetic.depth[i] = cache_depth--; - } - - topology->backend_type = HWLOC_BACKEND_SYNTHETIC; - topology->backend_params.synthetic.arity[count-1] = 0; - topology->is_thissystem = 0; - - return 0; -} - -void -hwloc_backend_synthetic_exit(struct hwloc_topology *topology) -{ - assert(topology->backend_type == HWLOC_BACKEND_SYNTHETIC); - topology->backend_type = HWLOC_BACKEND_NONE; -} - -/* - * Recursively build objects whose cpu start at first_cpu - * - level gives where to look in the type, arity and id arrays - * - the id array is used as a variable to get unique IDs for a given level. - * - generated memory should be added to *memory_kB. - * - generated cpus should be added to parent_cpuset. - * - next cpu number to be used should be returned. - */ -static unsigned -hwloc__look_synthetic(struct hwloc_topology *topology, - int level, unsigned first_cpu, - hwloc_bitmap_t parent_cpuset) -{ - hwloc_obj_t obj; - unsigned i; - hwloc_obj_type_t type = topology->backend_params.synthetic.type[level]; - - /* pre-hooks */ - switch (type) { - case HWLOC_OBJ_MISC: - break; - case HWLOC_OBJ_GROUP: - break; - case HWLOC_OBJ_SYSTEM: - /* Shouldn't happen. */ - abort(); - break; - case HWLOC_OBJ_MACHINE: - break; - case HWLOC_OBJ_NODE: - break; - case HWLOC_OBJ_SOCKET: - break; - case HWLOC_OBJ_CACHE: - break; - case HWLOC_OBJ_CORE: - break; - case HWLOC_OBJ_PU: - break; - case HWLOC_OBJ_TYPE_MAX: - /* Should never happen */ - assert(0); - break; - } - - obj = hwloc_alloc_setup_object(type, topology->backend_params.synthetic.id[level]++); - obj->cpuset = hwloc_bitmap_alloc(); - - if (!topology->backend_params.synthetic.arity[level]) { - hwloc_bitmap_set(obj->cpuset, first_cpu++); - } else { - for (i = 0; i < topology->backend_params.synthetic.arity[level]; i++) - first_cpu = hwloc__look_synthetic(topology, level + 1, first_cpu, obj->cpuset); - } - - if (type == HWLOC_OBJ_NODE) { - obj->nodeset = hwloc_bitmap_alloc(); - hwloc_bitmap_set(obj->nodeset, obj->os_index); - } - - hwloc_bitmap_or(parent_cpuset, parent_cpuset, obj->cpuset); - - /* post-hooks */ - switch (type) { - case HWLOC_OBJ_MISC: - break; - case HWLOC_OBJ_GROUP: - obj->attr->group.depth = topology->backend_params.synthetic.depth[level]; - break; - case HWLOC_OBJ_SYSTEM: - abort(); - break; - case HWLOC_OBJ_MACHINE: - break; - case HWLOC_OBJ_NODE: - /* 1GB in memory nodes, 256k 4k-pages. */ - obj->memory.local_memory = 1024*1024*1024; - obj->memory.page_types_len = 1; - obj->memory.page_types = malloc(sizeof(*obj->memory.page_types)); - memset(obj->memory.page_types, 0, sizeof(*obj->memory.page_types)); - obj->memory.page_types[0].size = 4096; - obj->memory.page_types[0].count = 256*1024; - break; - case HWLOC_OBJ_SOCKET: - break; - case HWLOC_OBJ_CACHE: - obj->attr->cache.depth = topology->backend_params.synthetic.depth[level]; - obj->attr->cache.linesize = 64; - if (obj->attr->cache.depth == 1) - /* 32Kb in L1 */ - obj->attr->cache.size = 32*1024; - else - /* *4 at each level, starting from 1MB for L2 */ - obj->attr->cache.size = 256*1024 << (2*obj->attr->cache.depth); - break; - case HWLOC_OBJ_CORE: - break; - case HWLOC_OBJ_PU: - break; - case HWLOC_OBJ_TYPE_MAX: - /* Should never happen */ - assert(0); - break; - } - - hwloc_insert_object_by_cpuset(topology, obj); - - return first_cpu; -} - -void -hwloc_look_synthetic(struct hwloc_topology *topology) -{ - hwloc_bitmap_t cpuset = hwloc_bitmap_alloc(); - unsigned first_cpu = 0, i; - - topology->support.discovery->pu = 1; - - /* start with id=0 for each level */ - for (i = 0; topology->backend_params.synthetic.arity[i] > 0; i++) - topology->backend_params.synthetic.id[i] = 0; - /* ... including the last one */ - topology->backend_params.synthetic.id[i] = 0; - - /* update first level type according to the synthetic type array */ - topology->levels[0][0]->type = topology->backend_params.synthetic.type[0]; - - for (i = 0; i < topology->backend_params.synthetic.arity[0]; i++) - first_cpu = hwloc__look_synthetic(topology, 1, first_cpu, cpuset); - - hwloc_bitmap_free(cpuset); - - hwloc_add_object_info(topology->levels[0][0], "Backend", "Synthetic"); -} - diff --git a/hwloc-1.2.1/src/topology-windows.c b/hwloc-1.2.1/src/topology-windows.c deleted file mode 100644 index 5c4c26a8..00000000 --- a/hwloc-1.2.1/src/topology-windows.c +++ /dev/null @@ -1,706 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2010 INRIA. All rights reserved. - * Copyright © 2009-2011 Université Bordeaux 1 - * Copyright © 2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -/* To try to get all declarations duplicated below. */ -#define _WIN32_WINNT 0x0601 - -#include <private/autogen/config.h> -#include <hwloc.h> -#include <private/private.h> -#include <private/debug.h> - -#include <windows.h> - -#ifndef HAVE_KAFFINITY -typedef ULONG_PTR KAFFINITY, *PKAFFINITY; -#endif - -#ifndef HAVE_PROCESSOR_CACHE_TYPE -typedef enum _PROCESSOR_CACHE_TYPE { - CacheUnified, - CacheInstruction, - CacheData, - CacheTrace -} PROCESSOR_CACHE_TYPE; -#endif - -#ifndef CACHE_FULLY_ASSOCIATIVE -#define CACHE_FULLY_ASSOCIATIVE 0xFF -#endif - -#ifndef HAVE_CACHE_DESCRIPTOR -typedef struct _CACHE_DESCRIPTOR { - BYTE Level; - BYTE Associativity; - WORD LineSize; - DWORD Size; /* in bytes */ - PROCESSOR_CACHE_TYPE Type; -} CACHE_DESCRIPTOR, *PCACHE_DESCRIPTOR; -#endif - -#ifndef HAVE_LOGICAL_PROCESSOR_RELATIONSHIP -typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP { - RelationProcessorCore, - RelationNumaNode, - RelationCache, - RelationProcessorPackage, - RelationGroup, - RelationAll = 0xffff -} LOGICAL_PROCESSOR_RELATIONSHIP; -#else /* HAVE_LOGICAL_PROCESSOR_RELATIONSHIP */ -# ifndef HAVE_RELATIONPROCESSORPACKAGE -# define RelationProcessorPackage 3 -# define RelationGroup 4 -# define RelationAll 0xffff -# endif /* HAVE_RELATIONPROCESSORPACKAGE */ -#endif /* HAVE_LOGICAL_PROCESSOR_RELATIONSHIP */ - -#ifndef HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION -typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION { - ULONG_PTR ProcessorMask; - LOGICAL_PROCESSOR_RELATIONSHIP Relationship; - _ANONYMOUS_UNION - union { - struct { - BYTE flags; - } ProcessorCore; - struct { - DWORD NodeNumber; - } NumaNode; - CACHE_DESCRIPTOR Cache; - ULONGLONG Reserved[2]; - } DUMMYUNIONNAME; -} SYSTEM_LOGICAL_PROCESSOR_INFORMATION, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION; -#endif - -/* Extended interface, for group support */ - -#ifndef HAVE_GROUP_AFFINITY -typedef struct _GROUP_AFFINITY { - KAFFINITY Mask; - WORD Group; - WORD Reserved[3]; -} GROUP_AFFINITY, *PGROUP_AFFINITY; -#endif - -#ifndef HAVE_PROCESSOR_RELATIONSHIP -typedef struct _PROCESSOR_RELATIONSHIP { - BYTE Flags; - BYTE Reserved[21]; - WORD GroupCount; - GROUP_AFFINITY GroupMask[ANYSIZE_ARRAY]; -} PROCESSOR_RELATIONSHIP, *PPROCESSOR_RELATIONSHIP; -#endif - -#ifndef HAVE_NUMA_NODE_RELATIONSHIP -typedef struct _NUMA_NODE_RELATIONSHIP { - DWORD NodeNumber; - BYTE Reserved[20]; - GROUP_AFFINITY GroupMask; -} NUMA_NODE_RELATIONSHIP, *PNUMA_NODE_RELATIONSHIP; -#endif - -#ifndef HAVE_CACHE_RELATIONSHIP -typedef struct _CACHE_RELATIONSHIP { - BYTE Level; - BYTE Associativity; - WORD LineSize; - DWORD CacheSize; - PROCESSOR_CACHE_TYPE Type; - BYTE Reserved[20]; - GROUP_AFFINITY GroupMask; -} CACHE_RELATIONSHIP, *PCACHE_RELATIONSHIP; -#endif - -#ifndef HAVE_PROCESSOR_GROUP_INFO -typedef struct _PROCESSOR_GROUP_INFO { - BYTE MaximumProcessorCount; - BYTE ActiveProcessorCount; - BYTE Reserved[38]; - KAFFINITY ActiveProcessorMask; -} PROCESSOR_GROUP_INFO, *PPROCESSOR_GROUP_INFO; -#endif - -#ifndef HAVE_GROUP_RELATIONSHIP -typedef struct _GROUP_RELATIONSHIP { - WORD MaximumGroupCount; - WORD ActiveGroupCount; - ULONGLONG Reserved[2]; - PROCESSOR_GROUP_INFO GroupInfo[ANYSIZE_ARRAY]; -} GROUP_RELATIONSHIP, *PGROUP_RELATIONSHIP; -#endif - -#ifndef HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX -typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX { - LOGICAL_PROCESSOR_RELATIONSHIP Relationship; - DWORD Size; - _ANONYMOUS_UNION - union { - PROCESSOR_RELATIONSHIP Processor; - NUMA_NODE_RELATIONSHIP NumaNode; - CACHE_RELATIONSHIP Cache; - GROUP_RELATIONSHIP Group; - /* Odd: no member to tell the cpu mask of the package... */ - } DUMMYUNIONNAME; -} SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX; -#endif - -#ifndef HAVE_PSAPI_WORKING_SET_EX_BLOCK -typedef union _PSAPI_WORKING_SET_EX_BLOCK { - ULONG_PTR Flags; - struct { - unsigned Valid :1; - unsigned ShareCount :3; - unsigned Win32Protection :11; - unsigned Shared :1; - unsigned Node :6; - unsigned Locked :1; - unsigned LargePage :1; - }; -} PSAPI_WORKING_SET_EX_BLOCK; -#endif - -#ifndef HAVE_PSAPI_WORKING_SET_EX_INFORMATION -typedef struct _PSAPI_WORKING_SET_EX_INFORMATION { - PVOID VirtualAddress; - PSAPI_WORKING_SET_EX_BLOCK VirtualAttributes; -} PSAPI_WORKING_SET_EX_INFORMATION; -#endif - -/* TODO: SetThreadIdealProcessor */ - -static int -hwloc_win_set_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t thread, hwloc_const_bitmap_t hwloc_set, int flags) -{ - if (flags & HWLOC_CPUBIND_NOMEMBIND) { - errno = ENOSYS; - return -1; - } - /* TODO: groups SetThreadGroupAffinity */ - /* The resulting binding is always strict */ - DWORD mask = hwloc_bitmap_to_ulong(hwloc_set); - if (!SetThreadAffinityMask(thread, mask)) - return -1; - return 0; -} - -/* TODO: SetThreadGroupAffinity to get affinity */ - -static int -hwloc_win_set_thisthread_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags) -{ - return hwloc_win_set_thread_cpubind(topology, GetCurrentThread(), hwloc_set, flags); -} - -static int -hwloc_win_set_thisthread_membind(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - int ret; - hwloc_cpuset_t cpuset; - - if ((policy != HWLOC_MEMBIND_DEFAULT && policy != HWLOC_MEMBIND_BIND) - || flags & HWLOC_MEMBIND_NOCPUBIND) { - errno = ENOSYS; - return -1; - } - - cpuset = hwloc_bitmap_alloc(); - hwloc_cpuset_from_nodeset(topology, cpuset, nodeset); - ret = hwloc_win_set_thisthread_cpubind(topology, cpuset, flags & HWLOC_MEMBIND_STRICT?HWLOC_CPUBIND_STRICT:0); - hwloc_bitmap_free(cpuset); - return ret; -} - -static int -hwloc_win_set_proc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t proc, hwloc_const_bitmap_t hwloc_set, int flags) -{ - if (flags & HWLOC_CPUBIND_NOMEMBIND) { - errno = ENOSYS; - return -1; - } - /* TODO: groups, hard: has to manually bind all threads into the other group, - * and the bind the process inside the group */ - /* The resulting binding is always strict */ - DWORD mask = hwloc_bitmap_to_ulong(hwloc_set); - if (!SetProcessAffinityMask(proc, mask)) - return -1; - return 0; -} - -static int -hwloc_win_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - int ret; - hwloc_cpuset_t cpuset; - - if ((policy != HWLOC_MEMBIND_DEFAULT && policy != HWLOC_MEMBIND_BIND) - || flags & HWLOC_MEMBIND_NOCPUBIND) { - errno = ENOSYS; - return -1; - } - - cpuset = hwloc_bitmap_alloc(); - hwloc_cpuset_from_nodeset(topology, cpuset, nodeset); - ret = hwloc_win_set_proc_cpubind(topology, pid, cpuset, flags & HWLOC_MEMBIND_STRICT?HWLOC_CPUBIND_STRICT:0); - hwloc_bitmap_free(cpuset); - return ret; -} - -static int -hwloc_win_get_proc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t proc, hwloc_bitmap_t hwloc_set, int flags) -{ - DWORD_PTR proc_mask, sys_mask; - if (flags & HWLOC_CPUBIND_NOMEMBIND) { - errno = ENOSYS; - return -1; - } - /* TODO: groups, GetProcessGroupAffinity, or merge SetThreadGroupAffinity for all threads */ - if (!GetProcessAffinityMask(proc, &proc_mask, &sys_mask)) - return -1; - hwloc_bitmap_from_ulong(hwloc_set, proc_mask); - return 0; -} - -static int -hwloc_win_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags) -{ - int ret; - hwloc_cpuset_t cpuset = hwloc_bitmap_alloc(); - ret = hwloc_win_get_proc_cpubind(topology, pid, cpuset, flags & HWLOC_MEMBIND_STRICT?HWLOC_CPUBIND_STRICT:0); - if (!ret) { - *policy = HWLOC_MEMBIND_BIND; - hwloc_cpuset_to_nodeset(topology, cpuset, nodeset); - } - hwloc_bitmap_free(cpuset); - return ret; -} - -static int -hwloc_win_set_thisproc_cpubind(hwloc_topology_t topology, hwloc_const_bitmap_t hwloc_set, int flags) -{ - return hwloc_win_set_proc_cpubind(topology, GetCurrentProcess(), hwloc_set, flags); -} - -static int -hwloc_win_set_thisproc_membind(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) -{ - return hwloc_win_set_proc_membind(topology, GetCurrentProcess(), nodeset, policy, flags); -} - -static int -hwloc_win_get_thisproc_cpubind(hwloc_topology_t topology, hwloc_bitmap_t hwloc_cpuset, int flags) -{ - return hwloc_win_get_proc_cpubind(topology, GetCurrentProcess(), hwloc_cpuset, flags); -} - -static int -hwloc_win_get_thisproc_membind(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags) -{ - return hwloc_win_get_proc_membind(topology, GetCurrentProcess(), nodeset, policy, flags); -} - -static LPVOID WINAPI (*VirtualAllocExNumaProc)(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect, DWORD nndPreferred); -static BOOL WINAPI (*VirtualFreeExProc)(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType); -static BOOL WINAPI (*QueryWorkingSetExProc)(HANDLE hProcess, PVOID pv, DWORD cb); - -static int hwloc_win_get_VirtualAllocExNumaProc(void) { - if (VirtualAllocExNumaProc == NULL) { - FARPROC alloc_fun = NULL, free_fun = NULL; - HMODULE kernel32; - - kernel32 = LoadLibrary("kernel32.dll"); - if (kernel32) { - alloc_fun = GetProcAddress(kernel32, "VirtualAllocExNuma"); - free_fun = GetProcAddress(kernel32, "VirtualFreeEx"); - } - - if (!alloc_fun || !free_fun) { - VirtualAllocExNumaProc = (FARPROC) -1; - errno = ENOSYS; - return -1; - } - - VirtualAllocExNumaProc = alloc_fun; - VirtualFreeExProc = free_fun; - } else if ((FARPROC) VirtualAllocExNumaProc == (FARPROC)-1) { - errno = ENOSYS; - return -1; - } - - return 0; -} - -static void * -hwloc_win_alloc(hwloc_topology_t topology __hwloc_attribute_unused, size_t len) { - return VirtualAlloc(NULL, len, MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE); -} - -static void * -hwloc_win_alloc_membind(hwloc_topology_t topology __hwloc_attribute_unused, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) { - int node; - - switch (policy) { - case HWLOC_MEMBIND_DEFAULT: - case HWLOC_MEMBIND_BIND: - break; - default: - errno = ENOSYS; - return hwloc_alloc_or_fail(topology, len, flags); - } - - if (flags & HWLOC_MEMBIND_STRICT) { - errno = ENOSYS; - return NULL; - } - - if (hwloc_bitmap_weight(nodeset) != 1) { - /* Not a single node, can't do this */ - errno = EXDEV; - return hwloc_alloc_or_fail(topology, len, flags); - } - - node = hwloc_bitmap_first(nodeset); - return VirtualAllocExNumaProc(GetCurrentProcess(), NULL, len, MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE, node); -} - -static int -hwloc_win_free_membind(hwloc_topology_t topology __hwloc_attribute_unused, void *addr, size_t len __hwloc_attribute_unused) { - if (!addr) - return 0; - if (!VirtualFreeExProc(GetCurrentProcess(), addr, 0, MEM_RELEASE)) - return -1; - return 0; -} - -static int hwloc_win_get_QueryWorkingSetExProc(void) { - if (QueryWorkingSetExProc == NULL) { - FARPROC fun = NULL; - HMODULE kernel32, psapi; - - kernel32 = LoadLibrary("kernel32.dll"); - if (kernel32) - fun = GetProcAddress(kernel32, "K32QueryWorkingSetEx"); - if (!fun) { - psapi = LoadLibrary("psapi.dll"); - if (psapi) - fun = GetProcAddress(psapi, "QueryWorkingSetEx"); - } - - if (!fun) { - QueryWorkingSetExProc = (FARPROC) -1; - errno = ENOSYS; - return -1; - } - - QueryWorkingSetExProc = fun; - } else if ((FARPROC) QueryWorkingSetExProc == (FARPROC)-1) { - errno = ENOSYS; - return -1; - } - - return 0; -} - -static int -hwloc_win_get_area_membind(hwloc_topology_t topology __hwloc_attribute_unused, const void *addr, size_t len, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags) -{ - SYSTEM_INFO SystemInfo; - DWORD page_size; - - GetSystemInfo(&SystemInfo); - page_size = SystemInfo.dwPageSize; - - uintptr_t start = (((uintptr_t) addr) / page_size) * page_size; - unsigned nb = (((uintptr_t) addr + len - start) + page_size - 1) / page_size; - - if (!nb) - nb = 1; - - { - PSAPI_WORKING_SET_EX_INFORMATION pv[nb]; - unsigned i; - - for (i = 0; i < nb; i++) - pv[i].VirtualAddress = (void*) (start + i * page_size); - if (!QueryWorkingSetExProc(GetCurrentProcess(), &pv, sizeof(pv))) - return -1; - *policy = HWLOC_MEMBIND_BIND; - if (flags & HWLOC_MEMBIND_STRICT) { - unsigned node = pv[0].VirtualAttributes.Node; - for (i = 1; i < nb; i++) { - if (pv[i].VirtualAttributes.Node != node) { - errno = EXDEV; - return -1; - } - } - hwloc_bitmap_only(nodeset, node); - return 0; - } - hwloc_bitmap_zero(nodeset); - for (i = 0; i < nb; i++) - hwloc_bitmap_set(nodeset, pv[i].VirtualAttributes.Node); - return 0; - } -} - -void -hwloc_look_windows(struct hwloc_topology *topology) -{ - BOOL WINAPI (*GetLogicalProcessorInformationProc)(PSYSTEM_LOGICAL_PROCESSOR_INFORMATION Buffer, PDWORD ReturnLength); - BOOL WINAPI (*GetLogicalProcessorInformationExProc)(LOGICAL_PROCESSOR_RELATIONSHIP relationship, PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Buffer, PDWORD ReturnLength); - BOOL WINAPI (*GetNumaAvailableMemoryNodeProc)(UCHAR Node, PULONGLONG AvailableBytes); - BOOL WINAPI (*GetNumaAvailableMemoryNodeExProc)(USHORT Node, PULONGLONG AvailableBytes); - SYSTEM_INFO SystemInfo; - - DWORD length; - - HMODULE kernel32; - - GetSystemInfo(&SystemInfo); - - kernel32 = LoadLibrary("kernel32.dll"); - if (kernel32) { - GetLogicalProcessorInformationProc = GetProcAddress(kernel32, "GetLogicalProcessorInformation"); - GetNumaAvailableMemoryNodeProc = GetProcAddress(kernel32, "GetNumaAvailableMemoryNode"); - GetNumaAvailableMemoryNodeExProc = GetProcAddress(kernel32, "GetNumaAvailableMemoryNodeEx"); - GetLogicalProcessorInformationExProc = GetProcAddress(kernel32, "GetLogicalProcessorInformationEx"); - - if (!GetLogicalProcessorInformationExProc && GetLogicalProcessorInformationProc) { - PSYSTEM_LOGICAL_PROCESSOR_INFORMATION procInfo; - unsigned id; - unsigned i; - struct hwloc_obj *obj; - hwloc_obj_type_t type; - - length = 0; - procInfo = NULL; - - while (1) { - if (GetLogicalProcessorInformationProc(procInfo, &length)) - break; - if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) - return; - procInfo = realloc(procInfo, length); - } - - for (i = 0; i < length / sizeof(*procInfo); i++) { - - /* Ignore non-data caches */ - if (procInfo[i].Relationship == RelationCache - && procInfo[i].Cache.Type != CacheUnified - && procInfo[i].Cache.Type != CacheData) - continue; - - id = -1; - switch (procInfo[i].Relationship) { - case RelationNumaNode: - type = HWLOC_OBJ_NODE; - id = procInfo[i].NumaNode.NodeNumber; - break; - case RelationProcessorPackage: - type = HWLOC_OBJ_SOCKET; - break; - case RelationCache: - type = HWLOC_OBJ_CACHE; - break; - case RelationProcessorCore: - type = HWLOC_OBJ_CORE; - break; - case RelationGroup: - default: - type = HWLOC_OBJ_GROUP; - break; - } - - obj = hwloc_alloc_setup_object(type, id); - obj->cpuset = hwloc_bitmap_alloc(); - hwloc_debug("%s#%u mask %lx\n", hwloc_obj_type_string(type), id, procInfo[i].ProcessorMask); - hwloc_bitmap_from_ulong(obj->cpuset, procInfo[i].ProcessorMask); - - switch (type) { - case HWLOC_OBJ_NODE: - { - ULONGLONG avail; - obj->nodeset = hwloc_bitmap_alloc(); - hwloc_bitmap_set(obj->nodeset, id); - if ((GetNumaAvailableMemoryNodeExProc && GetNumaAvailableMemoryNodeExProc(id, &avail)) - || (GetNumaAvailableMemoryNodeProc && GetNumaAvailableMemoryNodeProc(id, &avail))) - obj->memory.local_memory = avail; - obj->memory.page_types_len = 2; - obj->memory.page_types = malloc(2 * sizeof(*obj->memory.page_types)); - memset(obj->memory.page_types, 0, 2 * sizeof(*obj->memory.page_types)); - obj->memory.page_types_len = 1; - obj->memory.page_types[0].size = SystemInfo.dwPageSize; -#ifdef HAVE__SC_LARGE_PAGESIZE - obj->memory.page_types_len++; - obj->memory.page_types[1].size = sysconf(_SC_LARGE_PAGESIZE); -#endif - break; - } - case HWLOC_OBJ_CACHE: - obj->attr->cache.size = procInfo[i].Cache.Size; - obj->attr->cache.linesize = procInfo[i].Cache.LineSize; - obj->attr->cache.depth = procInfo[i].Cache.Level; - break; - case HWLOC_OBJ_GROUP: - obj->attr->group.depth = procInfo[i].Relationship == RelationGroup; - break; - default: - break; - } - hwloc_insert_object_by_cpuset(topology, obj); - } - - free(procInfo); - } - - if (GetLogicalProcessorInformationExProc) { - PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX procInfoTotal, procInfo; - - unsigned id; - struct hwloc_obj *obj; - hwloc_obj_type_t type; - - length = 0; - procInfoTotal = NULL; - - while (1) { - if (GetLogicalProcessorInformationExProc(RelationAll, procInfoTotal, &length)) - break; - if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) - return; - procInfoTotal = realloc(procInfoTotal, length); - } - - for (procInfo = procInfoTotal; - (void*) procInfo < (void*) ((unsigned long) procInfoTotal + length); - procInfo = (void*) ((unsigned long) procInfo + procInfo->Size)) { - unsigned num, i; - GROUP_AFFINITY *GroupMask; - - /* Ignore non-data caches */ - if (procInfo->Relationship == RelationCache - && procInfo->Cache.Type != CacheUnified - && procInfo->Cache.Type != CacheData) - continue; - - id = -1; - switch (procInfo->Relationship) { - case RelationNumaNode: - type = HWLOC_OBJ_NODE; - num = 1; - GroupMask = &procInfo->NumaNode.GroupMask; - id = procInfo->NumaNode.NodeNumber; - break; - case RelationProcessorPackage: - type = HWLOC_OBJ_SOCKET; - num = procInfo->Processor.GroupCount; - GroupMask = procInfo->Processor.GroupMask; - break; - case RelationCache: - type = HWLOC_OBJ_CACHE; - num = 1; - GroupMask = &procInfo->Cache.GroupMask; - break; - case RelationProcessorCore: - type = HWLOC_OBJ_CORE; - num = procInfo->Processor.GroupCount; - GroupMask = procInfo->Processor.GroupMask; - break; - case RelationGroup: - /* So strange an interface... */ - for (id = 0; id < procInfo->Group.ActiveGroupCount; id++) { - KAFFINITY mask; - obj = hwloc_alloc_setup_object(HWLOC_OBJ_GROUP, id); - obj->cpuset = hwloc_bitmap_alloc(); - mask = procInfo->Group.GroupInfo[id].ActiveProcessorMask; - hwloc_debug("group %u %d cpus mask %lx\n", id, - procInfo->Group.GroupInfo[id].ActiveProcessorCount, mask); - hwloc_bitmap_from_ith_ulong(obj->cpuset, id, mask); - hwloc_insert_object_by_cpuset(topology, obj); - } - continue; - default: - /* Don't know how to get the mask. */ - hwloc_debug("unknown relation %d\n", procInfo->Relationship); - continue; - } - - obj = hwloc_alloc_setup_object(type, id); - obj->cpuset = hwloc_bitmap_alloc(); - for (i = 0; i < num; i++) { - hwloc_debug("%s#%u %d: mask %d:%lx\n", hwloc_obj_type_string(type), id, i, GroupMask[i].Group, GroupMask[i].Mask); - hwloc_bitmap_from_ith_ulong(obj->cpuset, GroupMask[i].Group, GroupMask[i].Mask); - } - - switch (type) { - case HWLOC_OBJ_NODE: - { - ULONGLONG avail; - obj->nodeset = hwloc_bitmap_alloc(); - hwloc_bitmap_set(obj->nodeset, id); - if ((GetNumaAvailableMemoryNodeExProc && GetNumaAvailableMemoryNodeExProc(id, &avail)) - || (GetNumaAvailableMemoryNodeProc && GetNumaAvailableMemoryNodeProc(id, &avail))) - obj->memory.local_memory = avail; - obj->memory.page_types = malloc(2 * sizeof(*obj->memory.page_types)); - memset(obj->memory.page_types, 0, 2 * sizeof(*obj->memory.page_types)); - obj->memory.page_types_len = 1; - obj->memory.page_types[0].size = SystemInfo.dwPageSize; -#ifdef HAVE__SC_LARGE_PAGESIZE - obj->memory.page_types_len++; - obj->memory.page_types[1].size = sysconf(_SC_LARGE_PAGESIZE); -#endif - break; - } - case HWLOC_OBJ_CACHE: - obj->attr->cache.size = procInfo->Cache.CacheSize; - obj->attr->cache.linesize = procInfo->Cache.LineSize; - obj->attr->cache.depth = procInfo->Cache.Level; - break; - default: - break; - } - hwloc_insert_object_by_cpuset(topology, obj); - } - free(procInfoTotal); - } - } - - /* add PU objects */ - hwloc_setup_pu_level(topology, hwloc_fallback_nbprocessors(topology)); - - hwloc_add_object_info(topology->levels[0][0], "Backend", "Windows"); -} - -void -hwloc_set_windows_hooks(struct hwloc_topology *topology) -{ - topology->set_proc_cpubind = hwloc_win_set_proc_cpubind; - topology->get_proc_cpubind = hwloc_win_get_proc_cpubind; - topology->set_thread_cpubind = hwloc_win_set_thread_cpubind; - topology->set_thisproc_cpubind = hwloc_win_set_thisproc_cpubind; - topology->get_thisproc_cpubind = hwloc_win_get_thisproc_cpubind; - topology->set_thisthread_cpubind = hwloc_win_set_thisthread_cpubind; - /* TODO: get_last_cpu_location: use GetCurrentProcessorNumber */ - - topology->set_proc_membind = hwloc_win_set_proc_membind; - topology->get_proc_membind = hwloc_win_get_proc_membind; - topology->set_thisproc_membind = hwloc_win_set_thisproc_membind; - topology->get_thisproc_membind = hwloc_win_get_thisproc_membind; - topology->set_thisthread_membind = hwloc_win_set_thisthread_membind; - - if (!hwloc_win_get_VirtualAllocExNumaProc()) { - topology->alloc_membind = hwloc_win_alloc_membind; - topology->alloc = hwloc_win_alloc; - topology->free_membind = hwloc_win_free_membind; - topology->support.membind->bind_membind = 1; - } - - if (!hwloc_win_get_QueryWorkingSetExProc()) - topology->get_area_membind = hwloc_win_get_area_membind; -} diff --git a/hwloc-1.2.1/src/topology-x86.c b/hwloc-1.2.1/src/topology-x86.c deleted file mode 100644 index e1e7475a..00000000 --- a/hwloc-1.2.1/src/topology-x86.c +++ /dev/null @@ -1,535 +0,0 @@ -/* - * Copyright © 2010 INRIA. All rights reserved. - * Copyright © 2010-2011 Université Bordeaux 1 - * Copyright © 2010-2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - * - * - * This backend is only used when the operating system does not export - * the necessary hardware topology information to user-space applications. - * Currently, only the FreeBSD backend relies on this x86 backend. - * - * Other backends such as Linux have their own way to retrieve various - * pieces of hardware topology information from the operating system - * on various architectures, without having to use this x86-specific code. - */ - -#include <private/autogen/config.h> -#include <hwloc.h> -#include <private/private.h> -#include <private/debug.h> -#include <private/cpuid.h> -#include <private/misc.h> - -struct cacheinfo { - unsigned type; - unsigned level; - unsigned nbthreads_sharing; - - unsigned linesize; - unsigned linepart; - unsigned ways; - unsigned sets; - unsigned size; -}; - -struct procinfo { - unsigned present; - unsigned apicid; - unsigned max_log_proc; - unsigned max_nbcores; - unsigned max_nbthreads; - unsigned socketid; - unsigned logprocid; - unsigned threadid; - unsigned coreid; - unsigned *otherids; - unsigned levels; - unsigned numcaches; - struct cacheinfo *cache; -}; - -enum cpuid_type { - intel, - amd, - unknown -}; - -static void fill_amd_cache(struct procinfo *infos, unsigned level, unsigned cpuid) -{ - struct cacheinfo *cache; - unsigned cachenum; - unsigned size = 0; - - if (level == 1) - size = ((cpuid >> 24)) << 10; - else if (level == 2) - size = ((cpuid >> 16)) << 10; - else if (level == 3) - size = ((cpuid >> 18)) << 19; - if (!size) - return; - - cachenum = infos->numcaches++; - infos->cache = realloc(infos->cache, infos->numcaches*sizeof(*infos->cache)); - cache = &infos->cache[cachenum]; - - cache->type = 1; - cache->level = level; - if (level <= 2) - cache->nbthreads_sharing = 1; - else - cache->nbthreads_sharing = infos->max_log_proc; - cache->linesize = cpuid & 0xff; - cache->linepart = 0; - if (level == 1) - cache->ways = (cpuid >> 16) & 0xff; - else { - static const unsigned ways_tab[] = { 0, 1, 2, 0, 4, 0, 8, 0, 16, 0, 32, 48, 64, 96, 128, 0 }; - unsigned ways = (cpuid >> 12) & 0xf; - cache->ways = ways_tab[ways]; - } - cache->size = size; - cache->sets = 0; - - hwloc_debug("cache L%u t%u linesize %u ways %u size %uKB\n", cache->level, cache->nbthreads_sharing, cache->linesize, cache->ways, cache->size >> 10); -} - -/* Fetch information from the processor itself thanks to cpuid and store it in - * infos for summarize to analyze them globally */ -static void look_proc(struct procinfo *infos, unsigned highest_cpuid, unsigned highest_ext_cpuid, enum cpuid_type cpuid_type) -{ - unsigned eax, ebx, ecx = 0, edx; - unsigned cachenum; - struct cacheinfo *cache; - - infos->present = 1; - - eax = 0x01; - hwloc_cpuid(&eax, &ebx, &ecx, &edx); - infos->apicid = ebx >> 24; - if (edx & (1 << 28)) - infos->max_log_proc = 1 << hwloc_flsl(((ebx >> 16) & 0xff) - 1); - else - infos->max_log_proc = 1; - hwloc_debug("APIC ID 0x%02x max_log_proc %u\n", infos->apicid, infos->max_log_proc); - infos->socketid = infos->apicid / infos->max_log_proc; - infos->logprocid = infos->apicid % infos->max_log_proc; - infos->coreid = (unsigned) -1; - infos->threadid = (unsigned) -1; - hwloc_debug("phys %u thread %u\n", infos->socketid, infos->logprocid); - - /* Intel doesn't actually provide 0x80000008 information */ - if (cpuid_type != intel && highest_ext_cpuid >= 0x80000008) { - unsigned coreidsize; - eax = 0x80000008; - hwloc_cpuid(&eax, &ebx, &ecx, &edx); - coreidsize = (ecx >> 12) & 0xf; - hwloc_debug("core ID size: %u\n", coreidsize); - if (!coreidsize) { - infos->max_nbcores = (ecx & 0xff) + 1; - } else - infos->max_nbcores = 1 << coreidsize; - hwloc_debug("Thus max # of cores: %u\n", infos->max_nbcores); - /* Still no multithreaded AMD */ - infos->max_nbthreads = 1 ; - hwloc_debug("and max # of threads: %u\n", infos->max_nbthreads); - infos->threadid = infos->logprocid % infos->max_nbthreads; - infos->coreid = infos->logprocid / infos->max_nbthreads; - hwloc_debug("this is thread %u of core %u\n", infos->threadid, infos->coreid); - } - - infos->numcaches = 0; - infos->cache = NULL; - - /* Intel doesn't actually provide 0x80000005 information */ - if (cpuid_type != intel && highest_ext_cpuid >= 0x80000005) { - eax = 0x80000005; - hwloc_cpuid(&eax, &ebx, &ecx, &edx); - fill_amd_cache(infos, 1, ecx); - } - - /* Intel doesn't actually provide 0x80000006 information */ - if (cpuid_type != intel && highest_ext_cpuid >= 0x80000006) { - eax = 0x80000006; - hwloc_cpuid(&eax, &ebx, &ecx, &edx); - fill_amd_cache(infos, 2, ecx); - fill_amd_cache(infos, 3, edx); - } - - /* AMD doesn't actually provide 0x04 information */ - if (cpuid_type != amd && highest_cpuid >= 0x04) { - cachenum = 0; - for (cachenum = 0; ; cachenum++) { - unsigned type; - eax = 0x04; - ecx = cachenum; - hwloc_cpuid(&eax, &ebx, &ecx, &edx); - - type = eax & 0x1f; - - hwloc_debug("cache %u type %u\n", cachenum, type); - - if (type == 0) - break; - if (type == 2) - /* Instruction cache */ - continue; - infos->numcaches++; - } - - cache = infos->cache = malloc(infos->numcaches * sizeof(*infos->cache)); - - for (cachenum = 0; ; cachenum++) { - unsigned linesize, linepart, ways, sets; - unsigned type; - eax = 0x04; - ecx = cachenum; - hwloc_cpuid(&eax, &ebx, &ecx, &edx); - - type = eax & 0x1f; - - if (type == 0) - break; - if (type == 2) - /* Instruction cache */ - continue; - - cache->type = type; - - cache->level = (eax >> 5) & 0x7; - cache->nbthreads_sharing = ((eax >> 14) & 0xfff) + 1; - infos->max_nbcores = ((eax >> 26) & 0x3f) + 1; - - cache->linesize = linesize = (ebx & 0xfff) + 1; - cache->linepart = linepart = ((ebx >> 12) & 0x3ff) + 1; - cache->ways = ways = ((ebx >> 22) & 0x3ff) + 1; - cache->sets = sets = ecx + 1; - cache->size = linesize * linepart * ways * sets; - - hwloc_debug("cache %u type %u L%u t%u c%u linesize %u linepart %u ways %u sets %u, size %uKB\n", cachenum, cache->type, cache->level, cache->nbthreads_sharing, infos->max_nbcores, linesize, linepart, ways, sets, cache->size >> 10); - infos->max_nbthreads = infos->max_log_proc / infos->max_nbcores; - hwloc_debug("thus %u threads\n", infos->max_nbthreads); - infos->threadid = infos->logprocid % infos->max_nbthreads; - infos->coreid = infos->logprocid / infos->max_nbthreads; - hwloc_debug("this is thread %u of core %u\n", infos->threadid, infos->coreid); - - cache++; - } - } - - if (cpuid_type == intel && highest_cpuid >= 0x0b) { - unsigned level, apic_nextshift, apic_number, apic_type, apic_id = 0, apic_shift = 0, id; - for (level = 0; ; level++) { - ecx = level; - eax = 0x0b; - hwloc_cpuid(&eax, &ebx, &ecx, &edx); - if (!eax && !ebx) - break; - } - if (level) { - infos->levels = level; - infos->otherids = malloc(level * sizeof(*infos->otherids)); - for (level = 0; ; level++) { - ecx = level; - eax = 0x0b; - hwloc_cpuid(&eax, &ebx, &ecx, &edx); - if (!eax && !ebx) - break; - apic_nextshift = eax & 0x1f; - apic_number = ebx & 0xffff; - apic_type = (ecx & 0xff00) >> 8; - apic_id = edx; - id = (apic_id >> apic_shift) & ((1 << (apic_nextshift - apic_shift)) - 1); - hwloc_debug("x2APIC %08x %d: nextshift %d num %2d type %d id %2d\n", apic_id, level, apic_nextshift, apic_number, apic_type, id); - infos->apicid = apic_id; - infos->otherids[level] = UINT_MAX; - switch (apic_type) { - case 1: - infos->threadid = id; - break; - case 2: - infos->coreid = id; - break; - default: - hwloc_debug("x2APIC %d: unknown type %d\n", level, apic_type); - infos->otherids[level] = apic_id >> apic_shift; - break; - } - apic_shift = apic_nextshift; - } - infos->socketid = apic_id >> apic_shift; - hwloc_debug("x2APIC remainder: %d\n", infos->socketid); - } else - infos->otherids = NULL; - } else - infos->otherids = NULL; -} - -/* Analyse information stored in infos, and build topology levels accordingly */ -static void summarize(hwloc_topology_t topology, struct procinfo *infos, unsigned nbprocs) -{ - hwloc_bitmap_t complete_cpuset = hwloc_bitmap_alloc(); - unsigned i, j, l, level; - int one = -1; - - for (i = 0; i < nbprocs; i++) - if (infos[i].present) { - hwloc_bitmap_set(complete_cpuset, i); - one = i; - } - - if (one == -1) - return; - - /* Look for sockets */ - { - hwloc_bitmap_t sockets_cpuset = hwloc_bitmap_dup(complete_cpuset); - hwloc_bitmap_t socket_cpuset; - hwloc_obj_t sock; - - while ((i = hwloc_bitmap_first(sockets_cpuset)) != (unsigned) -1) { - unsigned socketid = infos[i].socketid; - - socket_cpuset = hwloc_bitmap_alloc(); - for (j = i; j < nbprocs; j++) { - if (infos[j].socketid == socketid) { - hwloc_bitmap_set(socket_cpuset, j); - hwloc_bitmap_clr(sockets_cpuset, j); - } - } - sock = hwloc_alloc_setup_object(HWLOC_OBJ_SOCKET, socketid); - sock->cpuset = socket_cpuset; - hwloc_debug_1arg_bitmap("os socket %u has cpuset %s\n", - socketid, socket_cpuset); - hwloc_insert_object_by_cpuset(topology, sock); - } - hwloc_bitmap_free(sockets_cpuset); - } - - /* Look for unknown objects */ - if (infos[one].otherids) { - for (level = infos[one].levels-1; level <= infos[one].levels-1; level--) { - if (infos[one].otherids[level] != UINT_MAX) { - hwloc_bitmap_t unknowns_cpuset = hwloc_bitmap_dup(complete_cpuset); - hwloc_bitmap_t unknown_cpuset; - hwloc_obj_t unknown; - - while ((i = hwloc_bitmap_first(unknowns_cpuset)) != (unsigned) -1) { - unsigned unknownid = infos[i].otherids[level]; - - unknown_cpuset = hwloc_bitmap_alloc(); - for (j = i; j < nbprocs; j++) { - if (infos[j].otherids[level] == unknownid) { - hwloc_bitmap_set(unknown_cpuset, j); - hwloc_bitmap_clr(unknowns_cpuset, j); - } - } - unknown = hwloc_alloc_setup_object(HWLOC_OBJ_MISC, unknownid); - unknown->cpuset = unknown_cpuset; - unknown->os_level = level; - hwloc_debug_2args_bitmap("os unknown%d %u has cpuset %s\n", - level, unknownid, unknown_cpuset); - hwloc_insert_object_by_cpuset(topology, unknown); - } - hwloc_bitmap_free(unknowns_cpuset); - } - } - } - - /* Look for cores */ - { - hwloc_bitmap_t cores_cpuset = hwloc_bitmap_dup(complete_cpuset); - hwloc_bitmap_t core_cpuset; - hwloc_obj_t core; - - while ((i = hwloc_bitmap_first(cores_cpuset)) != (unsigned) -1) { - unsigned socketid = infos[i].socketid; - unsigned coreid = infos[i].coreid; - - if (coreid == (unsigned) -1) { - hwloc_bitmap_clr(cores_cpuset, i); - continue; - } - - core_cpuset = hwloc_bitmap_alloc(); - for (j = i; j < nbprocs; j++) { - if (infos[j].coreid == (unsigned) -1) { - hwloc_bitmap_clr(cores_cpuset, j); - continue; - } - - if (infos[j].socketid == socketid && infos[j].coreid == coreid) { - hwloc_bitmap_set(core_cpuset, j); - hwloc_bitmap_clr(cores_cpuset, j); - } - } - core = hwloc_alloc_setup_object(HWLOC_OBJ_CORE, coreid); - core->cpuset = core_cpuset; - hwloc_debug_1arg_bitmap("os core %u has cpuset %s\n", - coreid, core_cpuset); - hwloc_insert_object_by_cpuset(topology, core); - } - hwloc_bitmap_free(cores_cpuset); - } - - /* Look for caches */ - /* First find max level */ - level = 0; - for (i = 0; i < nbprocs; i++) - for (j = 0; j < infos[i].numcaches; j++) - if (infos[i].cache[j].level > level) - level = infos[i].cache[j].level; - - while (level > 0) { - /* Look for caches at level level */ - { - hwloc_bitmap_t caches_cpuset = hwloc_bitmap_dup(complete_cpuset); - hwloc_bitmap_t cache_cpuset; - hwloc_obj_t cache; - - while ((i = hwloc_bitmap_first(caches_cpuset)) != (unsigned) -1) { - unsigned socketid = infos[i].socketid; - - for (l = 0; l < infos[i].numcaches; l++) { - if (infos[i].cache[l].level == level) - break; - } - if (l == infos[i].numcaches) { - /* no cache Llevel in i, odd */ - hwloc_bitmap_clr(caches_cpuset, i); - continue; - } - - { - unsigned cacheid = infos[i].apicid / infos[i].cache[l].nbthreads_sharing; - - cache_cpuset = hwloc_bitmap_alloc(); - for (j = i; j < nbprocs; j++) { - unsigned l2; - for (l2 = 0; l2 < infos[j].numcaches; l2++) { - if (infos[j].cache[l2].level == level) - break; - } - if (l2 == infos[j].numcaches) { - /* no cache Llevel in j, odd */ - hwloc_bitmap_clr(caches_cpuset, j); - continue; - } - if (infos[j].socketid == socketid && infos[j].apicid / infos[j].cache[l2].nbthreads_sharing == cacheid) { - hwloc_bitmap_set(cache_cpuset, j); - hwloc_bitmap_clr(caches_cpuset, j); - } - } - cache = hwloc_alloc_setup_object(HWLOC_OBJ_CACHE, cacheid); - cache->attr->cache.depth = level; - cache->attr->cache.size = infos[i].cache[l].size; - cache->attr->cache.linesize = infos[i].cache[l].linesize; - cache->cpuset = cache_cpuset; - hwloc_debug_2args_bitmap("os L%u cache %u has cpuset %s\n", - level, cacheid, cache_cpuset); - hwloc_insert_object_by_cpuset(topology, cache); - } - } - hwloc_bitmap_free(caches_cpuset); - } - level--; - } - - for (i = 0; i < nbprocs; i++) { - free(infos[i].cache); - if (infos[i].otherids) - free(infos[i].otherids); - } -} - -#define INTEL_EBX ('G' | ('e'<<8) | ('n'<<16) | ('u'<<24)) -#define INTEL_EDX ('i' | ('n'<<8) | ('e'<<16) | ('I'<<24)) -#define INTEL_ECX ('n' | ('t'<<8) | ('e'<<16) | ('l'<<24)) - -#define AMD_EBX ('A' | ('u'<<8) | ('t'<<16) | ('h'<<24)) -#define AMD_EDX ('e' | ('n'<<8) | ('t'<<16) | ('i'<<24)) -#define AMD_ECX ('c' | ('A'<<8) | ('M'<<16) | ('D'<<24)) - -void hwloc_look_x86(struct hwloc_topology *topology, unsigned nbprocs) -{ - /* This function must always be here, but it's ok if it's empty. */ -#if defined(HWLOC_HAVE_CPUID) - unsigned eax, ebx, ecx = 0, edx; - hwloc_bitmap_t orig_cpuset; - unsigned i; - unsigned highest_cpuid; - unsigned highest_ext_cpuid; - struct procinfo *infos = NULL; - enum cpuid_type cpuid_type = unknown; - - if (!hwloc_have_cpuid()) - return; - - infos = malloc(sizeof(struct procinfo) * nbprocs); - if (NULL == infos) { - return; - } - - eax = 0x00; - hwloc_cpuid(&eax, &ebx, &ecx, &edx); - highest_cpuid = eax; - if (ebx == INTEL_EBX && ecx == INTEL_ECX && edx == INTEL_EDX) - cpuid_type = intel; - if (ebx == AMD_EBX && ecx == AMD_ECX && edx == AMD_EDX) - cpuid_type = amd; - - hwloc_debug("highest cpuid %x, cpuid type %u\n", highest_cpuid, cpuid_type); - if (highest_cpuid < 0x01) { - goto free; - } - - eax = 0x80000000; - hwloc_cpuid(&eax, &ebx, &ecx, &edx); - highest_ext_cpuid = eax; - - hwloc_debug("highest extended cpuid %x\n", highest_ext_cpuid); - - orig_cpuset = hwloc_bitmap_alloc(); - - if (topology->get_thisthread_cpubind && topology->set_thisthread_cpubind) { - if (!topology->get_thisthread_cpubind(topology, orig_cpuset, HWLOC_CPUBIND_STRICT)) { - hwloc_bitmap_t cpuset = hwloc_bitmap_alloc(); - for (i = 0; i < nbprocs; i++) { - hwloc_bitmap_only(cpuset, i); - if (topology->set_thisthread_cpubind(topology, cpuset, HWLOC_CPUBIND_STRICT)) - continue; - look_proc(&infos[i], highest_cpuid, highest_ext_cpuid, cpuid_type); - } - hwloc_bitmap_free(cpuset); - topology->set_thisthread_cpubind(topology, orig_cpuset, 0); - hwloc_bitmap_free(orig_cpuset); - summarize(topology, infos, nbprocs); - goto free; - } - } - if (topology->get_thisproc_cpubind && topology->set_thisproc_cpubind) { - if (!topology->get_thisproc_cpubind(topology, orig_cpuset, HWLOC_CPUBIND_STRICT)) { - hwloc_bitmap_t cpuset = hwloc_bitmap_alloc(); - for (i = 0; i < nbprocs; i++) { - hwloc_bitmap_only(cpuset, i); - if (topology->set_thisproc_cpubind(topology, cpuset, HWLOC_CPUBIND_STRICT)) - continue; - look_proc(&infos[i], highest_cpuid, highest_ext_cpuid, cpuid_type); - } - hwloc_bitmap_free(cpuset); - topology->set_thisproc_cpubind(topology, orig_cpuset, 0); - hwloc_bitmap_free(orig_cpuset); - summarize(topology, infos, nbprocs); - goto free; - } - } -#endif - - hwloc_add_object_info(topology->levels[0][0], "Backend", "x86"); - - free: - if (NULL != infos) { - free(infos); - } -} diff --git a/hwloc-1.2.1/src/topology-xml.c b/hwloc-1.2.1/src/topology-xml.c deleted file mode 100644 index 60b3ea1f..00000000 --- a/hwloc-1.2.1/src/topology-xml.c +++ /dev/null @@ -1,700 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2011 INRIA. All rights reserved. - * Copyright © 2009-2011 Université Bordeaux 1 - * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -#include <private/autogen/config.h> -#include <hwloc.h> -#include <private/private.h> -#include <private/debug.h> - -#ifdef HWLOC_HAVE_XML - -#include <libxml/parser.h> -#include <libxml/tree.h> - -#include <assert.h> -#include <strings.h> - -int -hwloc_backend_xml_init(struct hwloc_topology *topology, const char *xmlpath, const char *xmlbuffer, int buflen) -{ - xmlDoc *doc = NULL; - - assert(topology->backend_type == HWLOC_BACKEND_NONE); - - LIBXML_TEST_VERSION; - - if (xmlpath) - doc = xmlReadFile(xmlpath, NULL, 0); - else if (xmlbuffer) - doc = xmlReadMemory(xmlbuffer, buflen, "", NULL, 0); - if (!doc) - return -1; - - topology->backend_params.xml.doc = doc; - topology->is_thissystem = 0; - topology->backend_type = HWLOC_BACKEND_XML; - return 0; -} - -void -hwloc_backend_xml_exit(struct hwloc_topology *topology) -{ - assert(topology->backend_type == HWLOC_BACKEND_XML); - xmlFreeDoc((xmlDoc*)topology->backend_params.xml.doc); - topology->backend_type = HWLOC_BACKEND_NONE; -} - -/****************************** - ********* XML import ********* - ******************************/ - -static void hwloc__xml_import_node(struct hwloc_topology *topology, struct hwloc_obj *parent, xmlNode *node, int depth); - -static const xmlChar * -hwloc__xml_import_attr_value(xmlAttr *attr) -{ - xmlNode *subnode; - /* use the first valid attribute content */ - for (subnode = attr->children; subnode; subnode = subnode->next) { - if (subnode->type == XML_TEXT_NODE) { - if (subnode->content && subnode->content[0] != '\0' && subnode->content[0] != '\n') - return subnode->content; - } else { - fprintf(stderr, "ignoring unexpected xml attr node type %u\n", subnode->type); - } - } - return NULL; -} - -static void -hwloc__xml_import_object_attr(struct hwloc_topology *topology __hwloc_attribute_unused, struct hwloc_obj *obj, - const xmlChar *_name, const xmlChar *_value) -{ - const char *name = (const char *) _name; - const char *value = (const char *) _value; - - if (!strcmp(name, "type")) { - /* already handled */ - return; - } - - else if (!strcmp(name, "os_level")) - obj->os_level = strtoul(value, NULL, 10); - else if (!strcmp(name, "os_index")) - obj->os_index = strtoul(value, NULL, 10); - else if (!strcmp(name, "cpuset")) { - obj->cpuset = hwloc_bitmap_alloc(); - hwloc_bitmap_sscanf(obj->cpuset, value); - } else if (!strcmp(name, "complete_cpuset")) { - obj->complete_cpuset = hwloc_bitmap_alloc(); - hwloc_bitmap_sscanf(obj->complete_cpuset,value); - } else if (!strcmp(name, "online_cpuset")) { - obj->online_cpuset = hwloc_bitmap_alloc(); - hwloc_bitmap_sscanf(obj->online_cpuset, value); - } else if (!strcmp(name, "allowed_cpuset")) { - obj->allowed_cpuset = hwloc_bitmap_alloc(); - hwloc_bitmap_sscanf(obj->allowed_cpuset, value); - } else if (!strcmp(name, "nodeset")) { - obj->nodeset = hwloc_bitmap_alloc(); - hwloc_bitmap_sscanf(obj->nodeset, value); - } else if (!strcmp(name, "complete_nodeset")) { - obj->complete_nodeset = hwloc_bitmap_alloc(); - hwloc_bitmap_sscanf(obj->complete_nodeset, value); - } else if (!strcmp(name, "allowed_nodeset")) { - obj->allowed_nodeset = hwloc_bitmap_alloc(); - hwloc_bitmap_sscanf(obj->allowed_nodeset, value); - } else if (!strcmp(name, "name")) - obj->name = strdup(value); - - else if (!strcmp(name, "cache_size")) { - unsigned long long lvalue = strtoull(value, NULL, 10); - if (obj->type == HWLOC_OBJ_CACHE) - obj->attr->cache.size = lvalue; - else - fprintf(stderr, "ignoring cache_size attribute for non-cache object type\n"); - } - - else if (!strcmp(name, "cache_linesize")) { - unsigned long lvalue = strtoul(value, NULL, 10); - if (obj->type == HWLOC_OBJ_CACHE) - obj->attr->cache.linesize = lvalue; - else - fprintf(stderr, "ignoring cache_linesize attribute for non-cache object type\n"); - } - - else if (!strcmp(name, "local_memory")) - obj->memory.local_memory = strtoull(value, NULL, 10); - - else if (!strcmp(name, "depth")) { - unsigned long lvalue = strtoul(value, NULL, 10); - switch (obj->type) { - case HWLOC_OBJ_CACHE: - obj->attr->cache.depth = lvalue; - break; - case HWLOC_OBJ_GROUP: - obj->attr->group.depth = lvalue; - break; - default: - fprintf(stderr, "ignoring depth attribute for object type without depth\n"); - break; - } - } - - - - /************************* - * deprecated (from 1.0) - */ - else if (!strcmp(name, "dmi_board_vendor")) { - hwloc_add_object_info(obj, "DMIBoardVendor", strdup(value)); - } - else if (!strcmp(name, "dmi_board_name")) { - hwloc_add_object_info(obj, "DMIBoardName", strdup(value)); - } - - /************************* - * deprecated (from 0.9) - */ - else if (!strcmp(name, "memory_kB")) { - unsigned long long lvalue = strtoull(value, NULL, 10); - switch (obj->type) { - case HWLOC_OBJ_CACHE: - obj->attr->cache.size = lvalue << 10; - break; - case HWLOC_OBJ_NODE: - case HWLOC_OBJ_MACHINE: - case HWLOC_OBJ_SYSTEM: - obj->memory.local_memory = lvalue << 10; - break; - default: - fprintf(stderr, "ignoring memory_kB attribute for object type without memory\n"); - break; - } - } - else if (!strcmp(name, "huge_page_size_kB")) { - unsigned long lvalue = strtoul(value, NULL, 10); - switch (obj->type) { - case HWLOC_OBJ_NODE: - case HWLOC_OBJ_MACHINE: - case HWLOC_OBJ_SYSTEM: - if (!obj->memory.page_types) { - obj->memory.page_types = malloc(sizeof(*obj->memory.page_types)); - obj->memory.page_types_len = 1; - } - obj->memory.page_types[0].size = lvalue << 10; - break; - default: - fprintf(stderr, "ignoring huge_page_size_kB attribute for object type without huge pages\n"); - break; - } - } - else if (!strcmp(name, "huge_page_free")) { - unsigned long lvalue = strtoul(value, NULL, 10); - switch (obj->type) { - case HWLOC_OBJ_NODE: - case HWLOC_OBJ_MACHINE: - case HWLOC_OBJ_SYSTEM: - if (!obj->memory.page_types) { - obj->memory.page_types = malloc(sizeof(*obj->memory.page_types)); - obj->memory.page_types_len = 1; - } - obj->memory.page_types[0].count = lvalue; - break; - default: - fprintf(stderr, "ignoring huge_page_free attribute for object type without huge pages\n"); - break; - } - } - /* - * end of deprecated (from 0.9) - *******************************/ - - - - else - fprintf(stderr, "ignoring unknown object attribute %s\n", name); -} - -static void -hwloc__xml_import_object_node(struct hwloc_topology *topology, struct hwloc_obj *parent, struct hwloc_obj *obj, xmlNode *node, int depth) -{ - xmlAttr *attr = NULL; - - /* first determine the object type */ - for (attr = node->properties; attr; attr = attr->next) { - if (attr->type == XML_ATTRIBUTE_NODE && !strcmp((const char*) attr->name, "type")) { - const xmlChar *value = hwloc__xml_import_attr_value(attr); - if (!value) { - fprintf(stderr, "ignoring xml object without type attr %s\n", (const char*) value); - return; - } - obj->type = hwloc_obj_type_of_string((const char*) value); - if (obj->type == (hwloc_obj_type_t)-1) { - fprintf(stderr, "ignoring unknown object type %s\n", (const char*) value); - return; - } - break; - } else { - fprintf(stderr, "ignoring unexpected xml attr type %u\n", attr->type); - } - } - if (obj->type == HWLOC_OBJ_TYPE_MAX) { - fprintf(stderr, "ignoring object without type\n"); - return; - } - - /* process attributes now that the type is known */ - for (attr = node->properties; attr; attr = attr->next) { - if (attr->type == XML_ATTRIBUTE_NODE) { - const xmlChar *value = hwloc__xml_import_attr_value(attr); - if (value) - hwloc__xml_import_object_attr(topology, obj, attr->name, value); - } else { - fprintf(stderr, "ignoring unexpected xml object attr type %u\n", attr->type); - } - } - - if (depth > 0) { /* root object is already in place */ - /* add object */ - hwloc_insert_object_by_parent(topology, parent, obj); - } - - /* process children */ - if (node->children) - hwloc__xml_import_node(topology, obj, node->children, depth+1); -} - -static void -hwloc__xml_import_pagetype_node(struct hwloc_topology *topology __hwloc_attribute_unused, struct hwloc_obj *obj, xmlNode *node) -{ - uint64_t size = 0, count = 0; - xmlAttr *attr = NULL; - - for (attr = node->properties; attr; attr = attr->next) { - if (attr->type == XML_ATTRIBUTE_NODE) { - const xmlChar *value = hwloc__xml_import_attr_value(attr); - if (value) { - if (!strcmp((char *) attr->name, "size")) - size = strtoul((char *) value, NULL, 10); - else if (!strcmp((char *) attr->name, "count")) - count = strtoul((char *) value, NULL, 10); - else - fprintf(stderr, "ignoring unknown pagetype attribute %s\n", (char *) attr->name); - } - } else { - fprintf(stderr, "ignoring unexpected xml pagetype attr type %u\n", attr->type); - } - } - - if (size) { - int idx = obj->memory.page_types_len; - obj->memory.page_types = realloc(obj->memory.page_types, (idx+1)*sizeof(*obj->memory.page_types)); - obj->memory.page_types_len = idx+1; - obj->memory.page_types[idx].size = size; - obj->memory.page_types[idx].count = count; - } else - fprintf(stderr, "ignoring pagetype attribute without size\n"); -} - -static void -hwloc__xml_import_distances_node(struct hwloc_topology *topology __hwloc_attribute_unused, struct hwloc_obj *obj, xmlNode *node) -{ - unsigned long reldepth = 0, nbobjs = 0; - float latbase = 0; - xmlAttr *attr = NULL; - xmlNode *subnode; - - for (attr = node->properties; attr; attr = attr->next) { - if (attr->type == XML_ATTRIBUTE_NODE) { - const xmlChar *value = hwloc__xml_import_attr_value(attr); - if (value) { - if (!strcmp((char *) attr->name, "nbobjs")) - nbobjs = strtoul((char *) value, NULL, 10); - else if (!strcmp((char *) attr->name, "relative_depth")) - reldepth = strtoul((char *) value, NULL, 10); - else if (!strcmp((char *) attr->name, "latency_base")) - latbase = (float) atof((char *) value); - else - fprintf(stderr, "ignoring unknown distances attribute %s\n", (char *) attr->name); - } else - fprintf(stderr, "ignoring unexpected xml distances attr name `%s' with no value\n", (const char*) attr->name); - } else { - fprintf(stderr, "ignoring unexpected xml distances attr type %u\n", attr->type); - } - } - - if (nbobjs && reldepth && latbase) { - int idx = obj->distances_count; - unsigned nbcells, i; - float *matrix, latmax = 0; - - nbcells = 0; - if (node->children) - for(subnode = node->children; subnode; subnode = subnode->next) - if (subnode->type == XML_ELEMENT_NODE) - nbcells++; - if (nbcells != nbobjs*nbobjs) { - fprintf(stderr, "ignoring distances with %u cells instead of %lu\n", nbcells, nbobjs*nbobjs); - return; - } - - obj->distances = realloc(obj->distances, (idx+1)*sizeof(*obj->distances)); - obj->distances_count = idx+1; - obj->distances[idx] = malloc(sizeof(**obj->distances)); - obj->distances[idx]->relative_depth = reldepth; - obj->distances[idx]->nbobjs = nbobjs; - obj->distances[idx]->latency = matrix = malloc(nbcells*sizeof(float)); - obj->distances[idx]->latency_base = latbase; - - i = 0; - for(subnode = node->children; subnode; subnode = subnode->next) - if (subnode->type == XML_ELEMENT_NODE) { - /* read one cell */ - for (attr = subnode->properties; attr; attr = attr->next) - if (attr->type == XML_ATTRIBUTE_NODE) { - const xmlChar *value = hwloc__xml_import_attr_value(attr); - if (value) { - if (!strcmp((char *) attr->name, "value")) { - float val = (float) atof((char *) value); - matrix[i] = val; - if (val > latmax) - latmax = val; - } else - fprintf(stderr, "ignoring unknown distance attribute %s\n", (char *) attr->name); - } else - fprintf(stderr, "ignoring unexpected xml distance attr name `%s' with no value\n", (const char*) attr->name); - } else { - fprintf(stderr, "ignoring unexpected xml distance attr type %u\n", attr->type); - } - /* next matrix cell */ - i++; - } - - obj->distances[idx]->latency_max = latmax; - } -} - -static void -hwloc__xml_import_info_node(struct hwloc_topology *topology __hwloc_attribute_unused, struct hwloc_obj *obj, xmlNode *node) -{ - char *infoname = NULL; - char *infovalue = NULL; - xmlAttr *attr = NULL; - - for (attr = node->properties; attr; attr = attr->next) { - if (attr->type == XML_ATTRIBUTE_NODE) { - const xmlChar *value = hwloc__xml_import_attr_value(attr); - if (value) { - if (!strcmp((char *) attr->name, "name")) - infoname = (char *) value; - else if (!strcmp((char *) attr->name, "value")) - infovalue = (char *) value; - else - fprintf(stderr, "ignoring unknown info attribute %s\n", (char *) attr->name); - } - } else { - fprintf(stderr, "ignoring unexpected xml info attr type %u\n", attr->type); - } - } - - if (infoname) - /* empty strings are ignored by libxml */ - hwloc_add_object_info(obj, infoname, infovalue ? infovalue : ""); - else - fprintf(stderr, "ignoring info attribute without name\n"); -} - -static void -hwloc__xml_import_node(struct hwloc_topology *topology, struct hwloc_obj *parent, xmlNode *node, int depth) -{ - for (; node; node = node->next) { - if (node->type == XML_ELEMENT_NODE) { - if (!strcmp((const char*) node->name, "object")) { - /* object attributes */ - struct hwloc_obj *obj; - if (depth) - obj = hwloc_alloc_setup_object(HWLOC_OBJ_TYPE_MAX, -1); - else - obj = topology->levels[0][0]; - hwloc__xml_import_object_node(topology, parent, obj, node, depth); - - } else if (!strcmp((const char*) node->name, "page_type")) { - hwloc__xml_import_pagetype_node(topology, parent, node); - - } else if (!strcmp((const char*) node->name, "info")) { - hwloc__xml_import_info_node(topology, parent, node); - - } else if (!strcmp((const char*) node->name, "distances")) { - hwloc__xml_import_distances_node(topology, parent, node); - - } else { - /* unknown class */ - fprintf(stderr, "ignoring unexpected node class `%s'\n", (const char*) node->name); - continue; - } - - } else if (node->type == XML_TEXT_NODE) { - if (node->content && node->content[0] != '\0' && node->content[0] != '\n') - fprintf(stderr, "ignoring object text content %s\n", (const char*) node->content); - } else { - fprintf(stderr, "ignoring unexpected xml node type %u\n", node->type); - } - } -} - -static void -hwloc__xml_import_topology_node(struct hwloc_topology *topology, xmlNode *node) -{ - xmlAttr *attr = NULL; - - if (strcmp((const char *) node->name, "topology") && strcmp((const char *) node->name, "root")) { - /* root node should be in "topology" class (or "root" if importing from < 1.0) */ - fprintf(stderr, "ignoring object of class `%s' not at the top the xml hierarchy\n", (const char *) node->name); - return; - } - - /* process attributes */ - for (attr = node->properties; attr; attr = attr->next) { - if (attr->type == XML_ATTRIBUTE_NODE) { - const xmlChar *value = hwloc__xml_import_attr_value(attr); - if (value) { - fprintf(stderr, "ignoring unknown root attribute %s\n", (char *) attr->name); - } - } else { - fprintf(stderr, "ignoring unexpected xml root attr type %u\n", attr->type); - } - } - - /* process children */ - if (node->children) - hwloc__xml_import_node(topology, NULL, node->children, 0); -} - -void -hwloc_look_xml(struct hwloc_topology *topology) -{ - xmlNode* root_node; - xmlDtd *dtd; - - topology->support.discovery->pu = 1; - - dtd = xmlGetIntSubset((xmlDoc*) topology->backend_params.xml.doc); - if (!dtd) - fprintf(stderr, "Loading XML topology without DTD\n"); - else if (strcmp((char *) dtd->SystemID, "hwloc.dtd")) - fprintf(stderr, "Loading XML topology with wrong DTD SystemID (%s instead of %s)\n", - (char *) dtd->SystemID, "hwloc.dtd"); - - root_node = xmlDocGetRootElement((xmlDoc*) topology->backend_params.xml.doc); - - hwloc__xml_import_topology_node(topology, root_node); - if (root_node->next) - fprintf(stderr, "ignoring non-first root nodes\n"); - - /* keep the "Backend" information intact */ - /* we could add "BackendSource=XML" to notify that XML was used between the actual backend and here */ -} - -static void -hwloc_xml__check_distances(struct hwloc_topology *topology, hwloc_obj_t obj) -{ - hwloc_obj_t child; - unsigned i=0; - while (i<obj->distances_count) { - unsigned depth = obj->depth + obj->distances[i]->relative_depth; - unsigned nbobjs = hwloc_get_nbobjs_inside_cpuset_by_depth(topology, obj->cpuset, depth); - if (nbobjs != obj->distances[i]->nbobjs) { - fprintf(stderr, "ignoring invalid distance matrix with %u objs instead of %u\n", - obj->distances[i]->nbobjs, nbobjs); - hwloc_free_logical_distances(obj->distances[i]); - memmove(&obj->distances[i], &obj->distances[i+1], (obj->distances_count-i-1)*sizeof(*obj->distances)); - obj->distances_count--; - } else - i++; - } - - child = obj->first_child; - while (child != NULL) { - hwloc_xml__check_distances(topology, child); - child = child->next_sibling; - } -} - -void -hwloc_xml_check_distances(struct hwloc_topology *topology) -{ - /* now that the topology tree has been properly setup, - * check that our distance matrice sizes make sense */ - hwloc_xml__check_distances(topology, topology->levels[0][0]); -} - -/****************************** - ********* XML export ********* - ******************************/ - -static void -hwloc__xml_export_object (hwloc_topology_t topology, hwloc_obj_t obj, xmlNodePtr root_node) -{ - xmlNodePtr node = NULL, ptnode = NULL, dnode = NULL, dcnode = NULL; - char *cpuset = NULL; - char tmp[255]; - unsigned i; - - /* xmlNewChild() creates a new node, which is "attached" as child node - * of root_node node. */ - node = xmlNewChild(root_node, NULL, BAD_CAST "object", NULL); - xmlNewProp(node, BAD_CAST "type", BAD_CAST hwloc_obj_type_string(obj->type)); - sprintf(tmp, "%d", obj->os_level); - xmlNewProp(node, BAD_CAST "os_level", BAD_CAST tmp); - if (obj->os_index != (unsigned) -1) { - sprintf(tmp, "%u", obj->os_index); - xmlNewProp(node, BAD_CAST "os_index", BAD_CAST tmp); - } - if (obj->cpuset) { - hwloc_bitmap_asprintf(&cpuset, obj->cpuset); - xmlNewProp(node, BAD_CAST "cpuset", BAD_CAST cpuset); - free(cpuset); - } - if (obj->complete_cpuset) { - hwloc_bitmap_asprintf(&cpuset, obj->complete_cpuset); - xmlNewProp(node, BAD_CAST "complete_cpuset", BAD_CAST cpuset); - free(cpuset); - } - if (obj->online_cpuset) { - hwloc_bitmap_asprintf(&cpuset, obj->online_cpuset); - xmlNewProp(node, BAD_CAST "online_cpuset", BAD_CAST cpuset); - free(cpuset); - } - if (obj->allowed_cpuset) { - hwloc_bitmap_asprintf(&cpuset, obj->allowed_cpuset); - xmlNewProp(node, BAD_CAST "allowed_cpuset", BAD_CAST cpuset); - free(cpuset); - } - if (obj->nodeset && !hwloc_bitmap_isfull(obj->nodeset)) { - hwloc_bitmap_asprintf(&cpuset, obj->nodeset); - xmlNewProp(node, BAD_CAST "nodeset", BAD_CAST cpuset); - free(cpuset); - } - if (obj->complete_nodeset && !hwloc_bitmap_isfull(obj->complete_nodeset)) { - hwloc_bitmap_asprintf(&cpuset, obj->complete_nodeset); - xmlNewProp(node, BAD_CAST "complete_nodeset", BAD_CAST cpuset); - free(cpuset); - } - if (obj->allowed_nodeset && !hwloc_bitmap_isfull(obj->allowed_nodeset)) { - hwloc_bitmap_asprintf(&cpuset, obj->allowed_nodeset); - xmlNewProp(node, BAD_CAST "allowed_nodeset", BAD_CAST cpuset); - free(cpuset); - } - - if (obj->name) - xmlNewProp(node, BAD_CAST "name", BAD_CAST obj->name); - - switch (obj->type) { - case HWLOC_OBJ_CACHE: - sprintf(tmp, "%llu", (unsigned long long) obj->attr->cache.size); - xmlNewProp(node, BAD_CAST "cache_size", BAD_CAST tmp); - sprintf(tmp, "%u", obj->attr->cache.depth); - xmlNewProp(node, BAD_CAST "depth", BAD_CAST tmp); - sprintf(tmp, "%u", (unsigned) obj->attr->cache.linesize); - xmlNewProp(node, BAD_CAST "cache_linesize", BAD_CAST tmp); - break; - case HWLOC_OBJ_GROUP: - sprintf(tmp, "%u", obj->attr->group.depth); - xmlNewProp(node, BAD_CAST "depth", BAD_CAST tmp); - break; - default: - break; - } - - if (obj->memory.local_memory) { - sprintf(tmp, "%llu", (unsigned long long) obj->memory.local_memory); - xmlNewProp(node, BAD_CAST "local_memory", BAD_CAST tmp); - } - for(i=0; i<obj->memory.page_types_len; i++) { - ptnode = xmlNewChild(node, NULL, BAD_CAST "page_type", NULL); - sprintf(tmp, "%llu", (unsigned long long) obj->memory.page_types[i].size); - xmlNewProp(ptnode, BAD_CAST "size", BAD_CAST tmp); - sprintf(tmp, "%llu", (unsigned long long) obj->memory.page_types[i].count); - xmlNewProp(ptnode, BAD_CAST "count", BAD_CAST tmp); - } - - for(i=0; i<obj->infos_count; i++) { - ptnode = xmlNewChild(node, NULL, BAD_CAST "info", NULL); - xmlNewProp(ptnode, BAD_CAST "name", BAD_CAST obj->infos[i].name); - xmlNewProp(ptnode, BAD_CAST "value", BAD_CAST obj->infos[i].value); - } - - for(i=0; i<obj->distances_count; i++) { - unsigned nbobjs = obj->distances[i]->nbobjs; - unsigned j; - dnode = xmlNewChild(node, NULL, BAD_CAST "distances", NULL); - sprintf(tmp, "%u", nbobjs); - xmlNewProp(dnode, BAD_CAST "nbobjs", BAD_CAST tmp); - sprintf(tmp, "%u", obj->distances[i]->relative_depth); - xmlNewProp(dnode, BAD_CAST "relative_depth", BAD_CAST tmp); - sprintf(tmp, "%f", obj->distances[i]->latency_base); - xmlNewProp(dnode, BAD_CAST "latency_base", BAD_CAST tmp); - for(j=0; j<nbobjs*nbobjs; j++) { - dcnode = xmlNewChild(dnode, NULL, BAD_CAST "latency", NULL); - sprintf(tmp, "%f", obj->distances[i]->latency[j]); - xmlNewProp(dcnode, BAD_CAST "value", BAD_CAST tmp); - } - } - - if (obj->arity) { - unsigned x; - for (x=0; x<obj->arity; x++) - hwloc__xml_export_object (topology, obj->children[x], node); - } -} - -static void -hwloc__xml_export_topology_info (hwloc_topology_t topology __hwloc_attribute_unused, xmlNodePtr root_node __hwloc_attribute_unused) -{ -} - -static xmlDocPtr -hwloc__topology_prepare_export(hwloc_topology_t topology) -{ - xmlDocPtr doc = NULL; /* document pointer */ - xmlNodePtr root_node = NULL; /* root pointer */ - xmlDtdPtr dtd = NULL; /* DTD pointer */ - - LIBXML_TEST_VERSION; - - /* Creates a new document, a node and set it as a root node. */ - doc = xmlNewDoc(BAD_CAST "1.0"); - root_node = xmlNewNode(NULL, BAD_CAST "topology"); - xmlDocSetRootElement(doc, root_node); - - /* Creates a DTD declaration. Isn't mandatory. */ - dtd = xmlCreateIntSubset(doc, BAD_CAST "topology", NULL, BAD_CAST "hwloc.dtd"); - - hwloc__xml_export_object (topology, hwloc_get_root_obj(topology), root_node); - - hwloc__xml_export_topology_info (topology, root_node); - - return doc; -} - -void hwloc_topology_export_xml(hwloc_topology_t topology, const char *filename) -{ - xmlDocPtr doc = hwloc__topology_prepare_export(topology); - xmlSaveFormatFileEnc(filename, doc, "UTF-8", 1); - xmlFreeDoc(doc); -} - -void hwloc_topology_export_xmlbuffer(hwloc_topology_t topology, char **xmlbuffer, int *buflen) -{ - xmlDocPtr doc = hwloc__topology_prepare_export(topology); - xmlDocDumpFormatMemoryEnc(doc, (xmlChar **)xmlbuffer, buflen, "UTF-8", 1); - xmlFreeDoc(doc); -} - - -#endif /* HWLOC_HAVE_XML */ diff --git a/hwloc-1.2.1/src/topology.c b/hwloc-1.2.1/src/topology.c deleted file mode 100644 index 9c5ecd2e..00000000 --- a/hwloc-1.2.1/src/topology.c +++ /dev/null @@ -1,2468 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2011 INRIA. All rights reserved. - * Copyright © 2009-2010 Université Bordeaux 1 - * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -#include <private/autogen/config.h> - -#define _ATFILE_SOURCE -#include <assert.h> -#include <sys/types.h> -#include <dirent.h> -#include <unistd.h> -#include <string.h> -#include <errno.h> -#include <stdio.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <limits.h> -#include <float.h> - -#include <hwloc.h> -#include <private/private.h> -#include <private/debug.h> - -#ifdef HAVE_MACH_MACH_INIT_H -#include <mach/mach_init.h> -#endif -#ifdef HAVE_MACH_MACH_HOST_H -#include <mach/mach_host.h> -#endif - -#ifdef HAVE_SYS_PARAM_H -#include <sys/param.h> -#endif - -#ifdef HAVE_SYS_SYSCTL_H -#include <sys/sysctl.h> -#endif - -#ifdef HWLOC_WIN_SYS -#include <windows.h> -#endif - -unsigned hwloc_get_api_version(void) -{ - return HWLOC_API_VERSION; -} - -void hwloc_report_os_error(const char *msg, int line) -{ - static int reported = 0; - - if (!reported) { - fprintf(stderr, "****************************************************************************\n"); - fprintf(stderr, "* Hwloc has encountered what looks like an error from the operating system.\n"); - fprintf(stderr, "*\n"); - fprintf(stderr, "* %s\n", msg); - fprintf(stderr, "* Error occurred in topology.c line %d\n", line); - fprintf(stderr, "*\n"); - fprintf(stderr, "* Please report this error message to the hwloc user's mailing list,\n"); - fprintf(stderr, "* along with the output from the hwloc-gather-topology.sh script.\n"); - fprintf(stderr, "****************************************************************************\n"); - reported = 1; - } -} - -static void -hwloc_topology_clear (struct hwloc_topology *topology); - -#if defined(HAVE_SYSCTLBYNAME) -int hwloc_get_sysctlbyname(const char *name, int64_t *ret) -{ - union { - int32_t i32; - int64_t i64; - } n; - size_t size = sizeof(n); - if (sysctlbyname(name, &n, &size, NULL, 0)) - return -1; - switch (size) { - case sizeof(n.i32): - *ret = n.i32; - break; - case sizeof(n.i64): - *ret = n.i64; - break; - default: - return -1; - } - return 0; -} -#endif - -#if defined(HAVE_SYSCTL) -int hwloc_get_sysctl(int name[], unsigned namelen, int *ret) -{ - int n; - size_t size = sizeof(n); - if (sysctl(name, namelen, &n, &size, NULL, 0)) - return -1; - if (size != sizeof(n)) - return -1; - *ret = n; - return 0; -} -#endif - -/* Return the OS-provided number of processors. Unlike other methods such as - reading sysfs on Linux, this method is not virtualizable; thus it's only - used as a fall-back method, allowing `hwloc_set_fsroot ()' to - have the desired effect. */ -unsigned -hwloc_fallback_nbprocessors(struct hwloc_topology *topology) { - int n; -#if HAVE_DECL__SC_NPROCESSORS_ONLN - n = sysconf(_SC_NPROCESSORS_ONLN); -#elif HAVE_DECL__SC_NPROC_ONLN - n = sysconf(_SC_NPROC_ONLN); -#elif HAVE_DECL__SC_NPROCESSORS_CONF - n = sysconf(_SC_NPROCESSORS_CONF); -#elif HAVE_DECL__SC_NPROC_CONF - n = sysconf(_SC_NPROC_CONF); -#elif defined(HAVE_HOST_INFO) && HAVE_HOST_INFO - struct host_basic_info info; - mach_msg_type_number_t count = HOST_BASIC_INFO_COUNT; - host_info(mach_host_self(), HOST_BASIC_INFO, (integer_t*) &info, &count); - n = info.avail_cpus; -#elif defined(HAVE_SYSCTLBYNAME) - int64_t n; - if (hwloc_get_sysctlbyname("hw.ncpu", &n)) - n = -1; -#elif defined(HAVE_SYSCTL) && HAVE_DECL_CTL_HW && HAVE_DECL_HW_NCPU - static int name[2] = {CTL_HW, HW_NPCU}; - if (hwloc_get_sysctl(name, sizeof(name)/sizeof(*name)), &n) - n = -1; -#elif defined(HWLOC_WIN_SYS) - SYSTEM_INFO sysinfo; - GetSystemInfo(&sysinfo); - n = sysinfo.dwNumberOfProcessors; -#else -#ifdef __GNUC__ -#warning No known way to discover number of available processors on this system -#warning hwloc_fallback_nbprocessors will default to 1 -#endif - n = -1; -#endif - if (n >= 1) - topology->support.discovery->pu = 1; - else - n = 1; - return n; -} - -/* - * Use the given number of processors and the optional online cpuset if given - * to set a PU level. - */ -void -hwloc_setup_pu_level(struct hwloc_topology *topology, - unsigned nb_pus) -{ - struct hwloc_obj *obj; - unsigned oscpu,cpu; - - hwloc_debug("%s", "\n\n * CPU cpusets *\n\n"); - for (cpu=0,oscpu=0; cpu<nb_pus; oscpu++) - { - obj = hwloc_alloc_setup_object(HWLOC_OBJ_PU, oscpu); - obj->cpuset = hwloc_bitmap_alloc(); - hwloc_bitmap_only(obj->cpuset, oscpu); - - hwloc_debug_2args_bitmap("cpu %u (os %u) has cpuset %s\n", - cpu, oscpu, obj->cpuset); - hwloc_insert_object_by_cpuset(topology, obj); - - cpu++; - } -} - -static void -print_object(struct hwloc_topology *topology, int indent __hwloc_attribute_unused, hwloc_obj_t obj) -{ - char line[256], *cpuset = NULL; - hwloc_debug("%*s", 2*indent, ""); - hwloc_obj_snprintf(line, sizeof(line), topology, obj, "#", 1); - hwloc_debug("%s", line); - if (obj->cpuset) { - hwloc_bitmap_asprintf(&cpuset, obj->cpuset); - hwloc_debug(" cpuset %s", cpuset); - free(cpuset); - } - if (obj->complete_cpuset) { - hwloc_bitmap_asprintf(&cpuset, obj->complete_cpuset); - hwloc_debug(" complete %s", cpuset); - free(cpuset); - } - if (obj->online_cpuset) { - hwloc_bitmap_asprintf(&cpuset, obj->online_cpuset); - hwloc_debug(" online %s", cpuset); - free(cpuset); - } - if (obj->allowed_cpuset) { - hwloc_bitmap_asprintf(&cpuset, obj->allowed_cpuset); - hwloc_debug(" allowed %s", cpuset); - free(cpuset); - } - if (obj->nodeset) { - hwloc_bitmap_asprintf(&cpuset, obj->nodeset); - hwloc_debug(" nodeset %s", cpuset); - free(cpuset); - } - if (obj->complete_nodeset) { - hwloc_bitmap_asprintf(&cpuset, obj->complete_nodeset); - hwloc_debug(" completeN %s", cpuset); - free(cpuset); - } - if (obj->allowed_nodeset) { - hwloc_bitmap_asprintf(&cpuset, obj->allowed_nodeset); - hwloc_debug(" allowedN %s", cpuset); - free(cpuset); - } - if (obj->arity) - hwloc_debug(" arity %u", obj->arity); - hwloc_debug("%s", "\n"); -} - -/* Just for debugging. */ -static void -print_objects(struct hwloc_topology *topology __hwloc_attribute_unused, int indent __hwloc_attribute_unused, hwloc_obj_t obj __hwloc_attribute_unused) -{ -#ifdef HWLOC_DEBUG - print_object(topology, indent, obj); - for (obj = obj->first_child; obj; obj = obj->next_sibling) - print_objects(topology, indent + 1, obj); -#endif -} - -void -hwloc_add_object_info(hwloc_obj_t obj, const char *name, const char *value) -{ -#define OBJECT_INFO_ALLOC 8 - /* nothing allocated initially, (re-)allocate by multiple of 8 */ - unsigned alloccount = (obj->infos_count + 1 + (OBJECT_INFO_ALLOC-1)) & ~(OBJECT_INFO_ALLOC-1); - if (obj->infos_count != alloccount) - obj->infos = realloc(obj->infos, alloccount*sizeof(*obj->infos)); - obj->infos[obj->infos_count].name = strdup(name); - obj->infos[obj->infos_count].value = strdup(value); - obj->infos_count++; -} - -static void -hwloc_clear_object_distances(hwloc_obj_t obj) -{ - unsigned i; - for (i=0; i<obj->distances_count; i++) - hwloc_free_logical_distances(obj->distances[i]); - free(obj->distances); - obj->distances = NULL; - obj->distances_count = 0; -} - -/* Free an object and all its content. */ -void -hwloc_free_unlinked_object(hwloc_obj_t obj) -{ - unsigned i; - switch (obj->type) { - default: - break; - } - for(i=0; i<obj->infos_count; i++) { - free(obj->infos[i].name); - free(obj->infos[i].value); - } - free(obj->infos); - hwloc_clear_object_distances(obj); - free(obj->memory.page_types); - free(obj->attr); - free(obj->children); - free(obj->name); - hwloc_bitmap_free(obj->cpuset); - hwloc_bitmap_free(obj->complete_cpuset); - hwloc_bitmap_free(obj->online_cpuset); - hwloc_bitmap_free(obj->allowed_cpuset); - hwloc_bitmap_free(obj->nodeset); - hwloc_bitmap_free(obj->complete_nodeset); - hwloc_bitmap_free(obj->allowed_nodeset); - free(obj); -} - -/* - * How to compare objects based on types. - * - * Note that HIGHER/LOWER is only a (consistent) heuristic, used to sort - * objects with same cpuset consistently. - * Only EQUAL / not EQUAL can be relied upon. - */ - -enum hwloc_type_cmp_e { - HWLOC_TYPE_HIGHER, - HWLOC_TYPE_DEEPER, - HWLOC_TYPE_EQUAL -}; - -/* WARNING: The indexes of this array MUST match the ordering that of - the obj_order_type[] array, below. Specifically, the values must - be laid out such that: - - obj_order_type[obj_type_order[N]] = N - - for all HWLOC_OBJ_* values of N. Put differently: - - obj_type_order[A] = B - - where the A values are in order of the hwloc_obj_type_t enum, and - the B values are the corresponding indexes of obj_order_type. - - We can't use C99 syntax to initialize this in a little safer manner - -- bummer. :-( - - ************************************************************* - *** DO NOT CHANGE THE ORDERING OF THIS ARRAY WITHOUT TRIPLE - *** CHECKING ITS CORRECTNESS! - ************************************************************* - */ -static unsigned obj_type_order[] = { - /* first entry is HWLOC_OBJ_SYSTEM */ 0, - /* next entry is HWLOC_OBJ_MACHINE */ 1, - /* next entry is HWLOC_OBJ_NODE */ 3, - /* next entry is HWLOC_OBJ_SOCKET */ 4, - /* next entry is HWLOC_OBJ_CACHE */ 5, - /* next entry is HWLOC_OBJ_CORE */ 6, - /* next entry is HWLOC_OBJ_PU */ 7, - /* next entry is HWLOC_OBJ_GROUP */ 2, - /* next entry is HWLOC_OBJ_MISC */ 8, -}; - -static const hwloc_obj_type_t obj_order_type[] = { - HWLOC_OBJ_SYSTEM, - HWLOC_OBJ_MACHINE, - HWLOC_OBJ_GROUP, - HWLOC_OBJ_NODE, - HWLOC_OBJ_SOCKET, - HWLOC_OBJ_CACHE, - HWLOC_OBJ_CORE, - HWLOC_OBJ_PU, - HWLOC_OBJ_MISC, -}; - -static unsigned __hwloc_attribute_const -hwloc_get_type_order(hwloc_obj_type_t type) -{ - return obj_type_order[type]; -} - -#if !defined(NDEBUG) -static hwloc_obj_type_t hwloc_get_order_type(int order) -{ - return obj_order_type[order]; -} -#endif - -int hwloc_compare_types (hwloc_obj_type_t type1, hwloc_obj_type_t type2) -{ - unsigned order1 = hwloc_get_type_order(type1); - unsigned order2 = hwloc_get_type_order(type2); - return order1 - order2; -} - -static enum hwloc_type_cmp_e -hwloc_type_cmp(hwloc_obj_t obj1, hwloc_obj_t obj2) -{ - if (hwloc_compare_types(obj1->type, obj2->type) > 0) - return HWLOC_TYPE_DEEPER; - if (hwloc_compare_types(obj1->type, obj2->type) < 0) - return HWLOC_TYPE_HIGHER; - - /* Caches have the same types but can have different depths. */ - if (obj1->type == HWLOC_OBJ_CACHE) { - if (obj1->attr->cache.depth < obj2->attr->cache.depth) - return HWLOC_TYPE_DEEPER; - else if (obj1->attr->cache.depth > obj2->attr->cache.depth) - return HWLOC_TYPE_HIGHER; - } - - /* Group objects have the same types but can have different depths. */ - if (obj1->type == HWLOC_OBJ_GROUP) { - if (obj1->attr->group.depth < obj2->attr->group.depth) - return HWLOC_TYPE_DEEPER; - else if (obj1->attr->group.depth > obj2->attr->group.depth) - return HWLOC_TYPE_HIGHER; - } - - return HWLOC_TYPE_EQUAL; -} - -/* - * How to compare objects based on cpusets. - */ - -enum hwloc_obj_cmp_e { - HWLOC_OBJ_EQUAL, /**< \brief Equal */ - HWLOC_OBJ_INCLUDED, /**< \brief Strictly included into */ - HWLOC_OBJ_CONTAINS, /**< \brief Strictly contains */ - HWLOC_OBJ_INTERSECTS, /**< \brief Intersects, but no inclusion! */ - HWLOC_OBJ_DIFFERENT /**< \brief No intersection */ -}; - -static int -hwloc_obj_cmp(hwloc_obj_t obj1, hwloc_obj_t obj2) -{ - if (!obj1->cpuset || hwloc_bitmap_iszero(obj1->cpuset) - || !obj2->cpuset || hwloc_bitmap_iszero(obj2->cpuset)) - return HWLOC_OBJ_DIFFERENT; - - if (hwloc_bitmap_isequal(obj1->cpuset, obj2->cpuset)) { - - /* Same cpuset, subsort by type to have a consistent ordering. */ - - switch (hwloc_type_cmp(obj1, obj2)) { - case HWLOC_TYPE_DEEPER: - return HWLOC_OBJ_INCLUDED; - case HWLOC_TYPE_HIGHER: - return HWLOC_OBJ_CONTAINS; - - case HWLOC_TYPE_EQUAL: - if (obj1->type == HWLOC_OBJ_MISC) { - /* Misc objects may vary by name */ - int res = strcmp(obj1->name, obj2->name); - if (res < 0) - return HWLOC_OBJ_INCLUDED; - if (res > 0) - return HWLOC_OBJ_CONTAINS; - if (res == 0) - return HWLOC_OBJ_EQUAL; - } - - /* Same level cpuset and type! Let's hope it's coherent. */ - return HWLOC_OBJ_EQUAL; - } - - /* For dumb compilers */ - abort(); - - } else { - - /* Different cpusets, sort by inclusion. */ - - if (hwloc_bitmap_isincluded(obj1->cpuset, obj2->cpuset)) - return HWLOC_OBJ_INCLUDED; - - if (hwloc_bitmap_isincluded(obj2->cpuset, obj1->cpuset)) - return HWLOC_OBJ_CONTAINS; - - if (hwloc_bitmap_intersects(obj1->cpuset, obj2->cpuset)) - return HWLOC_OBJ_INTERSECTS; - - return HWLOC_OBJ_DIFFERENT; - } -} - -/* - * How to insert objects into the topology. - * - * Note: during detection, only the first_child and next_sibling pointers are - * kept up to date. Others are computed only once topology detection is - * complete. - */ - -#define merge_index(new, old, field, type) \ - if ((old)->field == (type) -1) \ - (old)->field = (new)->field; -#define merge_sizes(new, old, field) \ - if (!(old)->field) \ - (old)->field = (new)->field; -#ifdef HWLOC_DEBUG -#define check_sizes(new, old, field) \ - if ((new)->field) \ - assert((old)->field == (new)->field) -#else -#define check_sizes(new, old, field) -#endif - -/* Try to insert OBJ in CUR, recurse if needed */ -static int -hwloc___insert_object_by_cpuset(struct hwloc_topology *topology, hwloc_obj_t cur, hwloc_obj_t obj, - hwloc_report_error_t report_error) -{ - hwloc_obj_t child, container, *cur_children, *obj_children, next_child = NULL; - int put; - - /* Make sure we haven't gone too deep. */ - if (!hwloc_bitmap_isincluded(obj->cpuset, cur->cpuset)) { - fprintf(stderr,"recursion has gone too deep?!\n"); - return -1; - } - - /* Check whether OBJ is included in some child. */ - container = NULL; - for (child = cur->first_child; child; child = child->next_sibling) { - switch (hwloc_obj_cmp(obj, child)) { - case HWLOC_OBJ_EQUAL: - merge_index(obj, child, os_level, signed); - if (obj->os_level != child->os_level) { - fprintf(stderr, "Different OS level\n"); - return -1; - } - merge_index(obj, child, os_index, unsigned); - if (obj->os_index != child->os_index) { - fprintf(stderr, "Different OS indexes\n"); - return -1; - } - switch(obj->type) { - case HWLOC_OBJ_NODE: - /* Do not check these, it may change between calls */ - merge_sizes(obj, child, memory.local_memory); - merge_sizes(obj, child, memory.total_memory); - /* if both objects have a page_types array, just keep the biggest one for now */ - if (obj->memory.page_types_len && child->memory.page_types_len) - hwloc_debug("%s", "merging page_types by keeping the biggest one only\n"); - if (obj->memory.page_types_len < child->memory.page_types_len) { - free(obj->memory.page_types); - } else { - free(child->memory.page_types); - child->memory.page_types_len = obj->memory.page_types_len; - child->memory.page_types = obj->memory.page_types; - obj->memory.page_types = NULL; - obj->memory.page_types_len = 0; - } - break; - case HWLOC_OBJ_CACHE: - merge_sizes(obj, child, attr->cache.size); - check_sizes(obj, child, attr->cache.size); - merge_sizes(obj, child, attr->cache.linesize); - check_sizes(obj, child, attr->cache.linesize); - break; - default: - break; - } - /* Already present, no need to insert. */ - return -1; - case HWLOC_OBJ_INCLUDED: - if (container) { - if (report_error) - report_error("object included in several different objects!", __LINE__); - /* We can't handle that. */ - return -1; - } - /* This child contains OBJ. */ - container = child; - break; - case HWLOC_OBJ_INTERSECTS: - if (report_error) - report_error("object intersection without inclusion!", __LINE__); - /* We can't handle that. */ - return -1; - case HWLOC_OBJ_CONTAINS: - /* OBJ will be above CHILD. */ - break; - case HWLOC_OBJ_DIFFERENT: - /* OBJ will be alongside CHILD. */ - break; - } - } - - if (container) { - /* OBJ is strictly contained is some child of CUR, go deeper. */ - return hwloc___insert_object_by_cpuset(topology, container, obj, report_error); - } - - /* - * Children of CUR are either completely different from or contained into - * OBJ. Take those that are contained (keeping sorting order), and sort OBJ - * along those that are different. - */ - - /* OBJ is not put yet. */ - put = 0; - - /* These will always point to the pointer to their next last child. */ - cur_children = &cur->first_child; - obj_children = &obj->first_child; - - /* Construct CUR's and OBJ's children list. */ - - /* Iteration with prefetching to be completely safe against CHILD removal. */ - for (child = cur->first_child, child ? next_child = child->next_sibling : NULL; - child; - child = next_child, child ? next_child = child->next_sibling : NULL) { - - switch (hwloc_obj_cmp(obj, child)) { - - case HWLOC_OBJ_DIFFERENT: - /* Leave CHILD in CUR. */ - if (!put && hwloc_bitmap_compare_first(obj->cpuset, child->cpuset) < 0) { - /* Sort children by cpuset: put OBJ before CHILD in CUR's children. */ - *cur_children = obj; - cur_children = &obj->next_sibling; - put = 1; - } - /* Now put CHILD in CUR's children. */ - *cur_children = child; - cur_children = &child->next_sibling; - break; - - case HWLOC_OBJ_CONTAINS: - /* OBJ contains CHILD, put the latter in the former. */ - *obj_children = child; - obj_children = &child->next_sibling; - break; - - case HWLOC_OBJ_EQUAL: - case HWLOC_OBJ_INCLUDED: - case HWLOC_OBJ_INTERSECTS: - /* Shouldn't ever happen as we have handled them above. */ - abort(); - } - } - - /* Put OBJ last in CUR's children if not already done so. */ - if (!put) { - *cur_children = obj; - cur_children = &obj->next_sibling; - } - - /* Close children lists. */ - *obj_children = NULL; - *cur_children = NULL; - - return 0; -} - -/* insertion routine that lets you change the error reporting callback */ -int -hwloc__insert_object_by_cpuset(struct hwloc_topology *topology, hwloc_obj_t obj, - hwloc_report_error_t report_error) -{ - int ret; - /* Start at the top. */ - /* Add the cpuset to the top */ - hwloc_bitmap_or(topology->levels[0][0]->complete_cpuset, topology->levels[0][0]->complete_cpuset, obj->cpuset); - if (obj->nodeset) - hwloc_bitmap_or(topology->levels[0][0]->complete_nodeset, topology->levels[0][0]->complete_nodeset, obj->nodeset); - ret = hwloc___insert_object_by_cpuset(topology, topology->levels[0][0], obj, report_error); - if (ret < 0) - hwloc_free_unlinked_object(obj); - return ret; -} - -/* the default insertion routine warns in case of error. - * it's used by most backends */ -void -hwloc_insert_object_by_cpuset(struct hwloc_topology *topology, hwloc_obj_t obj) -{ - hwloc__insert_object_by_cpuset(topology, obj, hwloc_report_os_error); -} - -void -hwloc_insert_object_by_parent(struct hwloc_topology *topology, hwloc_obj_t parent, hwloc_obj_t obj) -{ - hwloc_obj_t child, next_child = obj->first_child; - hwloc_obj_t *current; - - /* Append to the end of the list */ - for (current = &parent->first_child; *current; current = &(*current)->next_sibling) - ; - *current = obj; - obj->next_sibling = NULL; - obj->first_child = NULL; - - /* Use the new object to insert children */ - parent = obj; - - /* Recursively insert children below */ - while (next_child) { - child = next_child; - next_child = child->next_sibling; - hwloc_insert_object_by_parent(topology, parent, child); - } -} - -static void -hwloc_connect_children(hwloc_obj_t parent); -/* Adds a misc object _after_ detection, and thus has to reconnect all the pointers */ -hwloc_obj_t -hwloc_topology_insert_misc_object_by_cpuset(struct hwloc_topology *topology, hwloc_const_bitmap_t cpuset, const char *name) -{ - hwloc_obj_t obj, child; - int err; - - if (hwloc_bitmap_iszero(cpuset)) - return NULL; - if (!hwloc_bitmap_isincluded(cpuset, hwloc_topology_get_complete_cpuset(topology))) - return NULL; - - obj = hwloc_alloc_setup_object(HWLOC_OBJ_MISC, -1); - if (name) - obj->name = strdup(name); - - obj->cpuset = hwloc_bitmap_dup(cpuset); - /* initialize default cpusets, we'll adjust them later */ - obj->complete_cpuset = hwloc_bitmap_dup(cpuset); - obj->allowed_cpuset = hwloc_bitmap_dup(cpuset); - obj->online_cpuset = hwloc_bitmap_dup(cpuset); - - err = hwloc__insert_object_by_cpuset(topology, obj, NULL /* do not show errors on stdout */); - if (err < 0) - return NULL; - - hwloc_connect_children(topology->levels[0][0]); - - if ((child = obj->first_child) != NULL && child->cpuset) { - /* keep the main cpuset untouched, but update other cpusets and nodesets from children */ - obj->nodeset = hwloc_bitmap_alloc(); - obj->complete_nodeset = hwloc_bitmap_alloc(); - obj->allowed_nodeset = hwloc_bitmap_alloc(); - while (child) { - if (child->complete_cpuset) - hwloc_bitmap_or(obj->complete_cpuset, obj->complete_cpuset, child->complete_cpuset); - if (child->allowed_cpuset) - hwloc_bitmap_or(obj->allowed_cpuset, obj->allowed_cpuset, child->allowed_cpuset); - if (child->online_cpuset) - hwloc_bitmap_or(obj->online_cpuset, obj->online_cpuset, child->online_cpuset); - if (child->nodeset) - hwloc_bitmap_or(obj->nodeset, obj->nodeset, child->nodeset); - if (child->complete_nodeset) - hwloc_bitmap_or(obj->complete_nodeset, obj->complete_nodeset, child->complete_nodeset); - if (child->allowed_nodeset) - hwloc_bitmap_or(obj->allowed_nodeset, obj->allowed_nodeset, child->allowed_nodeset); - child = child->next_sibling; - } - } else { - /* copy the parent nodesets */ - obj->nodeset = hwloc_bitmap_dup(obj->parent->nodeset); - obj->complete_nodeset = hwloc_bitmap_dup(obj->parent->complete_nodeset); - obj->allowed_nodeset = hwloc_bitmap_dup(obj->parent->allowed_nodeset); - } - - return obj; -} - -hwloc_obj_t -hwloc_topology_insert_misc_object_by_parent(struct hwloc_topology *topology, hwloc_obj_t parent, const char *name) -{ - hwloc_obj_t obj = hwloc_alloc_setup_object(HWLOC_OBJ_MISC, -1); - if (name) - obj->name = strdup(name); - - hwloc_insert_object_by_parent(topology, parent, obj); - - hwloc_connect_children(topology->levels[0][0]); - /* no need to hwloc_connect_levels() since misc object are not in levels */ - - return obj; -} - -/* Traverse children of a parent in a safe way: reread the next pointer as - * appropriate to prevent crash on child deletion: */ -#define for_each_child_safe(child, parent, pchild) \ - for (pchild = &(parent)->first_child, child = *pchild; \ - child; \ - /* Check whether the current child was not dropped. */ \ - (*pchild == child ? pchild = &(child->next_sibling) : NULL), \ - /* Get pointer to next childect. */ \ - child = *pchild) - -static int hwloc_memory_page_type_compare(const void *_a, const void *_b) -{ - const struct hwloc_obj_memory_page_type_s *a = _a; - const struct hwloc_obj_memory_page_type_s *b = _b; - /* consider 0 as larger so that 0-size page_type go to the end */ - return b->size ? (int)(a->size - b->size) : -1; -} - -/* Propagate memory counts */ -static void -propagate_total_memory(hwloc_obj_t obj) -{ - hwloc_obj_t *temp, child; - unsigned i; - - /* reset total before counting local and children memory */ - obj->memory.total_memory = 0; - - /* Propagate memory up */ - for_each_child_safe(child, obj, temp) { - propagate_total_memory(child); - obj->memory.total_memory += child->memory.total_memory; - } - obj->memory.total_memory += obj->memory.local_memory; - - /* By the way, sort the page_type array. - * Cannot do it on insert since some backends (e.g. XML) add page_types after inserting the object. - */ - qsort(obj->memory.page_types, obj->memory.page_types_len, sizeof(*obj->memory.page_types), hwloc_memory_page_type_compare); - /* Ignore 0-size page_types, they are at the end */ - for(i=obj->memory.page_types_len; i>=1; i--) - if (obj->memory.page_types[i-1].size) - break; - obj->memory.page_types_len = i; -} - -/* Collect the cpuset of all the PU objects. */ -static void -collect_proc_cpuset(hwloc_obj_t obj, hwloc_obj_t sys) -{ - hwloc_obj_t child, *temp; - - if (sys) { - /* We are already given a pointer to a system object */ - if (obj->type == HWLOC_OBJ_PU) - hwloc_bitmap_or(sys->cpuset, sys->cpuset, obj->cpuset); - } else { - if (obj->cpuset) { - /* This object is the root of a machine */ - sys = obj; - /* Assume no PU for now */ - hwloc_bitmap_zero(obj->cpuset); - } - } - - for_each_child_safe(child, obj, temp) - collect_proc_cpuset(child, sys); -} - -/* While traversing down and up, propagate the offline/disallowed cpus by - * and'ing them to and from the first object that has a cpuset */ -static void -propagate_unused_cpuset(hwloc_obj_t obj, hwloc_obj_t sys) -{ - hwloc_obj_t child, *temp; - - if (obj->cpuset) { - if (sys) { - /* We are already given a pointer to an system object, update it and update ourselves */ - hwloc_bitmap_t mask = hwloc_bitmap_alloc(); - - /* Apply the topology cpuset */ - hwloc_bitmap_and(obj->cpuset, obj->cpuset, sys->cpuset); - - /* Update complete cpuset down */ - if (obj->complete_cpuset) { - hwloc_bitmap_and(obj->complete_cpuset, obj->complete_cpuset, sys->complete_cpuset); - } else { - obj->complete_cpuset = hwloc_bitmap_dup(sys->complete_cpuset); - hwloc_bitmap_and(obj->complete_cpuset, obj->complete_cpuset, obj->cpuset); - } - - /* Update online cpusets */ - if (obj->online_cpuset) { - /* Update ours */ - hwloc_bitmap_and(obj->online_cpuset, obj->online_cpuset, sys->online_cpuset); - - /* Update the given cpuset, but only what we know */ - hwloc_bitmap_copy(mask, obj->cpuset); - hwloc_bitmap_not(mask, mask); - hwloc_bitmap_or(mask, mask, obj->online_cpuset); - hwloc_bitmap_and(sys->online_cpuset, sys->online_cpuset, mask); - } else { - /* Just take it as such */ - obj->online_cpuset = hwloc_bitmap_dup(sys->online_cpuset); - hwloc_bitmap_and(obj->online_cpuset, obj->online_cpuset, obj->cpuset); - } - - /* Update allowed cpusets */ - if (obj->allowed_cpuset) { - /* Update ours */ - hwloc_bitmap_and(obj->allowed_cpuset, obj->allowed_cpuset, sys->allowed_cpuset); - - /* Update the given cpuset, but only what we know */ - hwloc_bitmap_copy(mask, obj->cpuset); - hwloc_bitmap_not(mask, mask); - hwloc_bitmap_or(mask, mask, obj->allowed_cpuset); - hwloc_bitmap_and(sys->allowed_cpuset, sys->allowed_cpuset, mask); - } else { - /* Just take it as such */ - obj->allowed_cpuset = hwloc_bitmap_dup(sys->allowed_cpuset); - hwloc_bitmap_and(obj->allowed_cpuset, obj->allowed_cpuset, obj->cpuset); - } - - hwloc_bitmap_free(mask); - } else { - /* This object is the root of a machine */ - sys = obj; - /* Apply complete cpuset to cpuset, online_cpuset and allowed_cpuset, it - * will automatically be applied below */ - if (obj->complete_cpuset) - hwloc_bitmap_and(obj->cpuset, obj->cpuset, obj->complete_cpuset); - else - obj->complete_cpuset = hwloc_bitmap_dup(obj->cpuset); - if (obj->online_cpuset) - hwloc_bitmap_and(obj->online_cpuset, obj->online_cpuset, obj->complete_cpuset); - else - obj->online_cpuset = hwloc_bitmap_dup(obj->complete_cpuset); - if (obj->allowed_cpuset) - hwloc_bitmap_and(obj->allowed_cpuset, obj->allowed_cpuset, obj->complete_cpuset); - else - obj->allowed_cpuset = hwloc_bitmap_dup(obj->complete_cpuset); - } - } - - for_each_child_safe(child, obj, temp) - propagate_unused_cpuset(child, sys); -} - -/* Force full nodeset for non-NUMA machines */ -static void -add_default_object_sets(hwloc_obj_t obj, int parent_has_sets) -{ - hwloc_obj_t child, *temp; - - if (parent_has_sets || obj->cpuset) { - /* if the parent has non-NULL sets, or if the object has non-NULL cpusets, - * it must have non-NULL nodesets - */ - assert(obj->cpuset); - assert(obj->online_cpuset); - assert(obj->complete_cpuset); - assert(obj->allowed_cpuset); - if (!obj->nodeset) - obj->nodeset = hwloc_bitmap_alloc_full(); - if (!obj->complete_nodeset) - obj->complete_nodeset = hwloc_bitmap_alloc_full(); - if (!obj->allowed_nodeset) - obj->allowed_nodeset = hwloc_bitmap_alloc_full(); - } else { - /* parent has no sets and object has NULL cpusets, - * it must have NULL nodesets - */ - assert(!obj->nodeset); - assert(!obj->complete_nodeset); - assert(!obj->allowed_nodeset); - } - - for_each_child_safe(child, obj, temp) - add_default_object_sets(child, obj->cpuset != NULL); -} - -/* Propagate nodesets up and down */ -static void -propagate_nodeset(hwloc_obj_t obj, hwloc_obj_t sys) -{ - hwloc_obj_t child, *temp; - hwloc_bitmap_t parent_nodeset = NULL; - int parent_weight = 0; - - if (!sys && obj->nodeset) { - sys = obj; - if (!obj->complete_nodeset) - obj->complete_nodeset = hwloc_bitmap_dup(obj->nodeset); - if (!obj->allowed_nodeset) - obj->allowed_nodeset = hwloc_bitmap_dup(obj->complete_nodeset); - } - - if (sys) { - if (obj->nodeset) { - /* Some existing nodeset coming from above, to possibly propagate down */ - parent_nodeset = obj->nodeset; - parent_weight = hwloc_bitmap_weight(parent_nodeset); - } else - obj->nodeset = hwloc_bitmap_alloc(); - } - - for_each_child_safe(child, obj, temp) { - /* Propagate singleton nodesets down */ - if (parent_weight == 1) { - if (!child->nodeset) - child->nodeset = hwloc_bitmap_dup(obj->nodeset); - else if (!hwloc_bitmap_isequal(child->nodeset, parent_nodeset)) { - hwloc_debug_bitmap("Oops, parent nodeset %s", parent_nodeset); - hwloc_debug_bitmap(" is different from child nodeset %s, ignoring the child one\n", child->nodeset); - hwloc_bitmap_copy(child->nodeset, parent_nodeset); - } - } - - /* Recurse */ - propagate_nodeset(child, sys); - - /* Propagate children nodesets up */ - if (sys && child->nodeset) - hwloc_bitmap_or(obj->nodeset, obj->nodeset, child->nodeset); - } -} - -/* Propagate allowed and complete nodesets */ -static void -propagate_nodesets(hwloc_obj_t obj) -{ - hwloc_bitmap_t mask = hwloc_bitmap_alloc(); - hwloc_obj_t child, *temp; - - for_each_child_safe(child, obj, temp) { - if (obj->nodeset) { - /* Update complete nodesets down */ - if (child->complete_nodeset) { - hwloc_bitmap_and(child->complete_nodeset, child->complete_nodeset, obj->complete_nodeset); - } else if (child->nodeset) { - child->complete_nodeset = hwloc_bitmap_dup(obj->complete_nodeset); - hwloc_bitmap_and(child->complete_nodeset, child->complete_nodeset, child->nodeset); - } /* else the child doesn't have nodeset information, we can not provide a complete nodeset */ - - /* Update allowed nodesets down */ - if (child->allowed_nodeset) { - hwloc_bitmap_and(child->allowed_nodeset, child->allowed_nodeset, obj->allowed_nodeset); - } else if (child->nodeset) { - child->allowed_nodeset = hwloc_bitmap_dup(obj->allowed_nodeset); - hwloc_bitmap_and(child->allowed_nodeset, child->allowed_nodeset, child->nodeset); - } - } - - propagate_nodesets(child); - - if (obj->nodeset) { - /* Update allowed nodesets up */ - if (child->nodeset && child->allowed_nodeset) { - hwloc_bitmap_copy(mask, child->nodeset); - hwloc_bitmap_andnot(mask, mask, child->allowed_nodeset); - hwloc_bitmap_andnot(obj->allowed_nodeset, obj->allowed_nodeset, mask); - } - } - } - hwloc_bitmap_free(mask); - - if (obj->nodeset) { - /* Apply complete nodeset to nodeset and allowed_nodeset */ - if (obj->complete_nodeset) - hwloc_bitmap_and(obj->nodeset, obj->nodeset, obj->complete_nodeset); - else - obj->complete_nodeset = hwloc_bitmap_dup(obj->nodeset); - if (obj->allowed_nodeset) - hwloc_bitmap_and(obj->allowed_nodeset, obj->allowed_nodeset, obj->complete_nodeset); - else - obj->allowed_nodeset = hwloc_bitmap_dup(obj->complete_nodeset); - } -} - -static void -apply_nodeset(hwloc_obj_t obj, hwloc_obj_t sys) -{ - unsigned i; - hwloc_obj_t child, *temp; - - if (sys) { - if (obj->type == HWLOC_OBJ_NODE && obj->os_index != (unsigned) -1 && - !hwloc_bitmap_isset(sys->allowed_nodeset, obj->os_index)) { - hwloc_debug("Dropping memory from disallowed node %u\n", obj->os_index); - obj->memory.local_memory = 0; - obj->memory.total_memory = 0; - for(i=0; i<obj->memory.page_types_len; i++) - obj->memory.page_types[i].count = 0; - } - } else { - if (obj->allowed_nodeset) { - sys = obj; - } - } - - for_each_child_safe(child, obj, temp) - apply_nodeset(child, sys); -} - -static void -remove_unused_cpusets(hwloc_obj_t obj) -{ - hwloc_obj_t child, *temp; - - if (obj->cpuset) { - hwloc_bitmap_and(obj->cpuset, obj->cpuset, obj->online_cpuset); - hwloc_bitmap_and(obj->cpuset, obj->cpuset, obj->allowed_cpuset); - } - - for_each_child_safe(child, obj, temp) - remove_unused_cpusets(child); -} - -/* Remove an object from its parent and free it. - * Only updates next_sibling/first_child pointers, - * so may only be used during early discovery. - * Children are inserted where the object was. - */ -static void -unlink_and_free_single_object(hwloc_obj_t *pparent) -{ - hwloc_obj_t parent = *pparent; - hwloc_obj_t child = parent->first_child; - /* Replace object with its list of children */ - if (child) { - *pparent = child; - while (child->next_sibling) - child = child->next_sibling; - child->next_sibling = parent->next_sibling; - } else - *pparent = parent->next_sibling; - /* Remove ignored object */ - hwloc_free_unlinked_object(parent); -} - -/* Remove all ignored objects. */ -static void -remove_ignored(hwloc_topology_t topology, hwloc_obj_t *pparent) -{ - hwloc_obj_t parent = *pparent, child, *pchild; - - for_each_child_safe(child, parent, pchild) - remove_ignored(topology, pchild); - - if (parent != topology->levels[0][0] && - topology->ignored_types[parent->type] == HWLOC_IGNORE_TYPE_ALWAYS) { - hwloc_debug("%s", "\nDropping ignored object "); - print_object(topology, 0, parent); - unlink_and_free_single_object(pparent); - } -} - -/* Remove an object and its children from its parent and free them. - * Only updates next_sibling/first_child pointers, - * so may only be used during early discovery. - */ -static void -unlink_and_free_object_and_children(hwloc_obj_t *pobj) -{ - hwloc_obj_t obj = *pobj, child, *pchild; - - for_each_child_safe(child, obj, pchild) - unlink_and_free_object_and_children(pchild); - - *pobj = obj->next_sibling; - hwloc_free_unlinked_object(obj); -} - -/* Remove all children whose cpuset is empty, except NUMA nodes - * since we want to keep memory information. */ -static void -remove_empty(hwloc_topology_t topology, hwloc_obj_t *pobj) -{ - hwloc_obj_t obj = *pobj, child, *pchild; - - for_each_child_safe(child, obj, pchild) - remove_empty(topology, pchild); - - if (obj->type != HWLOC_OBJ_NODE - && obj->cpuset /* FIXME: needed for PCI devices? */ - && hwloc_bitmap_iszero(obj->cpuset)) { - /* Remove empty children */ - hwloc_debug("%s", "\nRemoving empty object "); - print_object(topology, 0, obj); - unlink_and_free_object_and_children(pobj); - } -} - -/* adjust object cpusets according the given droppedcpuset, - * drop object whose cpuset becomes empty, - * and mark dropped nodes in droppednodeset - */ -static void -restrict_object(hwloc_topology_t topology, unsigned long flags, hwloc_obj_t *pobj, hwloc_const_cpuset_t droppedcpuset, hwloc_nodeset_t droppednodeset, int droppingparent) -{ - hwloc_obj_t obj = *pobj, child, *pchild; - int dropping; - int modified = obj->complete_cpuset && hwloc_bitmap_intersects(obj->complete_cpuset, droppedcpuset); - - hwloc_clear_object_distances(obj); - - if (obj->cpuset) - hwloc_bitmap_andnot(obj->cpuset, obj->cpuset, droppedcpuset); - if (obj->complete_cpuset) - hwloc_bitmap_andnot(obj->complete_cpuset, obj->complete_cpuset, droppedcpuset); - if (obj->online_cpuset) - hwloc_bitmap_andnot(obj->online_cpuset, obj->online_cpuset, droppedcpuset); - if (obj->allowed_cpuset) - hwloc_bitmap_andnot(obj->allowed_cpuset, obj->allowed_cpuset, droppedcpuset); - - if (obj->type == HWLOC_OBJ_MISC) { - dropping = droppingparent && !(flags & HWLOC_RESTRICT_FLAG_ADAPT_MISC); - } else { - dropping = droppingparent || (obj->cpuset && hwloc_bitmap_iszero(obj->cpuset)); - } - - if (modified) - for_each_child_safe(child, obj, pchild) - restrict_object(topology, flags, pchild, droppedcpuset, droppednodeset, dropping); - - if (dropping) { - hwloc_debug("%s", "\nRemoving object during restrict"); - print_object(topology, 0, obj); - if (obj->type == HWLOC_OBJ_NODE) - hwloc_bitmap_set(droppednodeset, obj->os_index); - /* remove the object from the tree (no need to remove from levels, they will be entirely rebuilt by the caller) */ - unlink_and_free_single_object(pobj); - /* do not remove children. if they were to be removed, they would have been already */ - } -} - -/* adjust object nodesets accordingly the given droppednodeset - */ -static void -restrict_object_nodeset(hwloc_topology_t topology, hwloc_obj_t *pobj, hwloc_nodeset_t droppednodeset) -{ - hwloc_obj_t obj = *pobj, child, *pchild; - - /* if this object isn't modified, don't bother looking at children */ - if (obj->complete_nodeset && !hwloc_bitmap_intersects(obj->complete_nodeset, droppednodeset)) - return; - - if (obj->nodeset) - hwloc_bitmap_andnot(obj->nodeset, obj->nodeset, droppednodeset); - if (obj->complete_nodeset) - hwloc_bitmap_andnot(obj->complete_nodeset, obj->complete_nodeset, droppednodeset); - if (obj->allowed_nodeset) - hwloc_bitmap_andnot(obj->allowed_nodeset, obj->allowed_nodeset, droppednodeset); - - for_each_child_safe(child, obj, pchild) - restrict_object_nodeset(topology, pchild, droppednodeset); -} -/* - * Merge with the only child if either the parent or the child has a type to be - * ignored while keeping structure - */ -static void -merge_useless_child(hwloc_topology_t topology, hwloc_obj_t *pparent) -{ - hwloc_obj_t parent = *pparent, child, *pchild; - - for_each_child_safe(child, parent, pchild) - merge_useless_child(topology, pchild); - - child = parent->first_child; - if (!child || child->next_sibling) - /* There are no or several children, it's useful to keep them. */ - return; - - /* TODO: have a preference order? */ - if (topology->ignored_types[parent->type] == HWLOC_IGNORE_TYPE_KEEP_STRUCTURE) { - /* Parent can be ignored in favor of the child. */ - hwloc_debug("%s", "\nIgnoring parent "); - print_object(topology, 0, parent); - *pparent = child; - child->next_sibling = parent->next_sibling; - hwloc_free_unlinked_object(parent); - } else if (topology->ignored_types[child->type] == HWLOC_IGNORE_TYPE_KEEP_STRUCTURE) { - /* Child can be ignored in favor of the parent. */ - hwloc_debug("%s", "\nIgnoring child "); - print_object(topology, 0, child); - parent->first_child = child->first_child; - hwloc_free_unlinked_object(child); - } -} - -/* - * Initialize handy pointers in the whole topology. - * The topology only had first_child and next_sibling pointers. - * When this funtions return, all parent/children pointers are initialized. - * The remaining fields (levels, cousins, logical_index, depth, ...) will - * be setup later in hwloc_connect_levels(). - */ -static void -hwloc_connect_children(hwloc_obj_t parent) -{ - unsigned n; - hwloc_obj_t child, prev_child = NULL; - - for (n = 0, child = parent->first_child; - child; - n++, prev_child = child, child = child->next_sibling) { - child->parent = parent; - child->sibling_rank = n; - child->prev_sibling = prev_child; - } - parent->last_child = prev_child; - - parent->arity = n; - free(parent->children); - if (!n) { - parent->children = NULL; - return; - } - - parent->children = malloc(n * sizeof(*parent->children)); - for (n = 0, child = parent->first_child; - child; - n++, child = child->next_sibling) { - parent->children[n] = child; - hwloc_connect_children(child); - } -} - -/* - * Check whether there is an object below ROOT that has the same type as OBJ - */ -static int -find_same_type(hwloc_obj_t root, hwloc_obj_t obj) -{ - hwloc_obj_t child; - - if (hwloc_type_cmp(root, obj) == HWLOC_TYPE_EQUAL) - return 1; - - for (child = root->first_child; child; child = child->next_sibling) - if (find_same_type(child, obj)) - return 1; - - return 0; -} - -static int -hwloc_levels_ignore_object(hwloc_obj_t obj) -{ - return obj->type != HWLOC_OBJ_MISC; -} - -/* traverse the array of current object and compare them with top_obj. - * if equal, take the object and put its children into the remaining objs. - * if not equal, put the object into the remaining objs. - */ -static int -hwloc_level_take_objects(hwloc_obj_t top_obj, - hwloc_obj_t *current_objs, unsigned n_current_objs, - hwloc_obj_t *taken_objs, unsigned n_taken_objs __hwloc_attribute_unused, - hwloc_obj_t *remaining_objs, unsigned n_remaining_objs __hwloc_attribute_unused) -{ - unsigned taken_i = 0; - unsigned new_i = 0; - unsigned ignored = 0; - unsigned i, j; - - for (i = 0; i < n_current_objs; i++) - if (hwloc_type_cmp(top_obj, current_objs[i]) == HWLOC_TYPE_EQUAL) { - /* Take it, add children. */ - taken_objs[taken_i++] = current_objs[i]; - for (j = 0; j < current_objs[i]->arity; j++) { - hwloc_obj_t obj = current_objs[i]->children[j]; - if (hwloc_levels_ignore_object(obj)) - remaining_objs[new_i++] = obj; - else - ignored++; - } - } else { - /* Leave it. */ - hwloc_obj_t obj = current_objs[i]; - if (hwloc_levels_ignore_object(obj)) - remaining_objs[new_i++] = obj; - else - ignored++; - } - -#ifdef HWLOC_DEBUG - /* Make sure we didn't mess up. */ - assert(taken_i == n_taken_objs); - assert(new_i + ignored == n_current_objs - n_taken_objs + n_remaining_objs); -#endif - - return new_i; -} - -/* - * Do the remaining work that hwloc_connect_children() did not do earlier. - */ -static int -hwloc_connect_levels(hwloc_topology_t topology) -{ - unsigned l, i=0; - hwloc_obj_t *objs, *taken_objs, *new_objs, top_obj; - unsigned n_objs, n_taken_objs, n_new_objs; - - /* reset non-root levels (root was initialized during init and will not change here) */ - for(l=1; l<HWLOC_DEPTH_MAX; l++) - free(topology->levels[l]); - memset(topology->levels+1, 0, (HWLOC_DEPTH_MAX-1)*sizeof(*topology->levels)); - memset(topology->level_nbobjects+1, 0, (HWLOC_DEPTH_MAX-1)*sizeof(*topology->level_nbobjects)); - topology->nb_levels = 1; - /* don't touch next_group_depth, the Group objects are still here */ - - /* initialize all depth to unknown */ - for (l=1; l < HWLOC_OBJ_TYPE_MAX; l++) - topology->type_depth[l] = HWLOC_TYPE_DEPTH_UNKNOWN; - topology->type_depth[topology->levels[0][0]->type] = 0; - - /* Start with children of the whole system. */ - l = 0; - n_objs = topology->levels[0][0]->arity; - objs = malloc(n_objs * sizeof(objs[0])); - if (!objs) { - errno = ENOMEM; - hwloc_topology_clear(topology); - return -1; - } - - { - hwloc_obj_t dummy_taken_objs; - /* copy all root children that must go into levels, - * root will go into dummy_taken_objs but we don't need it anyway - * because it stays alone in first level. - */ - n_objs = hwloc_level_take_objects(topology->levels[0][0], - topology->levels[0], 1, - &dummy_taken_objs, 1, - objs, n_objs); -#ifdef HWLOC_DEBUG - assert(dummy_taken_objs == topology->levels[0][0]); -#endif - } - - /* Keep building levels while there are objects left in OBJS. */ - while (n_objs) { - - /* First find which type of object is the topmost. - * Don't use PU if there are other types since we want to keep PU at the bottom. - */ - for (i = 0; i < n_objs; i++) - if (objs[i]->type != HWLOC_OBJ_PU) - break; - top_obj = i == n_objs ? objs[0] : objs[i]; - for (i = 0; i < n_objs; i++) { - if (hwloc_type_cmp(top_obj, objs[i]) != HWLOC_TYPE_EQUAL) { - if (find_same_type(objs[i], top_obj)) { - /* OBJS[i] is strictly above an object of the same type as TOP_OBJ, so it - * is above TOP_OBJ. */ - top_obj = objs[i]; - } - } - } - - /* Now peek all objects of the same type, build a level with that and - * replace them with their children. */ - - /* First count them. */ - n_taken_objs = 0; - n_new_objs = 0; - for (i = 0; i < n_objs; i++) - if (hwloc_type_cmp(top_obj, objs[i]) == HWLOC_TYPE_EQUAL) { - n_taken_objs++; - n_new_objs += objs[i]->arity; - } - - /* New level. */ - taken_objs = malloc((n_taken_objs + 1) * sizeof(taken_objs[0])); - /* New list of pending objects. */ - new_objs = malloc((n_objs - n_taken_objs + n_new_objs) * sizeof(new_objs[0])); - - n_new_objs = hwloc_level_take_objects(top_obj, - objs, n_objs, - taken_objs, n_taken_objs, - new_objs, n_new_objs); - - /* Ok, put numbers in the level. */ - for (i = 0; i < n_taken_objs; i++) { - taken_objs[i]->depth = topology->nb_levels; - taken_objs[i]->logical_index = i; - if (i) { - taken_objs[i]->prev_cousin = taken_objs[i-1]; - taken_objs[i-1]->next_cousin = taken_objs[i]; - } - } - - /* One more level! */ - if (top_obj->type == HWLOC_OBJ_CACHE) - hwloc_debug("--- Cache level depth %u", top_obj->attr->cache.depth); - else - hwloc_debug("--- %s level", hwloc_obj_type_string(top_obj->type)); - hwloc_debug(" has number %u\n\n", topology->nb_levels); - - if (topology->type_depth[top_obj->type] == HWLOC_TYPE_DEPTH_UNKNOWN) - topology->type_depth[top_obj->type] = topology->nb_levels; - else - topology->type_depth[top_obj->type] = HWLOC_TYPE_DEPTH_MULTIPLE; /* mark as unknown */ - - taken_objs[n_taken_objs] = NULL; - - topology->level_nbobjects[topology->nb_levels] = n_taken_objs; - topology->levels[topology->nb_levels] = taken_objs; - - topology->nb_levels++; - - free(objs); - objs = new_objs; - n_objs = n_new_objs; - } - - /* It's empty now. */ - free(objs); - - return 0; -} - -/* - * Empty binding hooks always returning success - */ - -static int dontset_return_complete_cpuset(hwloc_topology_t topology, hwloc_cpuset_t set) -{ - hwloc_const_cpuset_t cpuset = hwloc_topology_get_complete_cpuset(topology); - if (cpuset) { - hwloc_bitmap_copy(set, hwloc_topology_get_complete_cpuset(topology)); - return 0; - } else - return -1; -} - -static int dontset_thisthread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, int flags __hwloc_attribute_unused) -{ - return 0; -} -static int dontget_thisthread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_bitmap_t set, int flags __hwloc_attribute_unused) -{ - return dontset_return_complete_cpuset(topology, set); -} -static int dontset_thisproc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, int flags __hwloc_attribute_unused) -{ - return 0; -} -static int dontget_thisproc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_bitmap_t set, int flags __hwloc_attribute_unused) -{ - return dontset_return_complete_cpuset(topology, set); -} -static int dontset_proc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t pid __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, int flags __hwloc_attribute_unused) -{ - return 0; -} -static int dontget_proc_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t pid __hwloc_attribute_unused, hwloc_bitmap_t cpuset, int flags __hwloc_attribute_unused) -{ - return dontset_return_complete_cpuset(topology, cpuset); -} -#ifdef hwloc_thread_t -static int dontset_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, int flags __hwloc_attribute_unused) -{ - return 0; -} -static int dontget_thread_cpubind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_thread_t tid __hwloc_attribute_unused, hwloc_bitmap_t cpuset, int flags __hwloc_attribute_unused) -{ - return dontset_return_complete_cpuset(topology, cpuset); -} -#endif - -static int dontset_return_complete_nodeset(hwloc_topology_t topology, hwloc_nodeset_t set, hwloc_membind_policy_t *policy) -{ - hwloc_const_nodeset_t nodeset = hwloc_topology_get_complete_nodeset(topology); - if (nodeset) { - hwloc_bitmap_copy(set, hwloc_topology_get_complete_nodeset(topology)); - *policy = HWLOC_MEMBIND_DEFAULT; - return 0; - } else - return -1; -} - -static int dontset_thisproc_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, hwloc_membind_policy_t policy __hwloc_attribute_unused, int flags __hwloc_attribute_unused) -{ - return 0; -} -static int dontget_thisproc_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags __hwloc_attribute_unused) -{ - return dontset_return_complete_nodeset(topology, set, policy); -} - -static int dontset_thisthread_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, hwloc_membind_policy_t policy __hwloc_attribute_unused, int flags __hwloc_attribute_unused) -{ - return 0; -} -static int dontget_thisthread_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags __hwloc_attribute_unused) -{ - return dontset_return_complete_nodeset(topology, set, policy); -} - -static int dontset_proc_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t pid __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, hwloc_membind_policy_t policy __hwloc_attribute_unused, int flags __hwloc_attribute_unused) -{ - return 0; -} -static int dontget_proc_membind(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_pid_t pid __hwloc_attribute_unused, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags __hwloc_attribute_unused) -{ - return dontset_return_complete_nodeset(topology, set, policy); -} - -static int dontset_area_membind(hwloc_topology_t topology __hwloc_attribute_unused, const void *addr __hwloc_attribute_unused, size_t size __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, hwloc_membind_policy_t policy __hwloc_attribute_unused, int flags __hwloc_attribute_unused) -{ - return 0; -} -static int dontget_area_membind(hwloc_topology_t topology __hwloc_attribute_unused, const void *addr __hwloc_attribute_unused, size_t size __hwloc_attribute_unused, hwloc_bitmap_t set, hwloc_membind_policy_t * policy, int flags __hwloc_attribute_unused) -{ - return dontset_return_complete_nodeset(topology, set, policy); -} - -static void * dontalloc_membind(hwloc_topology_t topology __hwloc_attribute_unused, size_t size __hwloc_attribute_unused, hwloc_const_bitmap_t set __hwloc_attribute_unused, hwloc_membind_policy_t policy __hwloc_attribute_unused, int flags __hwloc_attribute_unused) -{ - return malloc(size); -} -static int dontfree_membind(hwloc_topology_t topology __hwloc_attribute_unused, void *addr __hwloc_attribute_unused, size_t size __hwloc_attribute_unused) -{ - free(addr); - return 0; -} - -static void alloc_cpusets(hwloc_obj_t obj) -{ - obj->cpuset = hwloc_bitmap_alloc_full(); - obj->complete_cpuset = hwloc_bitmap_alloc(); - obj->online_cpuset = hwloc_bitmap_alloc_full(); - obj->allowed_cpuset = hwloc_bitmap_alloc_full(); - obj->nodeset = hwloc_bitmap_alloc(); - obj->complete_nodeset = hwloc_bitmap_alloc(); - obj->allowed_nodeset = hwloc_bitmap_alloc_full(); -} - -/* Main discovery loop */ -static int -hwloc_discover(struct hwloc_topology *topology) -{ - if (topology->backend_type == HWLOC_BACKEND_SYNTHETIC) { - alloc_cpusets(topology->levels[0][0]); - hwloc_look_synthetic(topology); -#ifdef HWLOC_HAVE_XML - } else if (topology->backend_type == HWLOC_BACKEND_XML) { - hwloc_look_xml(topology); -#endif - } else { - - /* Raw detection, from coarser levels to finer levels for more efficiency. */ - - /* hwloc_look_* functions should use hwloc_obj_add to add objects initialized - * through hwloc_alloc_setup_object. For node levels, nodeset, memory_Kb and - * huge_page_free must be initialized. For cache levels, memory_kB and - * attr->cache.depth must be initialized. For misc levels, attr->misc.depth - * must be initialized. - */ - - /* There must be at least a PU object for each logical processor, at worse - * produced by hwloc_setup_pu_level() - */ - - /* To be able to just use hwloc_insert_object_by_cpuset to insert the object - * in the topology according to the cpuset, the cpuset field must be - * initialized. - */ - - /* A priori, All processors are visible in the topology, online, and allowed - * for the application. - * - * - If some processors exist but topology information is unknown for them - * (and thus the backend couldn't create objects for them), they should be - * added to the complete_cpuset field of the lowest object where the object - * could reside. - * - * - If some processors are not online, they should be dropped from the - * online_cpuset field. - * - * - If some processors are not allowed for the application (e.g. for - * administration reasons), they should be dropped from the allowed_cpuset - * field. - * - * The same applies to the node sets complete_nodeset and allowed_cpuset. - * - * If such field doesn't exist yet, it can be allocated, and initialized to - * zero (for complete), or to full (for online and allowed). The values are - * automatically propagated to the whole tree after detection. - * - * Here, we only allocate cpusets for the root object. - */ - - alloc_cpusets(topology->levels[0][0]); - - /* Each OS type should also fill the bind functions pointers, at least the - * set_cpubind one - */ - -# ifdef HWLOC_LINUX_SYS -# define HAVE_OS_SUPPORT - hwloc_look_linux(topology); -# endif /* HWLOC_LINUX_SYS */ - -# ifdef HWLOC_AIX_SYS -# define HAVE_OS_SUPPORT - hwloc_look_aix(topology); -# endif /* HWLOC_AIX_SYS */ - -# ifdef HWLOC_OSF_SYS -# define HAVE_OS_SUPPORT - hwloc_look_osf(topology); -# endif /* HWLOC_OSF_SYS */ - -# ifdef HWLOC_SOLARIS_SYS -# define HAVE_OS_SUPPORT - hwloc_look_solaris(topology); -# endif /* HWLOC_SOLARIS_SYS */ - -# ifdef HWLOC_WIN_SYS -# define HAVE_OS_SUPPORT - hwloc_look_windows(topology); -# endif /* HWLOC_WIN_SYS */ - -# ifdef HWLOC_DARWIN_SYS -# define HAVE_OS_SUPPORT - hwloc_look_darwin(topology); -# endif /* HWLOC_DARWIN_SYS */ - -# ifdef HWLOC_FREEBSD_SYS -# define HAVE_OS_SUPPORT - hwloc_look_freebsd(topology); -# endif /* HWLOC_FREEBSD_SYS */ - -# ifdef HWLOC_HPUX_SYS -# define HAVE_OS_SUPPORT - hwloc_look_hpux(topology); -# endif /* HWLOC_HPUX_SYS */ - -# ifndef HAVE_OS_SUPPORT - hwloc_setup_pu_level(topology, hwloc_fallback_nbprocessors(topology)); -# endif /* Unsupported OS */ - - -# ifndef HWLOC_LINUX_SYS - if (topology->is_thissystem) { - /* gather uname info, except for Linux, which does it internally depending on load options */ - hwloc_add_uname_info(topology); - } -# endif - } - - /* - * Now that backends have detected objects, sort them and establish pointers. - */ - print_objects(topology, 0, topology->levels[0][0]); - - /* - * Group levels by distances - */ - hwloc_convert_distances_indexes_into_objects(topology); - hwloc_group_by_distances(topology); - - /* First tweak a bit to clean the topology. */ - hwloc_debug("%s", "\nRestrict topology cpusets to existing PU and NODE objects\n"); - collect_proc_cpuset(topology->levels[0][0], NULL); - - hwloc_debug("%s", "\nPropagate offline and disallowed cpus down and up\n"); - propagate_unused_cpuset(topology->levels[0][0], NULL); - - if (topology->levels[0][0]->complete_nodeset && hwloc_bitmap_iszero(topology->levels[0][0]->complete_nodeset)) { - /* No nodeset, drop all of them */ - hwloc_bitmap_free(topology->levels[0][0]->nodeset); - topology->levels[0][0]->nodeset = NULL; - hwloc_bitmap_free(topology->levels[0][0]->complete_nodeset); - topology->levels[0][0]->complete_nodeset = NULL; - hwloc_bitmap_free(topology->levels[0][0]->allowed_nodeset); - topology->levels[0][0]->allowed_nodeset = NULL; - } - hwloc_debug("%s", "\nPropagate nodesets\n"); - propagate_nodeset(topology->levels[0][0], NULL); - propagate_nodesets(topology->levels[0][0]); - - print_objects(topology, 0, topology->levels[0][0]); - - if (!(topology->flags & HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM)) { - hwloc_debug("%s", "\nRemoving unauthorized and offline cpusets from all cpusets\n"); - remove_unused_cpusets(topology->levels[0][0]); - - hwloc_debug("%s", "\nRemoving disallowed memory according to nodesets\n"); - apply_nodeset(topology->levels[0][0], NULL); - - print_objects(topology, 0, topology->levels[0][0]); - } - - hwloc_debug("%s", "\nRemoving ignored objects\n"); - remove_ignored(topology, &topology->levels[0][0]); - - print_objects(topology, 0, topology->levels[0][0]); - - hwloc_debug("%s", "\nRemoving empty objects except numa nodes and PCI devices\n"); - remove_empty(topology, &topology->levels[0][0]); - - if (!topology->levels[0][0]) { - fprintf(stderr, "Topology became empty, aborting!\n"); - abort(); - } - - print_objects(topology, 0, topology->levels[0][0]); - - hwloc_debug("%s", "\nRemoving objects whose type has HWLOC_IGNORE_TYPE_KEEP_STRUCTURE and have only one child or are the only child\n"); - merge_useless_child(topology, &topology->levels[0][0]); - - print_objects(topology, 0, topology->levels[0][0]); - - hwloc_debug("%s", "\nAdd default object sets\n"); - add_default_object_sets(topology->levels[0][0], 0); - - hwloc_debug("%s", "\nOk, finished tweaking, now connect\n"); - - /* Now connect handy pointers. */ - - hwloc_connect_children(topology->levels[0][0]); - - print_objects(topology, 0, topology->levels[0][0]); - - /* Explore the resulting topology level by level. */ - - if (hwloc_connect_levels(topology) < 0) - return -1; - - /* accumulate children memory in total_memory fields (only once parent is set) */ - hwloc_debug("%s", "\nPropagate total memory up\n"); - propagate_total_memory(topology->levels[0][0]); - - /* - * Now that objects are numbered, take distance matrices from backends and put them in the main topology - */ - hwloc_finalize_logical_distances(topology); - -# ifdef HWLOC_HAVE_XML - if (topology->backend_type == HWLOC_BACKEND_XML) - /* make sure the XML-imported distances are ok now that the tree is properly setup */ - hwloc_xml_check_distances(topology); -# endif - - /* - * Now set binding hooks. - * If the represented system is actually not this system, use dummy binding - * hooks. - */ - - if (topology->flags & HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM) - topology->is_thissystem = 1; - - if (topology->is_thissystem) { -# ifdef HWLOC_LINUX_SYS - hwloc_set_linux_hooks(topology); -# endif /* HWLOC_LINUX_SYS */ - -# ifdef HWLOC_AIX_SYS - hwloc_set_aix_hooks(topology); -# endif /* HWLOC_AIX_SYS */ - -# ifdef HWLOC_OSF_SYS - hwloc_set_osf_hooks(topology); -# endif /* HWLOC_OSF_SYS */ - -# ifdef HWLOC_SOLARIS_SYS - hwloc_set_solaris_hooks(topology); -# endif /* HWLOC_SOLARIS_SYS */ - -# ifdef HWLOC_WIN_SYS - hwloc_set_windows_hooks(topology); -# endif /* HWLOC_WIN_SYS */ - -# ifdef HWLOC_DARWIN_SYS - hwloc_set_darwin_hooks(topology); -# endif /* HWLOC_DARWIN_SYS */ - -# ifdef HWLOC_FREEBSD_SYS - hwloc_set_freebsd_hooks(topology); -# endif /* HWLOC_FREEBSD_SYS */ - -# ifdef HWLOC_HPUX_SYS - hwloc_set_hpux_hooks(topology); -# endif /* HWLOC_HPUX_SYS */ - } else { - topology->set_thisproc_cpubind = dontset_thisproc_cpubind; - topology->get_thisproc_cpubind = dontget_thisproc_cpubind; - topology->set_thisthread_cpubind = dontset_thisthread_cpubind; - topology->get_thisthread_cpubind = dontget_thisthread_cpubind; - topology->set_proc_cpubind = dontset_proc_cpubind; - topology->get_proc_cpubind = dontget_proc_cpubind; -#ifdef hwloc_thread_t - topology->set_thread_cpubind = dontset_thread_cpubind; - topology->get_thread_cpubind = dontget_thread_cpubind; -#endif - topology->get_thisproc_last_cpu_location = dontget_thisproc_cpubind; /* cpubind instead of last_cpu_location is ok */ - topology->get_thisthread_last_cpu_location = dontget_thisthread_cpubind; /* cpubind instead of last_cpu_location is ok */ - topology->get_proc_last_cpu_location = dontget_proc_cpubind; /* cpubind instead of last_cpu_location is ok */ - /* TODO: get_thread_last_cpu_location */ - topology->set_thisproc_membind = dontset_thisproc_membind; - topology->get_thisproc_membind = dontget_thisproc_membind; - topology->set_thisthread_membind = dontset_thisthread_membind; - topology->get_thisthread_membind = dontget_thisthread_membind; - topology->set_proc_membind = dontset_proc_membind; - topology->get_proc_membind = dontget_proc_membind; - topology->set_area_membind = dontset_area_membind; - topology->get_area_membind = dontget_area_membind; - topology->alloc_membind = dontalloc_membind; - topology->free_membind = dontfree_membind; - } - - /* if not is_thissystem, set_cpubind is fake - * and get_cpubind returns the whole system cpuset, - * so don't report that set/get_cpubind as supported - */ - if (topology->is_thissystem) { -#define DO(which,kind) \ - if (topology->kind) \ - topology->support.which##bind->kind = 1; - DO(cpu,set_thisproc_cpubind); - DO(cpu,get_thisproc_cpubind); - DO(cpu,set_proc_cpubind); - DO(cpu,get_proc_cpubind); - DO(cpu,set_thisthread_cpubind); - DO(cpu,get_thisthread_cpubind); - DO(cpu,set_thread_cpubind); - DO(cpu,get_thread_cpubind); - DO(cpu,get_thisproc_last_cpu_location); - DO(cpu,get_proc_last_cpu_location); - DO(cpu,get_thisthread_last_cpu_location); - DO(mem,set_thisproc_membind); - DO(mem,get_thisproc_membind); - DO(mem,set_thisthread_membind); - DO(mem,get_thisthread_membind); - DO(mem,set_proc_membind); - DO(mem,get_proc_membind); - DO(mem,set_area_membind); - DO(mem,get_area_membind); - DO(mem,alloc_membind); - } - - return 0; -} - -/* To be before discovery is actually launched, - * Resets everything in case a previous load initialized some stuff. - */ -static void -hwloc_topology_setup_defaults(struct hwloc_topology *topology) -{ - struct hwloc_obj *root_obj; - - /* reset support */ - topology->set_thisproc_cpubind = NULL; - topology->get_thisproc_cpubind = NULL; - topology->set_thisthread_cpubind = NULL; - topology->get_thisthread_cpubind = NULL; - topology->set_proc_cpubind = NULL; - topology->get_proc_cpubind = NULL; -#ifdef hwloc_thread_t - topology->set_thread_cpubind = NULL; - topology->get_thread_cpubind = NULL; -#endif - topology->set_thisproc_membind = NULL; - topology->get_thisproc_membind = NULL; - topology->set_thisthread_membind = NULL; - topology->get_thisthread_membind = NULL; - topology->set_proc_membind = NULL; - topology->get_proc_membind = NULL; - topology->set_area_membind = NULL; - topology->get_area_membind = NULL; - topology->alloc = NULL; - topology->alloc_membind = NULL; - topology->free_membind = NULL; - memset(topology->support.discovery, 0, sizeof(*topology->support.discovery)); - memset(topology->support.cpubind, 0, sizeof(*topology->support.cpubind)); - memset(topology->support.membind, 0, sizeof(*topology->support.membind)); - - /* Only the System object on top by default */ - topology->nb_levels = 1; /* there's at least SYSTEM */ - topology->next_group_depth = 0; - topology->levels[0] = malloc (sizeof (struct hwloc_obj)); - topology->level_nbobjects[0] = 1; - /* NULLify other levels so that we can detect and free old ones in hwloc_connect_levels() if needed */ - memset(topology->levels+1, 0, (HWLOC_DEPTH_MAX-1)*sizeof(*topology->levels)); - - /* Create the actual machine object, but don't touch its attributes yet - * since the OS backend may still change the object into something else - * (for instance System) - */ - root_obj = hwloc_alloc_setup_object(HWLOC_OBJ_MACHINE, 0); - root_obj->depth = 0; - root_obj->logical_index = 0; - root_obj->sibling_rank = 0; - topology->levels[0][0] = root_obj; -} - -int -hwloc_topology_init (struct hwloc_topology **topologyp) -{ - struct hwloc_topology *topology; - int i; - - topology = malloc (sizeof (struct hwloc_topology)); - if(!topology) - return -1; - - /* Setup topology context */ - topology->is_loaded = 0; - topology->flags = 0; - topology->is_thissystem = 1; - topology->backend_type = HWLOC_BACKEND_NONE; /* backend not specified by default */ - topology->pid = 0; - - topology->support.discovery = malloc(sizeof(*topology->support.discovery)); - topology->support.cpubind = malloc(sizeof(*topology->support.cpubind)); - topology->support.membind = malloc(sizeof(*topology->support.membind)); - - /* Only ignore useless cruft by default */ - for(i=0; i< HWLOC_OBJ_TYPE_MAX; i++) - topology->ignored_types[i] = HWLOC_IGNORE_TYPE_NEVER; - topology->ignored_types[HWLOC_OBJ_GROUP] = HWLOC_IGNORE_TYPE_KEEP_STRUCTURE; - - hwloc_topology_distances_init(topology); - - /* Make the topology look like something coherent but empty */ - hwloc_topology_setup_defaults(topology); - - *topologyp = topology; - return 0; -} - -static void -hwloc_backend_exit(struct hwloc_topology *topology) -{ - switch (topology->backend_type) { -#ifdef HWLOC_LINUX_SYS - case HWLOC_BACKEND_SYSFS: - hwloc_backend_sysfs_exit(topology); - break; -#endif -#ifdef HWLOC_HAVE_XML - case HWLOC_BACKEND_XML: - hwloc_backend_xml_exit(topology); - break; -#endif - case HWLOC_BACKEND_SYNTHETIC: - hwloc_backend_synthetic_exit(topology); - break; - default: - break; - } - - assert(topology->backend_type == HWLOC_BACKEND_NONE); -} - -int -hwloc_topology_set_fsroot(struct hwloc_topology *topology, const char *fsroot_path __hwloc_attribute_unused) -{ - /* cleanup existing backend */ - hwloc_backend_exit(topology); - -#ifdef HWLOC_LINUX_SYS - if (hwloc_backend_sysfs_init(topology, fsroot_path) < 0) - return -1; -#endif /* HWLOC_LINUX_SYS */ - - return 0; -} - -int -hwloc_topology_set_pid(struct hwloc_topology *topology __hwloc_attribute_unused, - hwloc_pid_t pid __hwloc_attribute_unused) -{ -#ifdef HWLOC_LINUX_SYS - topology->pid = pid; - return 0; -#else /* HWLOC_LINUX_SYS */ - errno = ENOSYS; - return -1; -#endif /* HWLOC_LINUX_SYS */ -} - -int -hwloc_topology_set_synthetic(struct hwloc_topology *topology, const char *description) -{ - /* cleanup existing backend */ - hwloc_backend_exit(topology); - - return hwloc_backend_synthetic_init(topology, description); -} - -int -hwloc_topology_set_xml(struct hwloc_topology *topology __hwloc_attribute_unused, - const char *xmlpath __hwloc_attribute_unused) -{ -#ifdef HWLOC_HAVE_XML - /* cleanup existing backend */ - hwloc_backend_exit(topology); - - return hwloc_backend_xml_init(topology, xmlpath, NULL, 0); -#else /* HWLOC_HAVE_XML */ - errno = ENOSYS; - return -1; -#endif /* !HWLOC_HAVE_XML */ -} - -int -hwloc_topology_set_xmlbuffer(struct hwloc_topology *topology __hwloc_attribute_unused, - const char *xmlbuffer __hwloc_attribute_unused, - int size __hwloc_attribute_unused) -{ -#ifdef HWLOC_HAVE_XML - /* cleanup existing backend */ - hwloc_backend_exit(topology); - - return hwloc_backend_xml_init(topology, NULL, xmlbuffer, size); -#else /* HWLOC_HAVE_XML */ - errno = ENOSYS; - return -1; -#endif /* !HWLOC_HAVE_XML */ -} - -int -hwloc_topology_set_flags (struct hwloc_topology *topology, unsigned long flags) -{ - topology->flags = flags; - return 0; -} - -int -hwloc_topology_ignore_type(struct hwloc_topology *topology, hwloc_obj_type_t type) -{ - if (type >= HWLOC_OBJ_TYPE_MAX) { - errno = EINVAL; - return -1; - } - - if (type == HWLOC_OBJ_PU) { - /* we need the PU level */ - errno = EINVAL; - return -1; - } - - topology->ignored_types[type] = HWLOC_IGNORE_TYPE_ALWAYS; - return 0; -} - -int -hwloc_topology_ignore_type_keep_structure(struct hwloc_topology *topology, hwloc_obj_type_t type) -{ - if (type >= HWLOC_OBJ_TYPE_MAX) { - errno = EINVAL; - return -1; - } - - if (type == HWLOC_OBJ_PU) { - /* we need the PU level */ - errno = EINVAL; - return -1; - } - - topology->ignored_types[type] = HWLOC_IGNORE_TYPE_KEEP_STRUCTURE; - return 0; -} - -int -hwloc_topology_ignore_all_keep_structure(struct hwloc_topology *topology) -{ - unsigned type; - for(type=0; type<HWLOC_OBJ_TYPE_MAX; type++) - if (type != HWLOC_OBJ_PU) - topology->ignored_types[type] = HWLOC_IGNORE_TYPE_KEEP_STRUCTURE; - return 0; -} - -static void -hwloc_topology_clear_tree (struct hwloc_topology *topology, struct hwloc_obj *root) -{ - unsigned i; - for(i=0; i<root->arity; i++) - hwloc_topology_clear_tree (topology, root->children[i]); - hwloc_free_unlinked_object (root); -} - -static void -hwloc_topology_clear (struct hwloc_topology *topology) -{ - unsigned l; - hwloc_topology_distances_clear(topology); - hwloc_topology_clear_tree (topology, topology->levels[0][0]); - for (l=0; l<topology->nb_levels; l++) - free(topology->levels[l]); -} - -void -hwloc_topology_destroy (struct hwloc_topology *topology) -{ - hwloc_topology_clear(topology); - hwloc_topology_distances_destroy(topology); - hwloc_backend_exit(topology); - free(topology->support.discovery); - free(topology->support.cpubind); - free(topology->support.membind); - free(topology); -} - -int -hwloc_topology_load (struct hwloc_topology *topology) -{ - char *local_env; - int err; - - if (topology->is_loaded) { - hwloc_topology_clear(topology); - hwloc_topology_setup_defaults(topology); - topology->is_loaded = 0; - } - - /* enforce backend anyway if a FORCE variable was given */ -#ifdef HWLOC_LINUX_SYS - { - char *fsroot_path_env = getenv("HWLOC_FORCE_FSROOT"); - if (fsroot_path_env) { - hwloc_backend_exit(topology); - hwloc_backend_sysfs_init(topology, fsroot_path_env); - } - } -#endif -#ifdef HWLOC_HAVE_XML - { - char *xmlpath_env = getenv("HWLOC_FORCE_XMLFILE"); - if (xmlpath_env) { - hwloc_backend_exit(topology); - hwloc_backend_xml_init(topology, xmlpath_env, NULL, 0); - } - } -#endif - - /* only apply non-FORCE variables if we have not changed the backend yet */ -#ifdef HWLOC_LINUX_SYS - if (topology->backend_type == HWLOC_BACKEND_NONE) { - char *fsroot_path_env = getenv("HWLOC_FSROOT"); - if (fsroot_path_env) - hwloc_backend_sysfs_init(topology, fsroot_path_env); - } -#endif -#ifdef HWLOC_HAVE_XML - if (topology->backend_type == HWLOC_BACKEND_NONE) { - char *xmlpath_env = getenv("HWLOC_XMLFILE"); - if (xmlpath_env) - hwloc_backend_xml_init(topology, xmlpath_env, NULL, 0); - } -#endif - - /* always apply non-FORCE THISSYSTEM since it was explicitly designed to override setups from other backends */ - local_env = getenv("HWLOC_THISSYSTEM"); - if (local_env) - topology->is_thissystem = atoi(local_env); - - /* if we haven't chosen the backend, set the OS-specific one if needed */ - if (topology->backend_type == HWLOC_BACKEND_NONE) { -#ifdef HWLOC_LINUX_SYS - if (hwloc_backend_sysfs_init(topology, "/") < 0) - return -1; -#endif - } - - /* get distance matrix from the environment are store them (as indexes) in the topology. - * indexes will be converted into objects later once the tree will be filled - */ - hwloc_store_distances_from_env(topology); - - /* actual topology discovery */ - err = hwloc_discover(topology); - if (err < 0) - return err; - - /* enforce THISSYSTEM if given in a FORCE variable */ - local_env = getenv("HWLOC_FORCE_THISSYSTEM"); - if (local_env) - topology->is_thissystem = atoi(local_env); - -#ifndef HWLOC_DEBUG - if (getenv("HWLOC_DEBUG_CHECK")) -#endif - hwloc_topology_check(topology); - - topology->is_loaded = 1; - return 0; -} - -int -hwloc_topology_restrict(struct hwloc_topology *topology, hwloc_const_cpuset_t cpuset, unsigned long flags) -{ - hwloc_bitmap_t droppedcpuset, droppednodeset; - - /* make sure we'll keep something in the topology */ - if (!hwloc_bitmap_intersects(cpuset, topology->levels[0][0]->cpuset)) { - errno = EINVAL; - return -1; - } - - droppedcpuset = hwloc_bitmap_alloc(); - droppednodeset = hwloc_bitmap_alloc(); - - /* drop object based on the reverse of cpuset, and fill the 'dropped' nodeset */ - hwloc_bitmap_not(droppedcpuset, cpuset); - restrict_object(topology, flags, &topology->levels[0][0], droppedcpuset, droppednodeset, 0 /* root cannot be removed */); - /* update nodesets according to dropped nodeset */ - restrict_object_nodeset(topology, &topology->levels[0][0], droppednodeset); - - hwloc_bitmap_free(droppedcpuset); - hwloc_bitmap_free(droppednodeset); - - hwloc_connect_children(topology->levels[0][0]); - hwloc_connect_levels(topology); - propagate_total_memory(topology->levels[0][0]); - hwloc_restrict_distances(topology, flags); - hwloc_convert_distances_indexes_into_objects(topology); - hwloc_finalize_logical_distances(topology); - return 0; -} - -int -hwloc_topology_is_thissystem(struct hwloc_topology *topology) -{ - return topology->is_thissystem; -} - -unsigned -hwloc_topology_get_depth(struct hwloc_topology *topology) -{ - return topology->nb_levels; -} - -/* check children between a parent object */ -static void -hwloc__check_children(struct hwloc_obj *parent) -{ - hwloc_bitmap_t remaining_parent_set; - unsigned j; - - if (!parent->arity) { - /* check whether that parent has no children for real */ - assert(!parent->children); - assert(!parent->first_child); - assert(!parent->last_child); - return; - } - /* check whether that parent has children for real */ - assert(parent->children); - assert(parent->first_child); - assert(parent->last_child); - - /* first child specific checks */ - assert(parent->first_child->sibling_rank == 0); - assert(parent->first_child == parent->children[0]); - assert(parent->first_child->prev_sibling == NULL); - - /* last child specific checks */ - assert(parent->last_child->sibling_rank == parent->arity-1); - assert(parent->last_child == parent->children[parent->arity-1]); - assert(parent->last_child->next_sibling == NULL); - - if (parent->cpuset) { - remaining_parent_set = hwloc_bitmap_dup(parent->cpuset); - for(j=0; j<parent->arity; j++) { - if (!parent->children[j]->cpuset) - continue; - /* check that child cpuset is included in the parent */ - assert(hwloc_bitmap_isincluded(parent->children[j]->cpuset, remaining_parent_set)); -#if !defined(NDEBUG) - /* check that children are correctly ordered (see below), empty ones may be anywhere */ - if (!hwloc_bitmap_iszero(parent->children[j]->cpuset)) { - int firstchild = hwloc_bitmap_first(parent->children[j]->cpuset); - int firstparent = hwloc_bitmap_first(remaining_parent_set); - assert(firstchild == firstparent); - } -#endif - /* clear previously used parent cpuset bits so that we actually checked above - * that children cpusets do not intersect and are ordered properly - */ - hwloc_bitmap_andnot(remaining_parent_set, remaining_parent_set, parent->children[j]->cpuset); - } - assert(hwloc_bitmap_iszero(remaining_parent_set)); - hwloc_bitmap_free(remaining_parent_set); - } - - /* checks for all children */ - for(j=1; j<parent->arity; j++) { - assert(parent->children[j]->sibling_rank == j); - assert(parent->children[j-1]->next_sibling == parent->children[j]); - assert(parent->children[j]->prev_sibling == parent->children[j-1]); - } -} - -/* check a whole topology structure */ -void -hwloc_topology_check(struct hwloc_topology *topology) -{ - struct hwloc_obj *obj; - hwloc_obj_type_t type; - unsigned i, j, depth; - - /* check type orders */ - for (type = HWLOC_OBJ_SYSTEM; type < HWLOC_OBJ_TYPE_MAX; type++) { - assert(hwloc_get_order_type(hwloc_get_type_order(type)) == type); - } - for (i = hwloc_get_type_order(HWLOC_OBJ_SYSTEM); - i <= hwloc_get_type_order(HWLOC_OBJ_CORE); i++) { - assert(i == hwloc_get_type_order(hwloc_get_order_type(i))); - } - - /* check that last level is PU */ - assert(hwloc_get_depth_type(topology, hwloc_topology_get_depth(topology)-1) == HWLOC_OBJ_PU); - /* check that other levels are not PU */ - for(i=1; i<hwloc_topology_get_depth(topology)-1; i++) - assert(hwloc_get_depth_type(topology, i) != HWLOC_OBJ_PU); - - /* top-level specific checks */ - assert(hwloc_get_nbobjs_by_depth(topology, 0) == 1); - obj = hwloc_get_root_obj(topology); - assert(obj); - - depth = hwloc_topology_get_depth(topology); - - /* check each level */ - for(i=0; i<depth; i++) { - unsigned width = hwloc_get_nbobjs_by_depth(topology, i); - struct hwloc_obj *prev = NULL; - - /* check each object of the level */ - for(j=0; j<width; j++) { - obj = hwloc_get_obj_by_depth(topology, i, j); - /* check that the object is corrected placed horizontally and vertically */ - assert(obj); - assert(obj->depth == i); - assert(obj->logical_index == j); - /* check that all objects in the level have the same type */ - if (prev) { - assert(hwloc_type_cmp(obj, prev) == HWLOC_TYPE_EQUAL); - assert(prev->next_cousin == obj); - assert(obj->prev_cousin == prev); - } - if (obj->complete_cpuset) { - if (obj->cpuset) - assert(hwloc_bitmap_isincluded(obj->cpuset, obj->complete_cpuset)); - if (obj->online_cpuset) - assert(hwloc_bitmap_isincluded(obj->online_cpuset, obj->complete_cpuset)); - if (obj->allowed_cpuset) - assert(hwloc_bitmap_isincluded(obj->allowed_cpuset, obj->complete_cpuset)); - } - if (obj->complete_nodeset) { - if (obj->nodeset) - assert(hwloc_bitmap_isincluded(obj->nodeset, obj->complete_nodeset)); - if (obj->allowed_nodeset) - assert(hwloc_bitmap_isincluded(obj->allowed_nodeset, obj->complete_nodeset)); - } - /* check children */ - hwloc__check_children(obj); - prev = obj; - } - - /* check first object of the level */ - obj = hwloc_get_obj_by_depth(topology, i, 0); - assert(obj); - assert(!obj->prev_cousin); - - /* check type */ - assert(hwloc_get_depth_type(topology, i) == obj->type); - assert(i == (unsigned) hwloc_get_type_depth(topology, obj->type) || - HWLOC_TYPE_DEPTH_MULTIPLE == hwloc_get_type_depth(topology, obj->type)); - - /* check last object of the level */ - obj = hwloc_get_obj_by_depth(topology, i, width-1); - assert(obj); - assert(!obj->next_cousin); - - /* check last+1 object of the level */ - obj = hwloc_get_obj_by_depth(topology, i, width); - assert(!obj); - } - - /* check bottom objects */ - assert(hwloc_get_nbobjs_by_depth(topology, depth-1) > 0); - for(j=0; j<hwloc_get_nbobjs_by_depth(topology, depth-1); j++) { - obj = hwloc_get_obj_by_depth(topology, depth-1, j); - assert(obj); - /* bottom-level object must always be PU */ - assert(obj->type == HWLOC_OBJ_PU); - } -} - -const struct hwloc_topology_support * -hwloc_topology_get_support(struct hwloc_topology * topology) -{ - return &topology->support; -} diff --git a/hwloc-1.2.1/src/traversal.c b/hwloc-1.2.1/src/traversal.c deleted file mode 100644 index eb6617a8..00000000 --- a/hwloc-1.2.1/src/traversal.c +++ /dev/null @@ -1,350 +0,0 @@ -/* - * Copyright © 2009 CNRS - * Copyright © 2009-2011 INRIA. All rights reserved. - * Copyright © 2009-2010 Université Bordeaux 1 - * Copyright © 2009-2011 Cisco Systems, Inc. All rights reserved. - * See COPYING in top-level directory. - */ - -#include <private/autogen/config.h> -#include <hwloc.h> -#include <private/private.h> -#include <private/misc.h> -#include <private/debug.h> - -int -hwloc_get_type_depth (struct hwloc_topology *topology, hwloc_obj_type_t type) -{ - return topology->type_depth[type]; -} - -hwloc_obj_type_t -hwloc_get_depth_type (hwloc_topology_t topology, unsigned depth) -{ - if (depth >= topology->nb_levels) - return (hwloc_obj_type_t) -1; - return topology->levels[depth][0]->type; -} - -unsigned -hwloc_get_nbobjs_by_depth (struct hwloc_topology *topology, unsigned depth) -{ - if (depth >= topology->nb_levels) - return 0; - return topology->level_nbobjects[depth]; -} - -struct hwloc_obj * -hwloc_get_obj_by_depth (struct hwloc_topology *topology, unsigned depth, unsigned idx) -{ - if (depth >= topology->nb_levels) - return NULL; - if (idx >= topology->level_nbobjects[depth]) - return NULL; - return topology->levels[depth][idx]; -} - -unsigned hwloc_get_closest_objs (struct hwloc_topology *topology, struct hwloc_obj *src, struct hwloc_obj **objs, unsigned max) -{ - struct hwloc_obj *parent, *nextparent, **src_objs; - int i,src_nbobjects; - unsigned stored = 0; - - if (!src->cpuset) - return 0; - - src_nbobjects = topology->level_nbobjects[src->depth]; - src_objs = topology->levels[src->depth]; - - parent = src; - while (stored < max) { - while (1) { - nextparent = parent->parent; - if (!nextparent) - goto out; - if (!nextparent->cpuset || !hwloc_bitmap_isequal(parent->cpuset, nextparent->cpuset)) - break; - parent = nextparent; - } - - if (!nextparent->cpuset) - break; - - /* traverse src's objects and find those that are in nextparent and were not in parent */ - for(i=0; i<src_nbobjects; i++) { - if (hwloc_bitmap_isincluded(src_objs[i]->cpuset, nextparent->cpuset) - && !hwloc_bitmap_isincluded(src_objs[i]->cpuset, parent->cpuset)) { - objs[stored++] = src_objs[i]; - if (stored == max) - goto out; - } - } - parent = nextparent; - } - - out: - return stored; -} - -static int -hwloc__get_largest_objs_inside_cpuset (struct hwloc_obj *current, hwloc_const_bitmap_t set, - struct hwloc_obj ***res, int *max) -{ - int gotten = 0; - unsigned i; - - /* the caller must ensure this */ - if (*max <= 0) - return 0; - - if (hwloc_bitmap_isequal(current->cpuset, set)) { - **res = current; - (*res)++; - (*max)--; - return 1; - } - - for (i=0; i<current->arity; i++) { - hwloc_bitmap_t subset = hwloc_bitmap_dup(set); - int ret; - - /* split out the cpuset part corresponding to this child and see if there's anything to do */ - if (current->children[i]->cpuset) { - hwloc_bitmap_and(subset, subset, current->children[i]->cpuset); - if (hwloc_bitmap_iszero(subset)) { - hwloc_bitmap_free(subset); - continue; - } - } - - ret = hwloc__get_largest_objs_inside_cpuset (current->children[i], subset, res, max); - gotten += ret; - hwloc_bitmap_free(subset); - - /* if no more room to store remaining objects, return what we got so far */ - if (!*max) - break; - } - - return gotten; -} - -int -hwloc_get_largest_objs_inside_cpuset (struct hwloc_topology *topology, hwloc_const_bitmap_t set, - struct hwloc_obj **objs, int max) -{ - struct hwloc_obj *current = topology->levels[0][0]; - - if (!current->cpuset || !hwloc_bitmap_isincluded(set, current->cpuset)) - return -1; - - if (max <= 0) - return 0; - - return hwloc__get_largest_objs_inside_cpuset (current, set, &objs, &max); -} - -const char * -hwloc_obj_type_string (hwloc_obj_type_t obj) -{ - switch (obj) - { - case HWLOC_OBJ_SYSTEM: return "System"; - case HWLOC_OBJ_MACHINE: return "Machine"; - case HWLOC_OBJ_MISC: return "Misc"; - case HWLOC_OBJ_GROUP: return "Group"; - case HWLOC_OBJ_NODE: return "NUMANode"; - case HWLOC_OBJ_SOCKET: return "Socket"; - case HWLOC_OBJ_CACHE: return "Cache"; - case HWLOC_OBJ_CORE: return "Core"; - case HWLOC_OBJ_PU: return "PU"; - default: return "Unknown"; - } -} - -hwloc_obj_type_t -hwloc_obj_type_of_string (const char * string) -{ - if (!strcasecmp(string, "System")) return HWLOC_OBJ_SYSTEM; - if (!strcasecmp(string, "Machine")) return HWLOC_OBJ_MACHINE; - if (!strcasecmp(string, "Misc")) return HWLOC_OBJ_MISC; - if (!strcasecmp(string, "Group")) return HWLOC_OBJ_GROUP; - if (!strcasecmp(string, "NUMANode") || !strcasecmp(string, "Node")) return HWLOC_OBJ_NODE; - if (!strcasecmp(string, "Socket")) return HWLOC_OBJ_SOCKET; - if (!strcasecmp(string, "Cache")) return HWLOC_OBJ_CACHE; - if (!strcasecmp(string, "Core")) return HWLOC_OBJ_CORE; - if (!strcasecmp(string, "PU") || !strcasecmp(string, "proc") /* backward compatiliby with 0.9 */) return HWLOC_OBJ_PU; - return (hwloc_obj_type_t) -1; -} - -#define hwloc_memory_size_printf_value(_size, _verbose) \ - ((_size) < (10ULL<<20) || _verbose ? (((_size)>>9)+1)>>1 : (_size) < (10ULL<<30) ? (((_size)>>19)+1)>>1 : (((_size)>>29)+1)>>1) -#define hwloc_memory_size_printf_unit(_size, _verbose) \ - ((_size) < (10ULL<<20) || _verbose ? "KB" : (_size) < (10ULL<<30) ? "MB" : "GB") - -int -hwloc_obj_type_snprintf(char * __hwloc_restrict string, size_t size, hwloc_obj_t obj, int verbose) -{ - hwloc_obj_type_t type = obj->type; - switch (type) { - case HWLOC_OBJ_MISC: - case HWLOC_OBJ_SYSTEM: - case HWLOC_OBJ_MACHINE: - case HWLOC_OBJ_NODE: - case HWLOC_OBJ_SOCKET: - case HWLOC_OBJ_CORE: - case HWLOC_OBJ_PU: - return hwloc_snprintf(string, size, "%s", hwloc_obj_type_string(type)); - case HWLOC_OBJ_CACHE: - return hwloc_snprintf(string, size, "L%u%s", obj->attr->cache.depth, verbose ? hwloc_obj_type_string(type): ""); - case HWLOC_OBJ_GROUP: - /* TODO: more pretty presentation? */ - return hwloc_snprintf(string, size, "%s%u", hwloc_obj_type_string(type), obj->attr->group.depth); - default: - if (size > 0) - *string = '\0'; - return 0; - } -} - -int -hwloc_obj_attr_snprintf(char * __hwloc_restrict string, size_t size, hwloc_obj_t obj, const char * separator, int verbose) -{ - const char *prefix = ""; - char *tmp = string; - ssize_t tmplen = size; - int ret = 0; - int res; - - /* make sure we output at least an empty string */ - if (size) - *string = '\0'; - - /* print memory attributes */ - res = 0; - if (verbose) { - if (obj->memory.local_memory) - res = hwloc_snprintf(tmp, tmplen, "%slocal=%lu%s%stotal=%lu%s", - prefix, - (unsigned long) hwloc_memory_size_printf_value(obj->memory.total_memory, verbose), - hwloc_memory_size_printf_unit(obj->memory.total_memory, verbose), - separator, - (unsigned long) hwloc_memory_size_printf_value(obj->memory.local_memory, verbose), - hwloc_memory_size_printf_unit(obj->memory.local_memory, verbose)); - else if (obj->memory.total_memory) - res = hwloc_snprintf(tmp, tmplen, "%stotal=%lu%s", - prefix, - (unsigned long) hwloc_memory_size_printf_value(obj->memory.total_memory, verbose), - hwloc_memory_size_printf_unit(obj->memory.total_memory, verbose)); - } else { - if (obj->memory.total_memory) - res = hwloc_snprintf(tmp, tmplen, "%s%lu%s", - prefix, - (unsigned long) hwloc_memory_size_printf_value(obj->memory.total_memory, verbose), - hwloc_memory_size_printf_unit(obj->memory.total_memory, verbose)); - } - if (res < 0) - return -1; - ret += res; - if (ret > 0) - prefix = separator; - if (res >= tmplen) - res = tmplen>0 ? tmplen - 1 : 0; - tmp += res; - tmplen -= res; - - /* printf type-specific attributes */ - res = 0; - switch (obj->type) { - case HWLOC_OBJ_CACHE: - if (verbose) - res = hwloc_snprintf(tmp, tmplen, "%s%lu%s%sline=%u", - prefix, - (unsigned long) hwloc_memory_size_printf_value(obj->attr->cache.size, verbose), - hwloc_memory_size_printf_unit(obj->attr->cache.size, verbose), - separator, obj->attr->cache.linesize); - else - res = hwloc_snprintf(tmp, tmplen, "%s%lu%s", - prefix, - (unsigned long) hwloc_memory_size_printf_value(obj->attr->cache.size, verbose), - hwloc_memory_size_printf_unit(obj->attr->cache.size, verbose)); - break; - default: - break; - } - if (res < 0) - return -1; - ret += res; - if (ret > 0) - prefix = separator; - if (res >= tmplen) - res = tmplen>0 ? tmplen - 1 : 0; - tmp += res; - tmplen -= res; - - /* printf infos */ - if (verbose) { - unsigned i; - for(i=0; i<obj->infos_count; i++) { - if (strchr(obj->infos[i].value, ' ')) - res = hwloc_snprintf(tmp, tmplen, "%s%s=\"%s\"", - prefix, - obj->infos[i].name, obj->infos[i].value); - else - res = hwloc_snprintf(tmp, tmplen, "%s%s=%s", - prefix, - obj->infos[i].name, obj->infos[i].value); - if (res < 0) - return -1; - ret += res; - if (res >= tmplen) - res = tmplen>0 ? tmplen - 1 : 0; - tmp += res; - tmplen -= res; - if (ret > 0) - prefix = separator; - } - } - - return ret; -} - - -int -hwloc_obj_snprintf(char *string, size_t size, - struct hwloc_topology *topology __hwloc_attribute_unused, struct hwloc_obj *l, const char *_indexprefix, int verbose) -{ - const char *indexprefix = _indexprefix ? _indexprefix : "#"; - char os_index[12] = ""; - char type[64]; - char attr[128]; - int attrlen; - - if (l->os_index != (unsigned) -1) { - hwloc_snprintf(os_index, 12, "%s%u", indexprefix, l->os_index); - } - - hwloc_obj_type_snprintf(type, sizeof(type), l, verbose); - attrlen = hwloc_obj_attr_snprintf(attr, sizeof(attr), l, " ", verbose); - - if (attrlen > 0) - return hwloc_snprintf(string, size, "%s%s(%s)", type, os_index, attr); - else - return hwloc_snprintf(string, size, "%s%s", type, os_index); -} - -int hwloc_obj_cpuset_snprintf(char *str, size_t size, size_t nobj, struct hwloc_obj * const *objs) -{ - hwloc_bitmap_t set = hwloc_bitmap_alloc(); - int res; - unsigned i; - - hwloc_bitmap_zero(set); - for(i=0; i<nobj; i++) - if (objs[i]->cpuset) - hwloc_bitmap_or(set, set, objs[i]->cpuset); - - res = hwloc_bitmap_snprintf(str, size, set); - hwloc_bitmap_free(set); - return res; -} |