diff --git a/Makefile.am b/Makefile.am index 28157735..f18d8d63 100644 --- a/Makefile.am +++ b/Makefile.am @@ -60,10 +60,19 @@ src_libcodes_la_SOURCES += src/workload/methods/codes-recorder-io-wrkld.c endif if USE_ONLINE -AM_CPPFLAGS += ${ARGOBOTS_CFLAGS} ${SWM_CFLAGS} -DUSE_ONLINE=1 -LDADD += ${SWM_LIBS} ${ARGOBOTS_LIBS} +AM_CPPFLAGS += ${ARGOBOTS_CFLAGS} -DUSE_ONLINE=1 +LDADD += ${ARGOBOTS_LIBS} +if USE_SWM +AM_CPPFLAGS += ${SWM_CFLAGS} -DUSE_SWM=1 +LDADD += ${SWM_LIBS} src_libcodes_la_SOURCES += src/workload/methods/codes-online-comm-wrkld.C endif +if USE_UNION +src_libcodes_la_SOURCES += src/workload/methods/codes-conc-online-comm-wrkld.C +AM_CPPFLAGS += ${UNION_CFLAGS} ${SWM_CFLAGS} -DUSE_UNION=1 +LDADD += ${UNION_LIBS} ${SWM_LIBS} +endif +endif if USE_DUMPI AM_CPPFLAGS += ${DUMPI_CFLAGS} -DUSE_DUMPI=1 diff --git a/codes/model-net.h b/codes/model-net.h index 577ae5ae..f2c5d960 100644 --- a/codes/model-net.h +++ b/codes/model-net.h @@ -143,7 +143,7 @@ typedef struct model_net_request { int self_event_size; char category[CATEGORY_NAME_MAX]; - //for counting msg app id + //Xin: passing app id to routers int app_id; } model_net_request; diff --git a/codes/net/dragonfly-custom.h b/codes/net/dragonfly-custom.h index 96875f1d..af38d98f 100644 --- a/codes/net/dragonfly-custom.h +++ b/codes/net/dragonfly-custom.h @@ -87,6 +87,14 @@ struct terminal_custom_message tw_stime msg_start_time; tw_stime saved_busy_time_ross; tw_stime saved_fin_chunks_ross; + + //Yao: for counting msg app id + int app_id; + tw_stime last_received_time; + tw_stime last_sent_time; + //Xin: for busy time recording + tw_stime last_bufupdate_time; + }; #ifdef __cplusplus diff --git a/codes/net/dragonfly-dally.h b/codes/net/dragonfly-dally.h index 9f89f60b..2c2d6350 100644 --- a/codes/net/dragonfly-dally.h +++ b/codes/net/dragonfly-dally.h @@ -118,6 +118,14 @@ struct terminal_dally_message tw_stime msg_start_time; tw_stime saved_busy_time_ross; tw_stime saved_fin_chunks_ross; + + //Yao: for counting msg app id + tw_stime last_received_time; + tw_stime last_sent_time; + + //Xin: for busy time recording + tw_stime last_bufupdate_time; + }; #ifdef __cplusplus diff --git a/codes_config.h.in b/codes_config.h.in index 82554a42..c3853929 100644 --- a/codes_config.h.in +++ b/codes_config.h.in @@ -1,18 +1,173 @@ +/* codes_config.h.in. Generated from configure.ac by autoheader. */ +/* define if the Boost library is available */ +#undef HAVE_BOOST +/* define if the compiler supports basic C++11 syntax */ +#undef HAVE_CXX11 -// ross +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H -// dumpi +/* Define to 1 if you have the header file. */ +#undef HAVE_EXECINFO_H -// swm -#define SWM_DATAROOTDIR "${SWM_DATAROOTDIR}" +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H +/* Define to 1 if you have the `m' library (-lm). */ +#undef HAVE_LIBM -// damaris +/* Define to 1 if you have the `pthread' library (-lpthread). */ +#undef HAVE_LIBPTHREAD +/* Define to 1 if you have the `undumpi' library (-lundumpi). */ +#undef HAVE_LIBUNDUMPI -// darshan +/* Define to 1 if you have the header file. */ +#undef HAVE_MALLOC_H +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H -// cortex \ No newline at end of file +/* Define to 1 if you have the `memset' function. */ +#undef HAVE_MEMSET + +/* Define to 1 if you have the header file. */ +#undef HAVE_PTHREAD_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* If old-style pure reentrant parser syntax is supported by ${YACC} */ +#undef HAVE_YACC_OLD_PURE + +/* If old-style push parser syntax is supported by ${YACC} */ +#undef HAVE_YACC_OLD_PUSH + +/* 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 + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* if using json data files */ +#undef SWM_DATAROOTDIR + +/* if using json data files */ +#undef UNION_DATADIR + +/* If enabling valgrind-clean build */ +#undef VALGRIND + +/* Version number of package */ +#undef VERSION + +/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a + `char[]'. */ +#undef YYTEXT_POINTER + +/* Define for Solaris 2.5.1 so the uint32_t typedef from , + , or is not used. If the typedef were allowed, the + #define below would cause a syntax error. */ +#undef _UINT32_T + +/* Define for Solaris 2.5.1 so the uint64_t typedef from , + , or is not used. If the typedef were allowed, the + #define below would cause a syntax error. */ +#undef _UINT64_T + +/* Define for Solaris 2.5.1 so the uint8_t typedef from , + , or is not used. If the typedef were allowed, the + #define below would cause a syntax error. */ +#undef _UINT8_T + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to the type of a signed integer type of width exactly 16 bits if + such a type exists and the standard includes do not define it. */ +#undef int16_t + +/* Define to the type of a signed integer type of width exactly 32 bits if + such a type exists and the standard includes do not define it. */ +#undef int32_t + +/* Define to the type of a signed integer type of width exactly 64 bits if + such a type exists and the standard includes do not define it. */ +#undef int64_t + +/* Define to the type of a signed integer type of width exactly 8 bits if such + a type exists and the standard includes do not define it. */ +#undef int8_t + +/* Define to `unsigned int' if does not define. */ +#undef size_t + +/* Define to `int' if does not define. */ +#undef ssize_t + +/* Define to the type of an unsigned integer type of width exactly 16 bits if + such a type exists and the standard includes do not define it. */ +#undef uint16_t + +/* Define to the type of an unsigned integer type of width exactly 32 bits if + such a type exists and the standard includes do not define it. */ +#undef uint32_t + +/* Define to the type of an unsigned integer type of width exactly 64 bits if + such a type exists and the standard includes do not define it. */ +#undef uint64_t + +/* Define to the type of an unsigned integer type of width exactly 8 bits if + such a type exists and the standard includes do not define it. */ +#undef uint8_t diff --git a/configure.ac b/configure.ac index 1a40e40d..2c4b7fea 100755 --- a/configure.ac +++ b/configure.ac @@ -113,27 +113,55 @@ if test "x${use_darshan}" = xyes ; then fi AM_CONDITIONAL(USE_DARSHAN, [test "x${use_darshan}" = xyes]) - # check for Argobots AC_ARG_WITH([online],[AS_HELP_STRING([--with-online@<:@=DIR@:>@], - [Build with the online workloads and argobots support])], - [use_online=yes],[use_online=no]) -if test "x${use_online}" != "xno" ; then + [Build with the online workloads and argobots support])]) +if test "x${with_online}" != "x" ; then AM_CONDITIONAL(USE_ONLINE, true) AX_BOOST_BASE([1.66]) AX_CXX_COMPILE_STDCXX(11, noext, mandatory) PKG_CHECK_MODULES_STATIC([ARGOBOTS], [argobots], [], [AC_MSG_ERROR([Could not find working argobots installation via pkg-config])]) +else + AM_CONDITIONAL(USE_ONLINE, false) +fi + +#check for SWM +AC_ARG_WITH([swm],[AS_HELP_STRING([--with-swm@<:@=DIR@:>@], + [location of SWM installation])]) +if test "x${with_swm}" != "x" ; then + AM_CONDITIONAL(USE_SWM, true) PKG_CHECK_MODULES_STATIC([SWM], [swm], [], [AC_MSG_ERROR([Could not find working swm installation via pkg-config])]) PKG_CHECK_VAR([SWM_DATAROOTDIR], [swm], [datarootdir], [], [AC_MSG_ERROR[Could not find shared directory in SWM]]) AC_DEFINE_UNQUOTED([SWM_DATAROOTDIR], ["$SWM_DATAROOTDIR"], [if using json - data files]) + data files]) else - AM_CONDITIONAL(USE_ONLINE, false) + AM_CONDITIONAL(USE_SWM, false) fi +#check for UNION +AC_ARG_WITH([union],[AS_HELP_STRING([--with-union@<:@=DIR@:>@], + [location of Union installation])]) +if test "x${with_union}" != "x" ; then + AM_CONDITIONAL(USE_UNION, true) + PKG_CHECK_MODULES_STATIC([UNION], [union], [], + [AC_MSG_ERROR([Could not find working Union installation via pkg-config])]) + PKG_CHECK_VAR([UNION_DATADIR], [union], [datarootdir], [], + [AC_MSG_ERROR[Could not find shared directory in UNION]]) + AC_DEFINE_UNQUOTED([UNION_DATADIR], ["$UNION_DATADIR"], [if using json data files]) + PKG_CHECK_MODULES_STATIC([SWM], [swm], [], + [AC_MSG_ERROR([Could not find working swm installation via pkg-config])]) + PKG_CHECK_VAR([SWM_DATAROOTDIR], [swm], [datarootdir], [], + [AC_MSG_ERROR[Could not find shared directory in SWM]]) + AC_DEFINE_UNQUOTED([SWM_DATAROOTDIR], ["$SWM_DATAROOTDIR"], [if using json + data files]) +else + AM_CONDITIONAL(USE_UNION, false) +fi + + # check for Recorder AM_CONDITIONAL(USE_RECORDER, true) RECORDER_CPPFLAGS="-DUSE_RECORDER=1" diff --git a/doc/workload/union_online_workload.txt b/doc/workload/union_online_workload.txt new file mode 100644 index 00000000..fcd9938f --- /dev/null +++ b/doc/workload/union_online_workload.txt @@ -0,0 +1,68 @@ +This document serves the following purposes: +* CODES updates to accommodate Union online simulations +* Installation tutorial +* Completed Experiments +* Known issues + += CODES updates + +The code modifications are started with comment text "Xin:" + +== Header file + +Added parameters for collecting router traffic data, including: +* codes/model-net.h +* codes/net/dragonfly-custom.h +* codes/net/dragonfly-dally.h + +== Makefile + +Added checking for Union installation in the autoconf configure script configure.ac +Added src/workload/methods/codes-conc-online-comm-wrkld.C to code base if compile with Union in Makefile.am + +== Union online workload + +We add a pluggable workload module "src/workload/methods/codes-conc-online-comm-wrkld.C" into CODES workload generator to hold the actual implementation of Union communication events, such that the messages from Union skeletons can be emitted as simulation events in CODES. + +== Router status collection for dragonfly custom and dragonfly dally + +Added supportive functions for collecting traffic data on router port on the following network models: +* dragonfly custom at src/networks/model-net/dragonfly-custom.C +* dragonfly dally at src/networks/model-net/dragonfly-dally.C + +== Updates in MPI replay + +Added Union online workload type in MPI workload replay at src/network-workloads/model-net-mpi-replay.c + +== Configurations + +We added the following items in the CODES configuration file for collecting router traffic information during simulation. + +* counting_bool - flag to enable/disable the collection of trouter traffic +* counting_start - the start time in microsecond for collecting traffic data +* counting_interval - the time window size in microsecond for collection traffic data +* counting_windows - the number of time windows for collecting traffic data +* num_apps - the number of applications in the simulation workload +* offset - supportive parameter for getting the application id of each packet + +An example configuration can be found at: https://github.com/SPEAR-IIT/Union/blob/master/test/df1d-72-adp.conf + += Installation tutorial + +Please follow the Readme at: https://github.com/SPEAR-IIT/Union to install Union and run test simulation of Union online workloads. + += Completed Experiments + +We have completed the following experiments with Union online workload simulation: +* simulate Conceptual skeletons alone +* simulate Conceptual and SWM skeletons simultaneously +* simulate Conceptual and SWM skeletons simultaneously with different synthetic traffic patterns + +The above experiments have been done on both dragonfly custom and dragonfly dally network models, with sequential mode and optimistic mode. + += Known Issues + +Currently the rendezvous protocol in MPI replay cannot work with Union online workloads. +The reverse function router_buf_update_rc() does not take care of the cross window reverses for aggregated busytime on port. + + diff --git a/m4/libtool.m4 b/m4/libtool.m4 index a6d21ae5..56666f0e 100644 --- a/m4/libtool.m4 +++ b/m4/libtool.m4 @@ -1,6 +1,8 @@ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # -# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives @@ -8,30 +10,36 @@ # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl -# Copyright (C) 2014 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 of the License, or -# (at your option) any later version. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 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. +# 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 +# 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 this program. If not, see . +# 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 58 LT_INIT +# serial 57 LT_INIT # LT_PREREQ(VERSION) @@ -59,7 +67,7 @@ esac # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], -[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK +[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 @@ -83,7 +91,7 @@ dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain +LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' @@ -103,43 +111,26 @@ dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) -# _LT_PREPARE_CC_BASENAME -# ----------------------- -m4_defun([_LT_PREPARE_CC_BASENAME], [ -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in @S|@*""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} -])# _LT_PREPARE_CC_BASENAME - - # _LT_CC_BASENAME(CC) # ------------------- -# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, -# but that macro is also expanded into generated libtool script, which -# arranges for $SED and $ECHO to be set by different means. +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], -[m4_require([_LT_PREPARE_CC_BASENAME])dnl -AC_REQUIRE([_LT_DECL_SED])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl -func_cc_basename $1 -cc_basename=$func_cc_basename_result +[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])'. +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} @@ -186,16 +177,15 @@ 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 -m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options that allow our +# 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 +if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) -if test -n "${ZSH_VERSION+set}"; then +if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi @@ -208,7 +198,7 @@ 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 set != "${COLLECT_NAMES+set}"; then + if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -219,14 +209,14 @@ esac ofile=libtool can_build_shared=yes -# All known linkers require a '.a' archive for static linking (except MSVC, +# 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 +with_gnu_ld="$lt_cv_prog_gnu_ld" -old_CC=$CC -old_CFLAGS=$CFLAGS +old_CC="$CC" +old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc @@ -279,14 +269,14 @@ no_glob_subst='s/\*/\\\*/g' # _LT_PROG_LTMAIN # --------------- -# Note that this code is called both from 'configure', and 'config.status' +# 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, +# `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 +ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN @@ -296,7 +286,7 @@ ltmain=$ac_aux_dir/ltmain.sh # 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' +# in macros and then make a single call at the end using the `libtool' # label. @@ -431,8 +421,8 @@ m4_define([_lt_decl_all_varnames], # _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 +# 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"`']) @@ -456,7 +446,7 @@ m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], # 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 +available_tags="_LT_TAGS"dnl ]) @@ -484,7 +474,7 @@ 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' +# 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], @@ -510,8 +500,8 @@ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # 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 +# 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], @@ -557,7 +547,7 @@ 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\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -570,7 +560,7 @@ 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\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -586,7 +576,7 @@ _LT_OUTPUT_LIBTOOL_INIT # 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 +# `#!' 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). @@ -608,7 +598,7 @@ AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF -test 0 = "$lt_write_fail" && chmod +x $1[]dnl +test $lt_write_fail = 0 && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT @@ -631,7 +621,7 @@ exec AS_MESSAGE_LOG_FD>>config.log } >&AS_MESSAGE_LOG_FD lt_cl_help="\ -'$as_me' creates a local libtool stub from the current configuration, +\`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. @@ -653,7 +643,7 @@ Copyright (C) 2011 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 != $[#] +while test $[#] != 0 do case $[1] in --version | --v* | -V ) @@ -666,10 +656,10 @@ do lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] -Try '$[0] --help' for more information.]) ;; +Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] -Try '$[0] --help' for more information.]) ;; +Try \`$[0] --help' for more information.]) ;; esac shift done @@ -695,7 +685,7 @@ chmod +x "$CONFIG_LT" # 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 yes = "$silent" && +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 @@ -715,46 +705,32 @@ m4_defun([_LT_CONFIG], _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 that allow our + # 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 + if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi - cfgfile=${ofile}T + cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 +# `$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 -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} - # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG -_LT_EOF - - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -_LT_PREPARE_MUNGE_PATH_LIST -_LT_PREPARE_CC_BASENAME - -# ### END FUNCTIONS SHARED WITH CONFIGURE - _LT_EOF case $host_os in @@ -763,7 +739,7 @@ _LT_EOF # 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 set != "${COLLECT_NAMES+set}"; then +if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -780,6 +756,8 @@ _LT_EOF 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" @@ -797,6 +775,7 @@ _LT_EOF [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS @@ -995,7 +974,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ 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 + 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 @@ -1013,7 +992,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD @@ -1031,7 +1010,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS=$save_LDFLAGS + LDFLAGS="$save_LDFLAGS" ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], @@ -1041,8 +1020,8 @@ 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 cr libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cr libconftest.a conftest.o 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 @@ -1053,7 +1032,7 @@ _LT_EOF _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD @@ -1063,32 +1042,32 @@ _LT_EOF ]) case $host_os in rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + _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' ;; + _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' ;; + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac - if test yes = "$lt_cv_apple_cc_single_mod"; then + if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + 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' + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= @@ -1108,29 +1087,29 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test yes = "$lt_cv_ld_force_load"; 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\"`' + 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\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) 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 + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; + ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac - if test yes = "$_lt_dar_can_shared"; then + 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" + _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 yes != "$lt_cv_apple_cc_single_mod"; 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" +[ 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 @@ -1150,7 +1129,7 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], # 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 set = "${lt_cv_aix_libpath+set}"; then +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])], @@ -1168,7 +1147,7 @@ else _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 + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) @@ -1188,8 +1167,8 @@ m4_define([_LT_SHELL_INIT], # ----------------------- # 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 that will find a shell with a builtin -# printf (that we can use as an echo command). +# 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 @@ -1217,10 +1196,10 @@ fi # Invoke $ECHO with all args, space-separated. func_echo_all () { - $ECHO "$*" + $ECHO "$*" } -case $ECHO in +case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; @@ -1246,17 +1225,16 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], -[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], - [Search for dependent libraries within DIR (or the compiler's sysroot - if not specified).])], +[ --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 #( +case ${with_sysroot} in #( yes) - if test yes = "$GCC"; then + if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( @@ -1266,14 +1244,14 @@ case $with_sysroot in #( no|'') ;; #( *) - AC_MSG_RESULT([$with_sysroot]) + 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 where our libraries should be installed.])]) +[dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- @@ -1281,33 +1259,31 @@ m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) -test no = "$enable_libtool_lock" || enable_libtool_lock=yes +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 what ABI is being produced by ac_compile, and set mode - # options accordingly. + # 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 + HPUX_IA64_MODE="32" ;; *ELF-64*) - HPUX_IA64_MODE=64 + HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. + # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - if test yes = "$lt_cv_prog_gnu_ld"; then + if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" @@ -1336,46 +1312,9 @@ ia64-*-hpux*) rm -rf conftest* ;; -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. + # 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 @@ -1385,19 +1324,9 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" + LD="${LD-ld} -m elf_i386" ;; - powerpc64-*linux*) + ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -1416,10 +1345,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) + ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) @@ -1437,20 +1363,19 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS + 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 yes != "$lt_cv_cc_needs_belf"; then + 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 + CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. + # 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 @@ -1458,7 +1383,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) case $lt_cv_prog_gnu_ld in yes*) case $host in - i?86-*-solaris*|x86_64-*-solaris*) + i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) @@ -1467,7 +1392,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 + LD="${LD-ld}_sol2" fi ;; *) @@ -1483,7 +1408,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) ;; esac -need_locks=$enable_libtool_lock +need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK @@ -1492,7 +1417,7 @@ need_locks=$enable_libtool_lock m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} -: ${AR_FLAGS=cr} +: ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) @@ -1502,11 +1427,11 @@ AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [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 0 -eq "$ac_status"; then + 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 0 -ne "$ac_status"; then + if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi @@ -1514,7 +1439,7 @@ AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], ]) ]) -if test no = "$lt_cv_ar_at_file"; then +if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file @@ -1545,7 +1470,7 @@ old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in - bitrig* | openbsd*) + openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) @@ -1581,7 +1506,7 @@ 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" ## exclude from sc_useless_quotes_in_assignment + 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 @@ -1608,7 +1533,7 @@ AC_CACHE_CHECK([$1], [$2], $RM conftest* ]) -if test yes = "[$]$2"; then +if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) @@ -1630,7 +1555,7 @@ AC_DEFUN([_LT_LINKER_OPTION], m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no - save_LDFLAGS=$LDFLAGS + 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 @@ -1649,10 +1574,10 @@ AC_CACHE_CHECK([$1], [$2], fi fi $RM -r conftest* - LDFLAGS=$save_LDFLAGS + LDFLAGS="$save_LDFLAGS" ]) -if test yes = "[$]$2"; then +if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) @@ -1673,7 +1598,7 @@ AC_DEFUN([LT_CMD_MAX_LEN], AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 - teststring=ABCD + teststring="ABCD" case $build_os in msdosdjgpp*) @@ -1713,7 +1638,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=8192; ;; - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + 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` @@ -1763,23 +1688,22 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then + 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 + 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`env echo "$teststring$teststring" 2>/dev/null` \ + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough + test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring @@ -1795,7 +1719,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl ;; esac ]) -if test -n "$lt_cv_sys_max_cmd_len"; then +if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) @@ -1823,7 +1747,7 @@ m4_defun([_LT_HEADER_DLFCN], # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl -if test yes = "$cross_compiling"; then : +if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 @@ -1870,9 +1794,9 @@ else # endif #endif -/* When -fvisibility=hidden is used, assume the code has been annotated +/* 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)) +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif @@ -1898,7 +1822,7 @@ int main () return status; }] _LT_EOF - if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then + 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 @@ -1919,7 +1843,7 @@ rm -fr conftest* # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl -if test yes != "$enable_dlopen"; then +if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown @@ -1929,52 +1853,44 @@ else case $host_os in beos*) - lt_cv_dlopen=load_add_on + 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="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) - lt_cv_dlopen=dlopen + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) - # if libdl is installed we need to link against it + # 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="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - *) AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen=shl_load], + [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen=dlopen], + [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], + [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]) + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) @@ -1983,21 +1899,21 @@ else ;; esac - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else + 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 yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - save_LDFLAGS=$LDFLAGS + save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - save_LIBS=$LIBS + save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], @@ -2007,7 +1923,7 @@ else lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) - if test yes = "$lt_cv_dlopen_self"; then + 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 @@ -2017,9 +1933,9 @@ else ]) fi - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" ;; esac @@ -2111,8 +2027,8 @@ m4_defun([_LT_COMPILER_FILE_LOCKS], m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) -hard_links=nottested -if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then +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 @@ -2122,8 +2038,8 @@ if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_loc 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 no = "$hard_links"; then - AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) + 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 @@ -2150,8 +2066,8 @@ 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 where libtool stores uninstalled libraries.]) +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR @@ -2163,15 +2079,15 @@ m4_defun([_LT_LINKER_HARDCODE_LIBPATH], _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || - test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. - if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && + 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 no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && - test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then + ## 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 @@ -2185,12 +2101,12 @@ else fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) -if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || - test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then +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 yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi @@ -2214,7 +2130,7 @@ else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) - if test -n "$STRIP"; then + if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) @@ -2232,47 +2148,6 @@ _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB -# _LT_PREPARE_MUNGE_PATH_LIST -# --------------------------- -# Make sure func_munge_path_list() is defined correctly. -m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], -[[# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x@S|@2 in - x) - ;; - *:) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" - ;; - x:*) - eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" - ;; - *) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - esac -} -]])# _LT_PREPARE_PATH_LIST - - # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics @@ -2283,18 +2158,17 @@ 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 -m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ -if test yes = "$GCC"; then +if test "$GCC" = yes; then case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; + 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' ;; + 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 @@ -2310,35 +2184,28 @@ if test yes = "$GCC"; then ;; esac # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... + # 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` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac + 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" - elif test -n "$lt_multi_os_dir"; then + 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; +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; + lt_foo="/" $lt_i lt_foo; } else { lt_count--; } @@ -2352,7 +2219,7 @@ BEGIN {RS = " "; FS = "/|\n";} { # 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'` ;; + $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else @@ -2361,7 +2228,7 @@ fi]) library_names_spec= libname_spec='lib$name' soname_spec= -shrext_cmds=.so +shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -2378,17 +2245,14 @@ hardcode_into_libs=no # flags to be left without arguments need_version=unknown -AC_ARG_VAR([LT_SYS_LIBRARY_PATH], -[User-defined run-time library search path.]) - case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + 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' + soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) @@ -2396,91 +2260,41 @@ aix[[4-9]]*) need_lib_prefix=no need_version=no hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then + 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' + 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 + # 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 + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # 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. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' + if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.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' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a[(]lib.so.V[)]' + 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' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi shlibpath_var=LIBPATH fi ;; @@ -2490,18 +2304,18 @@ amigaos*) 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' + 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%'\''`; $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' + 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' + library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; @@ -2509,8 +2323,8 @@ beos*) bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor 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' + 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" @@ -2522,7 +2336,7 @@ bsdi[[45]]*) cygwin* | mingw* | pw32* | cegcc*) version_type=windows - shrext_cmds=.dll + shrext_cmds=".dll" need_version=no need_lib_prefix=no @@ -2531,8 +2345,8 @@ cygwin* | mingw* | pw32* | cegcc*) # 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'\''`~ + 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~ @@ -2548,17 +2362,17 @@ cygwin* | mingw* | pw32* | cegcc*) 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' + 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' + 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' + 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' @@ -2567,8 +2381,8 @@ m4_if([$1], [],[ *,cl*) # Native MSVC libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' case $build_os in mingw*) @@ -2595,7 +2409,7 @@ m4_if([$1], [],[ 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 + 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'` @@ -2608,8 +2422,8 @@ m4_if([$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'\''`~ + 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' @@ -2622,7 +2436,7 @@ m4_if([$1], [],[ *) # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac @@ -2635,8 +2449,8 @@ darwin* | rhapsody*) 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' + 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`' @@ -2649,8 +2463,8 @@ dgux*) version_type=linux # correct to gnu/linux during the next big refactor 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' + 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 ;; @@ -2668,13 +2482,12 @@ freebsd* | dragonfly*) version_type=freebsd-$objformat case $version_type in freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + 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' + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac @@ -2699,15 +2512,26 @@ freebsd* | dragonfly*) esac ;; +gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + 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 + ;; + haiku*) version_type=linux # correct to gnu/linux during the next big refactor 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' + 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=no + shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -2725,15 +2549,14 @@ hpux9* | hpux10* | hpux11*) 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 32 = "$HPUX_IA64_MODE"; then + 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" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' @@ -2741,8 +2564,8 @@ hpux9* | hpux10* | hpux11*) 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' + 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 ;; @@ -2751,8 +2574,8 @@ hpux9* | hpux10* | hpux11*) 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' + 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, ... @@ -2765,8 +2588,8 @@ interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor 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' + 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 @@ -2777,7 +2600,7 @@ irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) - if test yes = "$lt_cv_prog_gnu_ld"; then + if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix @@ -2785,8 +2608,8 @@ irix5* | irix6* | nonstopux*) 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' + 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= @@ -2805,8 +2628,8 @@ irix5* | irix6* | nonstopux*) 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" + 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 ;; @@ -2815,33 +2638,13 @@ linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # 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 - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - ;; - # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor 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' + 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 @@ -2866,15 +2669,14 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) # before this can be enabled. hardcode_into_libs=yes - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # 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" + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -2886,29 +2688,17 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) dynamic_linker='GNU/Linux ld.so' ;; -netbsdelf*-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 - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_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' + 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' + 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 @@ -2918,7 +2708,7 @@ netbsd*) newsos6) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + 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 ;; @@ -2927,68 +2717,58 @@ newsos6) 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' + 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* | bitrig*) +openbsd*) version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib + sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + # 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 - shlibpath_overrides_runpath=yes + 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' - version_type=windows - shrext_cmds=.dll - need_version=no + shrext_cmds=".dll" need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' + library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - 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_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' + 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 + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) @@ -2999,8 +2779,8 @@ solaris*) version_type=linux # correct to gnu/linux during the next big refactor 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' + 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 @@ -3010,11 +2790,11 @@ solaris*) sunos4*) version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + 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 yes = "$with_gnu_ld"; then + if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes @@ -3022,8 +2802,8 @@ sunos4*) sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + 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) @@ -3044,24 +2824,24 @@ sysv4 | sysv4.3*) ;; sysv4*MP*) - if test -d /usr/nec; then + if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' + 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=sco + 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' + 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 yes = "$with_gnu_ld"; then + 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' @@ -3079,7 +2859,7 @@ tpf*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + 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 @@ -3087,8 +2867,8 @@ tpf*) uts4*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' + 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 ;; @@ -3097,30 +2877,20 @@ uts4*) ;; esac AC_MSG_RESULT([$dynamic_linker]) -test no = "$dynamic_linker" && can_build_shared=no +test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then +if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +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 set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +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 -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) @@ -3153,41 +2923,39 @@ _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], [configure_time_dlsearch_path], [2], - [Detected run-time system search path for libraries]) -_LT_DECL([], [configure_time_lt_sys_library_path], [2], - [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) +_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 that can recognize shared library +# 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_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 + 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 + 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 -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 + 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 : @@ -3210,11 +2978,11 @@ _LT_EOF break fi done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) -MAGIC_CMD=$lt_cv_path_MAGIC_CMD +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else @@ -3232,7 +3000,7 @@ dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- -# find a file program that can recognize a shared library +# 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 @@ -3259,16 +3027,16 @@ 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 no = "$withval" || with_gnu_ld=yes], + [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld -if test yes = "$GCC"; then +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 + # 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` ;; @@ -3282,7 +3050,7 @@ if test yes = "$GCC"; then 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 + test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. @@ -3293,37 +3061,37 @@ if test yes = "$GCC"; then with_gnu_ld=unknown ;; esac -elif test yes = "$with_gnu_ld"; then +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 + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do - IFS=$lt_save_ifs + 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 + 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 conftest.i -cat conftest.i conftest.i >conftest2.i -: ${lt_DD:=$DD} -AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], -[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: -fi]) -rm -f conftest.i conftest2.i conftest.out]) -])# _LT_PATH_DD - - -# _LT_CMD_TRUNCATE -# ---------------- -# find command to truncate a binary pipe -m4_defun([_LT_CMD_TRUNCATE], -[m4_require([_LT_PATH_DD]) -AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], -[printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -lt_cv_truncate_bin= -if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" -fi -rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) -_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], - [Command to truncate a binary pipe]) -])# _LT_CMD_TRUNCATE - - # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies @@ -3446,13 +3177,13 @@ 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. +# `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 -# that 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. +# 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]]*) @@ -3479,7 +3210,8 @@ 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. - if ( file / ) >/dev/null 2>&1; then + # 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 @@ -3515,6 +3247,10 @@ freebsd* | dragonfly*) fi ;; +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + haiku*) lt_cv_deplibs_check_method=pass_all ;; @@ -3553,11 +3289,11 @@ irix5* | irix6* | nonstopux*) ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; -netbsd* | netbsdelf*-gnu) +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 @@ -3575,8 +3311,8 @@ newos6*) lt_cv_deplibs_check_method=pass_all ;; -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then +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)$' @@ -3629,9 +3365,6 @@ sysv4 | sysv4.3*) tpf*) lt_cv_deplibs_check_method=pass_all ;; -os2*) - lt_cv_deplibs_check_method=pass_all - ;; esac ]) @@ -3672,38 +3405,33 @@ AC_DEFUN([LT_PATH_NM], 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 + lt_cv_path_NM="$NM" else - lt_nm_to_check=${ac_tool_prefix}nm + 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 + 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 + 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 + 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: + # 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 - # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty - case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; - *) lt_bad_file=/dev/null ;; - esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) + 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 2 + break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" - break 2 + break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but @@ -3714,21 +3442,21 @@ else esac fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM +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 -headers /dev/null 2>&1 | sed '1q'` in + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" + DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: @@ -3736,8 +3464,8 @@ else esac fi AC_SUBST([DUMPBIN]) - if test : != "$DUMPBIN"; then - NM=$DUMPBIN + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm @@ -3783,8 +3511,8 @@ lt_cv_sharedlib_from_linklib_cmd, case $host_os in cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL + # 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 @@ -3796,7 +3524,7 @@ cygwin* | mingw* | pw32* | cegcc*) ;; *) # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO + lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac ]) @@ -3823,28 +3551,13 @@ AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) -if test yes != "$lt_cv_path_mainfest_tool"; then +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_DLL_DEF_P([FILE]) -# --------------------- -# True iff FILE is a Windows DLL '.def' file. -# Keep in sync with func_dll_def_p in the libtool script -AC_DEFUN([_LT_DLL_DEF_P], -[dnl - test DEF = "`$SED -n dnl - -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace - -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments - -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl - -e q dnl Only consider the first "real" line - $1`" dnl -])# _LT_DLL_DEF_P - - # LT_LIB_M # -------- # check for math library @@ -3856,11 +3569,11 @@ case $host in # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) - AC_CHECK_LIB(m, cos, LIBM=-lm) + AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) @@ -3879,7 +3592,7 @@ m4_defun([_LT_COMPILER_NO_RTTI], _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= -if test yes = "$GCC"; then +if test "$GCC" = yes; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; @@ -3931,7 +3644,7 @@ cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; @@ -3964,44 +3677,14 @@ case `$NM -V 2>&1` in symcode='[[ABCDGIRSTW]]' ;; esac -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - # 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"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" +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"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" +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= @@ -4019,24 +3702,21 @@ for ac_symprfx in "" "_"; do # 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, - # D for any global variable and I for any imported variable. + # 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};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" {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'" @@ -4063,8 +3743,7 @@ _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm - $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD - if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then + 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" @@ -4077,11 +3756,11 @@ _LT_EOF 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 can't be const, because runtime +#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__ +#elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else @@ -4107,7 +3786,7 @@ lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; @@ -4127,9 +3806,9 @@ _LT_EOF mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext + 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 + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS @@ -4150,7 +3829,7 @@ _LT_EOF rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then + if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= @@ -4177,16 +3856,12 @@ _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_import], [lt_cv_sys_global_symbol_to_import], [1], - [Transform the output of nm into a list of symbols to manually relocate]) _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_interface], [lt_cv_nm_interface], [1], - [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS @@ -4202,18 +3877,17 @@ _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. - if test yes = "$GXX"; then + 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 ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) @@ -4224,8 +3898,8 @@ m4_if([$1], [CXX], [ ;; 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'. + # 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 @@ -4241,11 +3915,6 @@ m4_if([$1], [CXX], [ # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac ;; darwin* | rhapsody*) # PIC is the default on this platform @@ -4295,7 +3964,7 @@ m4_if([$1], [CXX], [ case $host_os in aix[[4-9]]*) # All AIX code is PIC. - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else @@ -4336,14 +4005,14 @@ m4_if([$1], [CXX], [ 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 ia64 != "$host_cpu"; then + _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' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default @@ -4372,7 +4041,7 @@ m4_if([$1], [CXX], [ ;; esac ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler @@ -4380,7 +4049,7 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) - # old Intel C++ for x86_64, which still supported -KPIC. + # 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' @@ -4436,7 +4105,7 @@ m4_if([$1], [CXX], [ ;; esac ;; - netbsd* | netbsdelf*-gnu) + netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise @@ -4525,18 +4194,17 @@ m4_if([$1], [CXX], [ fi ], [ - if test yes = "$GCC"; then + 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 ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) @@ -4547,8 +4215,8 @@ m4_if([$1], [CXX], [ ;; 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'. + # 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 @@ -4565,11 +4233,6 @@ m4_if([$1], [CXX], [ # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac ;; darwin* | rhapsody*) @@ -4640,7 +4303,7 @@ m4_if([$1], [CXX], [ case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test ia64 = "$host_cpu"; then + if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else @@ -4648,30 +4311,11 @@ m4_if([$1], [CXX], [ fi ;; - 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' - case $cc_basename in - 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' - ;; - esac - ;; - 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']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac ;; hpux9* | hpux10* | hpux11*) @@ -4687,7 +4331,7 @@ m4_if([$1], [CXX], [ ;; 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' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) @@ -4696,20 +4340,14 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. + # 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' ;; - # flang / f18. f95 an alias for gfortran or flang on Debian - flang* | f18* | f95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _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*) @@ -4729,12 +4367,6 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; - tcc*) - # Fabrice Bellard et al's Tiny 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)='-static' - ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) @@ -4832,7 +4464,7 @@ m4_if([$1], [CXX], [ ;; sysv4*MP*) - if test -d /usr/nec; then + if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi @@ -4861,7 +4493,7 @@ m4_if([$1], [CXX], [ fi ]) case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: + # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; @@ -4927,21 +4559,17 @@ m4_if([$1], [CXX], [ 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 GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. + # -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) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + _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)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + _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 + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in @@ -4954,9 +4582,6 @@ m4_if([$1], [CXX], [ ;; esac ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; @@ -4990,9 +4615,9 @@ m4_if([$1], [CXX], [ # 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'. + # 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 @@ -5008,7 +4633,7 @@ dnl Note also adjust exclude_expsyms for C++ above. # 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 yes != "$GCC"; then + if test "$GCC" != yes; then with_gnu_ld=no fi ;; @@ -5016,12 +4641,9 @@ dnl Note also adjust exclude_expsyms for C++ above. # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; - openbsd* | bitrig*) + openbsd*) with_gnu_ld=no ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes @@ -5029,7 +4651,7 @@ dnl Note also adjust exclude_expsyms for C++ above. # 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 yes = "$with_gnu_ld"; then + if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility @@ -5051,24 +4673,24 @@ dnl Note also adjust exclude_expsyms for C++ above. esac fi - if test yes = "$lt_use_gnu_ld_interface"; then + if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' + 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' + _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' + _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 | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + 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 ... @@ -5081,7 +4703,7 @@ dnl Note also adjust exclude_expsyms for C++ above. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then + if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 @@ -5100,7 +4722,7 @@ _LT_EOF 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_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) @@ -5116,7 +4738,7 @@ _LT_EOF _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach 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' + _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 @@ -5126,7 +4748,7 @@ _LT_EOF # _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(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 @@ -5134,89 +4756,61 @@ _LT_EOF _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, use it as - # is; otherwise, prepend EXPORTS... - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); 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' + _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(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $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' + _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' + _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 linux-dietlibc = "$host_os"; then + 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 no = "$tmp_diet" + && 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' + _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' + _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' ;; @@ -5227,47 +4821,42 @@ _LT_EOF lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-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(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(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' + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test yes = "$supports_anon_versioning"; then + 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' + 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 - tcc*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' - ;; 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)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then + 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' + 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 @@ -5276,13 +4865,13 @@ _LT_EOF fi ;; - netbsd* | netbsdelf*-gnu) + 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' + _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 ;; @@ -5300,8 +4889,8 @@ _LT_EOF _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' + _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 @@ -5313,7 +4902,7 @@ _LT_EOF _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** 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 @@ -5328,9 +4917,9 @@ _LT_EOF # 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' + _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 @@ -5347,15 +4936,15 @@ _LT_EOF *) 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' + _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 no = "$_LT_TAGVAR(ld_shlibs, $1)"; then + 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)= @@ -5371,7 +4960,7 @@ _LT_EOF # 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 yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + 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 @@ -5379,57 +4968,34 @@ _LT_EOF ;; aix[[4-9]]*) - if test ia64 = "$host_cpu"; then + 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= + no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. + # -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) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + _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)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + _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 - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive + # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi ;; esac @@ -5448,21 +5014,13 @@ _LT_EOF _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,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # traditional, no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - ;; - esac + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - if test yes = "$GCC"; then + 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` + collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -5481,80 +5039,61 @@ _LT_EOF ;; esac shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' else # not using gcc - if test ia64 = "$host_cpu"; then + 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 yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' else - shared_flag='$wl-bM:SRE' + shared_flag='${wl}-bM:SRE' fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' fi fi - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + _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,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + 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 -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + _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 ia64 = "$host_cpu"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + 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" + _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" + _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 yes = "$with_gnu_ld"; then + _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' + _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 - _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + # 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 ;; @@ -5563,7 +5102,7 @@ _LT_EOF 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_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) @@ -5593,17 +5132,16 @@ _LT_EOF # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll + 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,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $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=' + _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 @@ -5612,18 +5150,18 @@ _LT_EOF # 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' + 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 @@ -5632,7 +5170,7 @@ _LT_EOF # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll + 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. @@ -5682,33 +5220,33 @@ _LT_EOF ;; hpux9*) - if test yes = "$GCC"; 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 "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + 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 "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + _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_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' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; 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' + 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 no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$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' + _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 @@ -5716,25 +5254,25 @@ _LT_EOF ;; hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then + 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' + _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}+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' + _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' + _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' + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ @@ -5742,14 +5280,14 @@ _LT_EOF # (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)='$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']) + [_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 no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + 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 @@ -5760,7 +5298,7 @@ _LT_EOF *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _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. @@ -5771,16 +5309,16 @@ _LT_EOF ;; irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; 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' + 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" + [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; }]], @@ -5793,33 +5331,22 @@ _LT_EOF end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) - LDFLAGS=$save_LDFLAGS]) - if test yes = "$lt_cv_irix_exported_symbol"; 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' + 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 - _LT_TAGVAR(link_all_deplibs, $1)=no 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' + _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_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 ;; - linux*) - case $cc_basename in - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - _LT_TAGVAR(ld_shlibs, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - netbsd* | netbsdelf*-gnu) + 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 @@ -5833,7 +5360,7 @@ _LT_EOF 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_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; @@ -5841,19 +5368,27 @@ _LT_EOF *nto* | *qnx*) ;; - openbsd* | bitrig*) + 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__`"; then + 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' + _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 - _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' + 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 @@ -5864,53 +5399,33 @@ _LT_EOF _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _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 yes = "$GCC"; 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' + 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' + _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_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 yes = "$GCC"; 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' + 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_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' + $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' @@ -5921,24 +5436,24 @@ _LT_EOF solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test yes = "$GCC"; 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' + 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' + $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_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' + $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' + 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' + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi @@ -5948,11 +5463,11 @@ _LT_EOF 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 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 yes = "$GCC"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + 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 @@ -5962,10 +5477,10 @@ _LT_EOF ;; sunos4*) - if test sequent = "$host_vendor"; then + 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' + _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 @@ -6014,43 +5529,43 @@ _LT_EOF ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _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 yes = "$GCC"; 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' + 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' + _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 CANNOT use -z defs as we might desire, because we do not + # 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(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_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' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' - if test yes = "$GCC"; 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' + 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' + _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 ;; @@ -6065,17 +5580,17 @@ _LT_EOF ;; esac - if test sni = "$host_vendor"; then + 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' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld @@ -6092,7 +5607,7 @@ x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - if test yes,yes = "$GCC,$enable_shared"; then + 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. @@ -6172,12 +5687,12 @@ _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], _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 + [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 + [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 + "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 @@ -6218,10 +5733,10 @@ dnl [Compiler flag to generate thread safe objects]) # ------------------------ # 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'. +# the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl -lt_save_CC=$CC +lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. @@ -6261,18 +5776,18 @@ if test -n "$compiler"; then LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB - # Report what library types will actually be built + # 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 no = "$can_build_shared" && enable_shared=no + 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 yes = "$enable_shared" && enable_static=no + test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' @@ -6280,12 +5795,8 @@ if test -n "$compiler"; then ;; aix[[4-9]]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no fi ;; esac @@ -6293,13 +5804,13 @@ if test -n "$compiler"; then AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes + test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP -CC=$lt_save_CC +CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG @@ -6307,14 +5818,14 @@ CC=$lt_save_CC # -------------------------- # 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'. +# 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 no != "$CXX" && - ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || - (test g++ != "$CXX"))); then +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 @@ -6356,7 +5867,7 @@ _LT_TAGVAR(objext, $1)=$objext # 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 yes != "$_lt_caught_CXX_error"; then +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;" @@ -6398,35 +5909,35 @@ if test yes != "$_lt_caught_CXX_error"; then if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately - if test yes = "$GXX"; then + 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 yes = "$GXX"; then + 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 yes = "$with_gnu_ld"; 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' + 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' + _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' + 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' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi @@ -6445,7 +5956,7 @@ if test yes != "$_lt_caught_CXX_error"; then # 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"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no @@ -6462,30 +5973,18 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) - if test ia64 = "$host_cpu"; then + 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= + 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 - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive + # 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 @@ -6495,13 +5994,6 @@ if test yes != "$_lt_caught_CXX_error"; then ;; esac done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi ;; esac @@ -6520,21 +6012,13 @@ if test yes != "$_lt_caught_CXX_error"; then _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,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - ;; - esac + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - if test yes = "$GXX"; then + 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` + collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -6552,84 +6036,64 @@ if test yes != "$_lt_caught_CXX_error"; then fi esac shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag=$shared_flag' $wl-G' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' else # not using gcc - if test ia64 = "$host_cpu"; then + 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 yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' else - shared_flag='$wl-bM:SRE' + shared_flag='${wl}-bM:SRE' fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' fi fi - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + _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,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + 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. - # The "-G" linker flag allows undefined symbols. - _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' + _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(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 -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + _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 ia64 = "$host_cpu"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + 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" + _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" + _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 yes = "$with_gnu_ld"; then + _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' + _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 - _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared - # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + # 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 ;; @@ -6639,7 +6103,7 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach 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' + _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 @@ -6667,58 +6131,57 @@ if test yes != "$_lt_caught_CXX_error"; then # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll + 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,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $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=' + _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' + 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(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, use it as - # is; otherwise, prepend EXPORTS... - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); 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' + _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 @@ -6729,34 +6192,6 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_DARWIN_LINKER_FEATURES($1) ;; - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - dgux*) case $cc_basename in ec++*) @@ -6791,15 +6226,18 @@ if test yes != "$_lt_caught_CXX_error"; then _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(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_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _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 @@ -6811,7 +6249,7 @@ if test yes != "$_lt_caught_CXX_error"; then _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 "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + _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. @@ -6820,11 +6258,11 @@ if test yes != "$_lt_caught_CXX_error"; then # 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"' + 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 yes = "$GXX"; 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 "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + 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 @@ -6834,15 +6272,15 @@ if test yes != "$_lt_caught_CXX_error"; then ;; hpux10*|hpux11*) - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + 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' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi @@ -6868,13 +6306,13 @@ if test yes != "$_lt_caught_CXX_error"; then 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' + _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}+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' + _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 @@ -6885,20 +6323,20 @@ if test yes != "$_lt_caught_CXX_error"; then # 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"' + 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 yes = "$GXX"; then - if test no = "$with_gnu_ld"; then + 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' + _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}+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' + _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 @@ -6913,22 +6351,22 @@ if test yes != "$_lt_caught_CXX_error"; then 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' + _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' + _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' + _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 @@ -6937,22 +6375,22 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; 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' + 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' + _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_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 | gnu*) + linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler @@ -6960,8 +6398,8 @@ if test yes != "$_lt_caught_CXX_error"; then # 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' + _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. @@ -6970,10 +6408,10 @@ if test yes != "$_lt_caught_CXX_error"; then # 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"' + 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' + _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. @@ -6987,59 +6425,59 @@ if test yes != "$_lt_caught_CXX_error"; then # 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' + _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' + _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' + _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`"' + 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' + 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' + 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' + 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' + _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' + _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' + _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' @@ -7053,18 +6491,18 @@ if test yes != "$_lt_caught_CXX_error"; then # 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' + 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 yes = "$supports_anon_versioning"; then + _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' + 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 ;; *) @@ -7072,10 +6510,10 @@ if test yes != "$_lt_caught_CXX_error"; then *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(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(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 @@ -7133,17 +6571,22 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(ld_shlibs, $1)=yes ;; - openbsd* | bitrig*) + 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__`"; 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' + _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 @@ -7159,9 +6602,9 @@ if test yes != "$_lt_caught_CXX_error"; then # 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_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_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using @@ -7179,17 +6622,17 @@ if test yes != "$_lt_caught_CXX_error"; then 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)=' ${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_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' + 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 @@ -7204,27 +6647,27 @@ if test yes != "$_lt_caught_CXX_error"; then # 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"' + 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 yes,no = "$GXX,$with_gnu_ld"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + 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 -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' + _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_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"' + 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 @@ -7264,9 +6707,9 @@ if test yes != "$_lt_caught_CXX_error"; then # 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_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' + $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 @@ -7274,7 +6717,7 @@ if test yes != "$_lt_caught_CXX_error"; then solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. + # 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' ;; @@ -7291,42 +6734,42 @@ if test yes != "$_lt_caught_CXX_error"; then ;; 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' + _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 yes,no = "$GXX,$with_gnu_ld"; then - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' + 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 $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _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 $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $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"' + 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 + # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _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 $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $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"' + 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' + _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' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi @@ -7335,52 +6778,52 @@ if test yes != "$_lt_caught_CXX_error"; then ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _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 -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' + _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 CANNOT use -z defs as we might desire, because we do not + # 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(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_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' + _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(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(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" + '"$_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' + _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 ;; @@ -7411,10 +6854,10 @@ if test yes != "$_lt_caught_CXX_error"; then esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - _LT_TAGVAR(GCC, $1)=$GXX - _LT_TAGVAR(LD, $1)=$LD + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -7441,7 +6884,7 @@ if test yes != "$_lt_caught_CXX_error"; then 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 yes != "$_lt_caught_CXX_error" +fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG @@ -7463,14 +6906,13 @@ AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { - case @S|@2 in - .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; - *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; + 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 @@ -7554,13 +6996,13 @@ if AC_TRY_EVAL(ac_compile); then pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do - case $prev$p in + case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. - if test x-L = "$p" || - test x-R = "$p"; then + if test $p = "-L" || + test $p = "-R"; then prev=$p continue fi @@ -7576,16 +7018,16 @@ if AC_TRY_EVAL(ac_compile); then case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac - if test no = "$pre_test_object_deps_done"; then - case $prev in + 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 + _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" + _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 @@ -7593,9 +7035,9 @@ if AC_TRY_EVAL(ac_compile); then esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)=$prev$p + _LT_TAGVAR(postdeps, $1)="${prev}${p}" else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi prev= @@ -7610,15 +7052,15 @@ if AC_TRY_EVAL(ac_compile); then continue fi - if test no = "$pre_test_object_deps_done"; then + if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)=$p + _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 + _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi @@ -7649,6 +7091,51 @@ interix[[3-9]]*) _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 ]) @@ -7657,7 +7144,7 @@ case " $_LT_TAGVAR(postdeps, $1) " in 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!^ !!'` + _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]) @@ -7677,10 +7164,10 @@ _LT_TAGDECL([], [compiler_lib_search_path], [1], # -------------------------- # 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'. +# to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test no = "$F77"; then +if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi @@ -7717,7 +7204,7 @@ _LT_TAGVAR(objext, $1)=$objext # 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 yes != "$_lt_disable_F77"; then +if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t @@ -7739,7 +7226,7 @@ if test yes != "$_lt_disable_F77"; then _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. - lt_save_CC=$CC + lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} @@ -7753,25 +7240,21 @@ if test yes != "$_lt_disable_F77"; then AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no + 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 yes = "$enable_shared" && enable_static=no + 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 ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no fi ;; esac @@ -7779,11 +7262,11 @@ if test yes != "$_lt_disable_F77"; then AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes + test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) - _LT_TAGVAR(GCC, $1)=$G77 - _LT_TAGVAR(LD, $1)=$LD + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -7800,9 +7283,9 @@ if test yes != "$_lt_disable_F77"; then fi # test -n "$compiler" GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test yes != "$_lt_disable_F77" + CC="$lt_save_CC" + CFLAGS="$lt_save_CFLAGS" +fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG @@ -7812,11 +7295,11 @@ AC_LANG_POP # ------------------------- # 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'. +# to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) -if test -z "$FC" || test no = "$FC"; then +if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi @@ -7853,7 +7336,7 @@ _LT_TAGVAR(objext, $1)=$objext # 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 yes != "$_lt_disable_FC"; then +if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t @@ -7875,7 +7358,7 @@ if test yes != "$_lt_disable_FC"; then _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. - lt_save_CC=$CC + lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} @@ -7891,25 +7374,21 @@ if test yes != "$_lt_disable_FC"; then AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no + 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 yes = "$enable_shared" && enable_static=no + 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 ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no fi ;; esac @@ -7917,11 +7396,11 @@ if test yes != "$_lt_disable_FC"; then AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=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 + _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 @@ -7941,7 +7420,7 @@ if test yes != "$_lt_disable_FC"; then GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS -fi # test yes != "$_lt_disable_FC" +fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG @@ -7951,7 +7430,7 @@ AC_LANG_POP # -------------------------- # 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'. +# to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE @@ -7985,7 +7464,7 @@ CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)=$LD +_LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. @@ -8022,7 +7501,7 @@ CFLAGS=$lt_save_CFLAGS # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. +# to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE @@ -8056,7 +7535,7 @@ CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)=$LD +_LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. @@ -8093,7 +7572,7 @@ CFLAGS=$lt_save_CFLAGS # ------------------------- # 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'. +# to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE @@ -8109,7 +7588,7 @@ _LT_TAGVAR(objext, $1)=$objext 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 +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 @@ -8119,7 +7598,7 @@ _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. -lt_save_CC=$CC +lt_save_CC="$CC" lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= @@ -8148,7 +7627,7 @@ 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 set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) @@ -8259,7 +7738,7 @@ 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 + test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in @@ -8276,9 +7755,9 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do $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 10 -lt "$lt_ac_count" && break + 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 + if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi @@ -8302,7 +7781,27 @@ dnl AC_DEFUN([LT_AC_PROG_SED], []) # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], -[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +[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 @@ -8326,9 +7825,102 @@ _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 what file name conversion functions should be used by +# 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], diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4 index 94b08297..5d9acd8e 100644 --- a/m4/ltoptions.m4 +++ b/m4/ltoptions.m4 @@ -1,14 +1,14 @@ # Helper functions for option handling. -*- Autoconf -*- # -# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software -# Foundation, Inc. +# 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 8 ltoptions.m4 +# 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])]) @@ -29,7 +29,7 @@ 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 + [m4_warning([Unknown $1 option `$2'])])[]dnl ]) @@ -75,15 +75,13 @@ m4_if([$1],[LT_INIT],[ 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 `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_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], - [_LT_WITH_AIX_SONAME([aix])]) + [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS @@ -114,7 +112,7 @@ 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.]) +put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: @@ -150,7 +148,7 @@ AU_DEFUN([AC_LIBTOOL_WIN32_DLL], _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.]) +put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: @@ -159,9 +157,9 @@ 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'. +# 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], @@ -174,14 +172,14 @@ AC_ARG_ENABLE([shared], *) enable_shared=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) @@ -213,9 +211,9 @@ 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'. +# 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], @@ -228,14 +226,14 @@ AC_ARG_ENABLE([static], *) enable_static=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) @@ -267,9 +265,9 @@ 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'. +# 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], @@ -282,14 +280,14 @@ AC_ARG_ENABLE([fast-install], *) 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, + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) @@ -306,14 +304,14 @@ 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.]) +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.]) +the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: @@ -321,64 +319,11 @@ dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) -# _LT_WITH_AIX_SONAME([DEFAULT]) -# ---------------------------------- -# implement the --with-aix-soname flag, and support the `aix-soname=aix' -# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT -# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. -m4_define([_LT_WITH_AIX_SONAME], -[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl -shared_archive_member_spec= -case $host,$enable_shared in -power*-*-aix[[5-9]]*,yes) - AC_MSG_CHECKING([which variant of shared library versioning to provide]) - AC_ARG_WITH([aix-soname], - [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], - [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], - [case $withval in - aix|svr4|both) - ;; - *) - AC_MSG_ERROR([Unknown argument to --with-aix-soname]) - ;; - esac - lt_cv_with_aix_soname=$with_aix_soname], - [AC_CACHE_VAL([lt_cv_with_aix_soname], - [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) - with_aix_soname=$lt_cv_with_aix_soname]) - AC_MSG_RESULT([$with_aix_soname]) - if test aix != "$with_aix_soname"; then - # For the AIX way of multilib, we name the shared archive member - # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', - # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. - # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, - # the AIX toolchain works better with OBJECT_MODE set (default 32). - if test 64 = "${OBJECT_MODE-32}"; then - shared_archive_member_spec=shr_64 - else - shared_archive_member_spec=shr - fi - fi - ;; -*) - with_aix_soname=aix - ;; -esac - -_LT_DECL([], [shared_archive_member_spec], [0], - [Shared archive member basename, for filename based shared library versioning on AIX])dnl -])# _LT_WITH_AIX_SONAME - -LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) -LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) -LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) - - # _LT_WITH_PIC([MODE]) # -------------------- -# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' +# 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'. +# 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@<:@=PKGS@:>@], @@ -389,17 +334,19 @@ m4_define([_LT_WITH_PIC], *) pic_mode=default # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do - IFS=$lt_save_ifs + IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done - IFS=$lt_save_ifs + IFS="$lt_save_ifs" ;; esac], - [pic_mode=m4_default([$1], [default])]) + [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 @@ -412,7 +359,7 @@ 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.]) +put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4 index 48bc9344..9000a057 100644 --- a/m4/ltsugar.m4 +++ b/m4/ltsugar.m4 @@ -1,7 +1,6 @@ # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # -# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software -# Foundation, Inc. +# 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 @@ -34,7 +33,7 @@ m4_define([_lt_join], # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support -# Autoconf-2.59, which quotes differently. +# 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])], @@ -45,7 +44,7 @@ m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. +# 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 diff --git a/m4/ltversion.m4 b/m4/ltversion.m4 index fa04b52a..07a8602d 100644 --- a/m4/ltversion.m4 +++ b/m4/ltversion.m4 @@ -1,6 +1,6 @@ # ltversion.m4 -- version numbers -*- Autoconf -*- # -# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. +# Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives @@ -9,15 +9,15 @@ # @configure_input@ -# serial 4179 ltversion.m4 +# serial 3337 ltversion.m4 # This file is part of GNU Libtool -m4_define([LT_PACKAGE_VERSION], [2.4.6]) -m4_define([LT_PACKAGE_REVISION], [2.4.6]) +m4_define([LT_PACKAGE_VERSION], [2.4.2]) +m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.6' -macro_revision='2.4.6' +[macro_version='2.4.2' +macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4 index c6b26f88..c573da90 100644 --- a/m4/lt~obsolete.m4 +++ b/m4/lt~obsolete.m4 @@ -1,7 +1,6 @@ # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # -# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software -# Foundation, Inc. +# 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 @@ -12,7 +11,7 @@ # These exist entirely to fool aclocal when bootstrapping libtool. # -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), +# 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. # @@ -26,7 +25,7 @@ # 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. +# 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 diff --git a/maint/codes.pc.in b/maint/codes.pc.in index 451a6c0f..97cf7d1d 100644 --- a/maint/codes.pc.in +++ b/maint/codes.pc.in @@ -19,11 +19,14 @@ argobots_cflags=@ARGOBOTS_CFLAGS@ swm_libs=@SWM_LIBS@ swm_cflags=@SWM_CFLAGS@ swm_datarootdir=@SWM_DATAROOTDIR@ +union_libs=@UNION_LIBS@ +union_cflags=@UNION_CFLAGS@ +union_datadir=@UNION_DATADIR@ Name: codes-base Description: Base functionality for CODES storage simulation Version: @PACKAGE_VERSION@ URL: https://github.com/codes-org/codes Requires: -Libs: -L${libdir} -lcodes ${ross_libs} ${argobots_libs} ${swm_libs} ${darshan_libs} ${dumpi_libs} ${cortex_libs} -Cflags: -I${includedir} -I${swm_datarootdir} ${ross_cflags} ${darshan_cflags} ${swm_cflags} ${argobots_cflags} ${dumpi_cflags} ${cortex_cflags} +Libs: -L${libdir} -lcodes ${ross_libs} ${argobots_libs} ${swm_libs} ${union_libs} ${darshan_libs} ${dumpi_libs} ${cortex_libs} +Cflags: -I${includedir} -I${swm_datarootdir} ${union_datadir} ${ross_cflags} ${darshan_cflags} ${swm_cflags} ${union_cflags} ${argobots_cflags} ${dumpi_cflags} ${cortex_cflags} diff --git a/src/iokernellang/codeslexer.c b/src/iokernellang/codeslexer.c index 96f594a7..c4abdb8d 100644 --- a/src/iokernellang/codeslexer.c +++ b/src/iokernellang/codeslexer.c @@ -9,7 +9,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 +#define YY_FLEX_SUBMINOR_VERSION 37 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -54,7 +54,6 @@ typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN @@ -85,6 +84,8 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif +#endif /* ! C99 */ + #endif /* ! FLEXINT_H */ #ifdef __cplusplus @@ -170,6 +171,11 @@ typedef void* yyscan_t; typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 @@ -205,11 +211,6 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state @@ -227,7 +228,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -306,7 +307,7 @@ static void CodesIOKernel__init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t y YY_BUFFER_STATE CodesIOKernel__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE CodesIOKernel__scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); -YY_BUFFER_STATE CodesIOKernel__scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); +YY_BUFFER_STATE CodesIOKernel__scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); void *CodesIOKernel_alloc (yy_size_t ,yyscan_t yyscanner ); void *CodesIOKernel_realloc (void *,yy_size_t ,yyscan_t yyscanner ); @@ -338,7 +339,7 @@ void CodesIOKernel_free (void * ,yyscan_t yyscanner ); /* Begin user sect3 */ -#define CodesIOKernel_wrap(n) 1 +#define CodesIOKernel_wrap(yyscanner) 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; @@ -559,7 +560,7 @@ static yyconst flex_int32_t yy_rule_can_match_eol[37] = #define YY_USER_ACTION /* no user action */; #endif -#line 563 "../src/iokernellang/codeslexer.c" +#line 564 "../src/iokernellang/codeslexer.c" #define INITIAL 0 @@ -588,8 +589,8 @@ struct yyguts_t size_t yy_buffer_stack_max; /**< capacity of stack. */ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ char yy_hold_char; - int yy_n_chars; - int yyleng_r; + yy_size_t yy_n_chars; + yy_size_t yyleng_r; char *yy_c_buf_p; int yy_init; int yy_start; @@ -646,7 +647,7 @@ FILE *CodesIOKernel_get_out (yyscan_t yyscanner ); void CodesIOKernel_set_out (FILE * out_str ,yyscan_t yyscanner ); -int CodesIOKernel_get_leng (yyscan_t yyscanner ); +yy_size_t CodesIOKernel_get_leng (yyscan_t yyscanner ); char *CodesIOKernel_get_text (yyscan_t yyscanner ); @@ -654,6 +655,10 @@ int CodesIOKernel_get_lineno (yyscan_t yyscanner ); void CodesIOKernel_set_lineno (int line_number ,yyscan_t yyscanner ); +int CodesIOKernel_get_column (yyscan_t yyscanner ); + +void CodesIOKernel_set_column (int column_no ,yyscan_t yyscanner ); + YYSTYPE * CodesIOKernel_get_lval (yyscan_t yyscanner ); void CodesIOKernel_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); @@ -713,7 +718,7 @@ static int input (yyscan_t yyscanner ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - unsigned n; \ + size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -801,7 +806,7 @@ YY_DECL #line 43 "../src/iokernellang/codeslexer.l" -#line 805 "../src/iokernellang/codeslexer.c" +#line 810 "../src/iokernellang/codeslexer.c" yylval = yylval_param; @@ -879,7 +884,7 @@ YY_DECL if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) { - int yyl; + yy_size_t yyl; for ( yyl = 0; yyl < yyleng; ++yyl ) if ( yytext[yyl] == '\n' ) @@ -1112,7 +1117,7 @@ YY_RULE_SETUP #line 117 "../src/iokernellang/codeslexer.l" ECHO; YY_BREAK -#line 1116 "../src/iokernellang/codeslexer.c" +#line 1121 "../src/iokernellang/codeslexer.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1299,21 +1304,21 @@ static int yy_get_next_buffer (yyscan_t yyscanner) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; int yy_c_buf_p_offset = (int) (yyg->yy_c_buf_p - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -1344,7 +1349,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - yyg->yy_n_chars, (size_t) num_to_read ); + yyg->yy_n_chars, num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } @@ -1441,6 +1446,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 133); + (void)yyg; return yy_is_jam ? 0 : yy_current_state; } @@ -1469,7 +1475,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) else { /* need more input */ - int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; + yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) @@ -1640,10 +1646,6 @@ static void CodesIOKernel__load_buffer_state (yyscan_t yyscanner) CodesIOKernel_free((void *) b ,yyscanner ); } -#ifndef __cplusplus -extern int isatty (int ); -#endif /* __cplusplus */ - /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a CodesIOKernel_restart() or at EOF. @@ -1760,7 +1762,7 @@ void CodesIOKernel_pop_buffer_state (yyscan_t yyscanner) */ static void CodesIOKernel_ensure_buffer_stack (yyscan_t yyscanner) { - int num_to_alloc; + yy_size_t num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { @@ -1853,17 +1855,17 @@ YY_BUFFER_STATE CodesIOKernel__scan_string (yyconst char * yystr , yyscan_t yysc /** Setup the input buffer state to scan the given bytes. The next call to CodesIOKernel_lex() will * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE CodesIOKernel__scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) +YY_BUFFER_STATE CodesIOKernel__scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - int i; + yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; @@ -1973,7 +1975,7 @@ FILE *CodesIOKernel_get_out (yyscan_t yyscanner) /** Get the length of the current token. * @param yyscanner The scanner object. */ -int CodesIOKernel_get_leng (yyscan_t yyscanner) +yy_size_t CodesIOKernel_get_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; @@ -2009,7 +2011,7 @@ void CodesIOKernel_set_lineno (int line_number , yyscan_t yyscanner) /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "CodesIOKernel_set_lineno called with no buffer" , yyscanner); + YY_FATAL_ERROR( "CodesIOKernel_set_lineno called with no buffer" ); yylineno = line_number; } @@ -2024,7 +2026,7 @@ void CodesIOKernel_set_column (int column_no , yyscan_t yyscanner) /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "CodesIOKernel_set_column called with no buffer" , yyscanner); + YY_FATAL_ERROR( "CodesIOKernel_set_column called with no buffer" ); yycolumn = column_no; } diff --git a/src/iokernellang/codeslexer.h b/src/iokernellang/codeslexer.h index 034abc67..c3de58e9 100644 --- a/src/iokernellang/codeslexer.h +++ b/src/iokernellang/codeslexer.h @@ -13,7 +13,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 +#define YY_FLEX_SUBMINOR_VERSION 37 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -58,7 +58,6 @@ typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN @@ -89,6 +88,8 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif +#endif /* ! C99 */ + #endif /* ! FLEXINT_H */ #ifdef __cplusplus @@ -161,7 +162,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -205,7 +206,7 @@ void CodesIOKernel_pop_buffer_state (yyscan_t yyscanner ); YY_BUFFER_STATE CodesIOKernel__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE CodesIOKernel__scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); -YY_BUFFER_STATE CodesIOKernel__scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); +YY_BUFFER_STATE CodesIOKernel__scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); void *CodesIOKernel_alloc (yy_size_t ,yyscan_t yyscanner ); void *CodesIOKernel_realloc (void *,yy_size_t ,yyscan_t yyscanner ); @@ -213,7 +214,7 @@ void CodesIOKernel_free (void * ,yyscan_t yyscanner ); /* Begin user sect3 */ -#define CodesIOKernel_wrap(n) 1 +#define CodesIOKernel_wrap(yyscanner) 1 #define YY_SKIP_YYWRAP #define yytext_ptr yytext_r @@ -260,7 +261,7 @@ FILE *CodesIOKernel_get_out (yyscan_t yyscanner ); void CodesIOKernel_set_out (FILE * out_str ,yyscan_t yyscanner ); -int CodesIOKernel_get_leng (yyscan_t yyscanner ); +yy_size_t CodesIOKernel_get_leng (yyscan_t yyscanner ); char *CodesIOKernel_get_text (yyscan_t yyscanner ); @@ -268,6 +269,10 @@ int CodesIOKernel_get_lineno (yyscan_t yyscanner ); void CodesIOKernel_set_lineno (int line_number ,yyscan_t yyscanner ); +int CodesIOKernel_get_column (yyscan_t yyscanner ); + +void CodesIOKernel_set_column (int column_no ,yyscan_t yyscanner ); + YYSTYPE * CodesIOKernel_get_lval (yyscan_t yyscanner ); void CodesIOKernel_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); @@ -340,6 +345,6 @@ extern int CodesIOKernel_lex \ #line 117 "../src/iokernellang/codeslexer.l" -#line 344 "../src/iokernellang/codeslexer.h" +#line 349 "../src/iokernellang/codeslexer.h" #undef CodesIOKernel_IN_HEADER #endif /* CodesIOKernel_HEADER_H */ diff --git a/src/network-workloads/model-net-mpi-replay.c b/src/network-workloads/model-net-mpi-replay.c index bfc368ab..a7eefdc4 100644 --- a/src/network-workloads/model-net-mpi-replay.c +++ b/src/network-workloads/model-net-mpi-replay.c @@ -20,6 +20,7 @@ #include "codes/congestion-controller-core.h" /* turning on track lp will generate a lot of output messages */ +#define DBG_COMM 1 #define MN_LP_NM "modelnet_dragonfly_custom" #define CONTROL_MSG_SZ 64 #define TRACE -1 @@ -134,6 +135,7 @@ static int syn_type = 0; FILE * workload_log = NULL; FILE * msg_size_log = NULL; +FILE * iteration_log = NULL; FILE * workload_agg_log = NULL; FILE * workload_meta_log = NULL; @@ -1252,7 +1254,11 @@ static int notify_posted_wait(nw_state* s, if(wait_elem->num_completed >= wait_elem->count) { if(enable_debug) - fprintf(workload_log, "\n(%lf) APP ID %d MPI WAITALL COMPLETED AT %llu ", tw_now(lp), s->app_id, LLU(s->nw_id)); + { + // fprintf(workload_log, "\n(%lf) APP ID %d MPI WAITALL COMPLETED AT %llu ", tw_now(lp), s->app_id, LLU(s->nw_id)); + fprintf(workload_log, "\n (%lf) APP ID %d MPI WAITALL SOURCE %d COMPLETED", + tw_now(lp), s->app_id, s->local_rank); + } wait_completed = 1; } m->fwd.wait_completed = 1; //This is just the individual request handle - not the entire wait. @@ -1299,7 +1305,12 @@ static void codes_exec_mpi_wait(nw_state* s, tw_bf * bf, nw_message * m, tw_lp* { /* check in the completed receives queue if the request ID has already been completed.*/ -// printf("\n Wait posted rank id %d ", s->nw_id); + if(enable_debug) + { + fprintf(workload_log, "\n (%lf) APP ID %d MPI WAIT POSTED SOURCE %d", + tw_now(lp), s->app_id, s->local_rank); + } + assert(!s->wait_op); unsigned int req_id = mpi_op->u.wait.req_id; @@ -1383,7 +1394,11 @@ static void codes_exec_mpi_wait_all( struct codes_workload_op * mpi_op) { if(enable_debug) - fprintf(workload_log, "\n MPI WAITALL POSTED AT %llu ", LLU(s->nw_id)); + { + // fprintf(workload_log, "\n MPI WAITALL POSTED AT %llu ", LLU(s->nw_id)); + fprintf(workload_log, "\n (%lf) APP ID %d MPI WAITALL POSTED SOURCE %d", + tw_now(lp), s->app_id, s->local_rank); + } if(enable_sampling) { @@ -1659,6 +1674,12 @@ static void codes_exec_comp_delay( //ts += g_tw_lookahead + 0.1 + tw_rand_exponential(lp->rng, noise); // assert(ts > 0); + if(enable_debug) + { + fprintf(workload_log, "\n (%lf) APP %d MPI DELAY SOURCE %d DURATION %lf", + tw_now(lp), s->app_id, s->local_rank, ts); + } + e = tw_event_new( lp->gid, ts , lp ); msg = (nw_message*)tw_event_data(e); msg->msg_type = MPI_OP_GET_NEXT; @@ -1754,6 +1775,20 @@ static void codes_exec_mpi_recv( // printf("\n Receive op posted num bytes %llu source %d ", recv_op->num_bytes, // recv_op->source_rank); + if(enable_debug) + { + if(mpi_op->op_type == CODES_WK_RECV) + { + fprintf(workload_log, "\n (%lf) APP %d MPI RECV SOURCE %d DEST %d BYTES %"PRId64, + tw_now(lp), s->app_id, recv_op->source_rank, recv_op->dest_rank, recv_op->num_bytes); + } + else + { + fprintf(workload_log, "\n (%lf) APP ID %d MPI IRECV SOURCE %d DEST %d BYTES %"PRId64, + tw_now(lp), s->app_id, recv_op->source_rank, recv_op->dest_rank, recv_op->num_bytes); + } + } + int found_matching_sends = rm_matching_send(s, bf, m, lp, recv_op); /* for mpi irecvs, this is a non-blocking receive so just post it and move on with the trace read. */ @@ -1762,6 +1797,8 @@ static void codes_exec_mpi_recv( bf->c6 = 1; codes_issue_next_event(lp); } + + /* save the req id inserted in the completed queue for reverse computation. */ if(found_matching_sends < 0) { @@ -1982,12 +2019,18 @@ static void codes_exec_mpi_send(nw_state* s, { if(mpi_op->op_type == CODES_WK_ISEND) { - fprintf(workload_log, "\n (%lf) APP %d MPI ISEND SOURCE %llu DEST %d TAG %d BYTES %"PRId64, - tw_now(lp), s->app_id, LLU(s->nw_id), global_dest_rank, mpi_op->u.send.tag, mpi_op->u.send.num_bytes); + // fprintf(workload_log, "\n (%lf) APP %d MPI ISEND SOURCE %llu DEST %d TAG %d BYTES %"PRId64, + // tw_now(lp), s->app_id, LLU(s->nw_id), global_dest_rank, mpi_op->u.send.tag, mpi_op->u.send.num_bytes); + fprintf(workload_log, "\n (%lf) APP %d MPI ISEND SOURCE %llu DEST %d TAG %d BYTES %"PRId64, + tw_now(lp), s->app_id, LLU(remote_m.fwd.src_rank), remote_m.fwd.dest_rank, mpi_op->u.send.tag, mpi_op->u.send.num_bytes); } else - fprintf(workload_log, "\n (%lf) APP ID %d MPI SEND SOURCE %llu DEST %d TAG %d BYTES %"PRId64, - tw_now(lp), s->app_id, LLU(s->nw_id), global_dest_rank, mpi_op->u.send.tag, mpi_op->u.send.num_bytes); + { + // fprintf(workload_log, "\n (%lf) APP ID %d MPI SEND SOURCE %llu DEST %d TAG %d BYTES %"PRId64, + // tw_now(lp), s->app_id, LLU(s->nw_id), global_dest_rank, mpi_op->u.send.tag, mpi_op->u.send.num_bytes); + fprintf(workload_log, "\n (%lf) APP ID %d MPI SEND SOURCE %llu DEST %d TAG %d BYTES %"PRId64, + tw_now(lp), s->app_id, LLU(remote_m.fwd.src_rank), remote_m.fwd.dest_rank, mpi_op->u.send.tag, mpi_op->u.send.num_bytes); + } } if(is_rend || is_eager) { @@ -2378,7 +2421,7 @@ void nw_test_init(nw_state* s, tw_lp* lp) strcpy(params_d.cortex_gen, cortex_gen); #endif } - else if(strcmp(workload_type, "online") == 0){ + else if(strcmp(workload_type, "swm-online") == 0){ online_comm_params oc_params; @@ -2418,7 +2461,27 @@ void nw_test_init(nw_state* s, tw_lp* lp) * online, it is the number of ranks to be simulated. */ oc_params.nprocs = num_traces_of_job[lid.job]; params = (char*)&oc_params; - strcpy(type_name, "online_comm_workload"); + strcpy(type_name, "swm_online_comm_workload"); + } + //Xin: add conceputual online workload + else if(strcmp(workload_type, "conc-online") == 0){ + + online_comm_params oc_params; + + if(strlen(workload_name) > 0) + { + strcpy(oc_params.workload_name, workload_name); + } + else if(strlen(workloads_conf_file) > 0) + { + strcpy(oc_params.workload_name, file_name_of_job[lid.job]); + } + /*TODO: nprocs is different for dumpi and online workload. for + * online, it is the number of ranks to be simulated. */ + // printf("conc-online num_traces_of_job %d\n", num_traces_of_job[lid.job]); + oc_params.nprocs = num_traces_of_job[lid.job]; + params = (char*)&oc_params; + strcpy(type_name, "conc_online_comm_workload"); } int rc = configuration_get_value_int(&config, "PARAMS", "num_qos_levels", NULL, &num_qos_levels); @@ -2482,6 +2545,7 @@ void nw_test_init(nw_state* s, tw_lp* lp) e = tw_event_new(lp->gid, ts, lp); m_new = (nw_message*)tw_event_data(e); m_new->msg_type = CLI_BCKGND_GEN; + printf("\naddress difference = %ld\n", (&m_new->fwd.app_id - (int *)m_new)); tw_event_send(e); is_synthetic = 1; @@ -2887,8 +2951,11 @@ static void get_next_mpi_operation(nw_state* s, tw_bf * bf, nw_message * m, tw_l case CODES_WK_MARK: { - printf("\n MARK_%d node %llu job %d rank %d time %lf ", mpi_op->u.send.tag, LLU(s->nw_id), s->app_id, s->local_rank, tw_now(lp)); + // printf("\n MARK_%d node %llu job %d rank %d time %lf \n", mpi_op->u.send.tag, LLU(s->nw_id), s->app_id, s->local_rank, tw_now(lp)); + // m->rc.saved_marker_time = tw_now(lp); + fprintf(iteration_log, "ITERATION %d node %llu job %d rank %d time %lf\n", mpi_op->u.send.tag, LLU(s->nw_id), s->app_id, s->local_rank, tw_now(lp)); m->rc.saved_marker_time = tw_now(lp); + codes_issue_next_event(lp); } break; @@ -2921,16 +2988,22 @@ void nw_test_finalize(nw_state* s, tw_lp* lp) return; if(strncmp(file_name_of_job[lid.job], "synthetic", 9) == 0) avg_msg_time = (s->send_time / s->num_recvs); - else if(strcmp(workload_type, "online") == 0) - codes_workload_finalize("online_comm_workload", params, s->app_id, s->local_rank); + else if(strcmp(workload_type, "swm-online") == 0) + codes_workload_finalize("swm_online_comm_workload", params, s->app_id, s->local_rank); + //Xin: for conceptual online workload + else if(strcmp(workload_type, "conc-online") == 0) + codes_workload_finalize("conc_online_comm_workload", params, s->app_id, s->local_rank); } else { if(s->nw_id >= (tw_lpid)num_net_traces) return; - if(strcmp(workload_type, "online") == 0) - codes_workload_finalize("online_comm_workload", params, s->app_id, s->local_rank); + if(strcmp(workload_type, "swm-online") == 0) + codes_workload_finalize("swm_online_comm_workload", params, s->app_id, s->local_rank); + //Xin: for conceptual online workload + if(strcmp(workload_type, "conc-online") == 0) + codes_workload_finalize("conc_online_comm_workload", params, s->app_id, s->local_rank); } struct msg_size_info * tmp_msg = NULL; @@ -3109,7 +3182,7 @@ void nw_test_event_handler_commit(nw_state* s, tw_bf * bf, nw_message * m, tw_lp char tag_line[32]; int written; - written = sprintf(tag_line, "%d %d %.5f\n",s->nw_id, m->mpi_op->u.send.tag, m->rc.saved_marker_time); + written = sprintf(tag_line, "%llu %d %.5f\n",s->nw_id, m->mpi_op->u.send.tag, m->rc.saved_marker_time); lp_io_write(lp->gid, marker_filename, written, tag_line); } } @@ -3299,12 +3372,12 @@ int modelnet_mpi_replay(MPI_Comm comm, int* argc, char*** argv ) { // keep damaris ranks from running code between here up until tw_end() #endif codes_comm_update(); - - if(strcmp(workload_type, "dumpi") != 0 && strcmp(workload_type, "online") != 0) + //Xin: add conceptual online workload + if(strcmp(workload_type, "dumpi") != 0 && strcmp(workload_type, "swm-online") != 0 && strcmp(workload_type, "conc-online") != 0) { if(tw_ismaster()) printf("Usage: mpirun -np n ./modelnet-mpi-replay --sync=1/3" - " --workload_type=dumpi/online" + " --workload_type=dumpi/swm-online/conc-online" " --workload_conf_file=prefix-workload-file-name" " --workload_timer_file=timer-file" " --workload_period_file=period-file" @@ -3321,6 +3394,11 @@ int modelnet_mpi_replay(MPI_Comm comm, int* argc, char*** argv ) return -1; } + /* Xin: Currently rendezvous protocol cannot work with Conceptual online workloads */ + if(strcmp(workload_type, "conc-online") == 0) { + EAGER_THRESHOLD = INT64_MAX; + } + jobmap_ctx = NULL; // make sure it's NULL if it's not used @@ -3377,7 +3455,6 @@ int modelnet_mpi_replay(MPI_Comm comm, int* argc, char*** argv ) jobmap_p.alloc_file = alloc_file; jobmap_ctx = codes_jobmap_configure(CODES_JOBMAP_LIST, &jobmap_p); - if(strlen(workloads_timer_file) > 0){ FILE *timer_file = fopen(workloads_timer_file, "r"); if(!timer_file) @@ -3457,6 +3534,15 @@ int modelnet_mpi_replay(MPI_Comm comm, int* argc, char*** argv ) modelnet_mpi_replay_read_config(); + //Xin: output iteration time into log file + iteration_log = fopen("iteration-logs", "w+"); + if(!iteration_log) + { + printf("\n Error logging iteration times... quitting "); + MPI_Finalize(); + return -1; + } + if(enable_debug) { workload_log = fopen("mpi-op-logs", "w+"); @@ -3537,8 +3623,11 @@ int modelnet_mpi_replay(MPI_Comm comm, int* argc, char*** argv ) int ret = lp_io_prepare(lp_io_dir, flags, &io_handle, MPI_COMM_CODES); assert(ret == 0 || !"lp_io_prepare failure"); } + tw_run(); + fclose(iteration_log); //Xin + if(enable_debug) fclose(workload_log); diff --git a/src/networks/model-net/core/model-net.c b/src/networks/model-net/core/model-net.c index 5ee14979..23589813 100644 --- a/src/networks/model-net/core/model-net.c +++ b/src/networks/model-net/core/model-net.c @@ -378,6 +378,7 @@ static model_net_event_return model_net_event_impl_base( strncpy(r->category, category, CATEGORY_NAME_MAX-1); r->category[CATEGORY_NAME_MAX-1]='\0'; + if (is_msg_params_set[MN_MSG_PARAM_START_TIME]) r->msg_start_time = start_time_param; else @@ -390,6 +391,7 @@ static model_net_event_return model_net_event_impl_base( jid = codes_jobmap_to_local_id(codes_mapping_get_lp_relative_id(sender->gid, 0, 0), ctx); r->app_id = jid.job; } + // this is an outgoing message m->msg.m_base.is_from_remote = 0; m->msg.m_base.isQueueReq = 1; diff --git a/src/networks/model-net/dragonfly-custom.C b/src/networks/model-net/dragonfly-custom.C index a2deb05b..1e6998e1 100644 --- a/src/networks/model-net/dragonfly-custom.C +++ b/src/networks/model-net/dragonfly-custom.C @@ -179,6 +179,13 @@ struct dragonfly_param double global_credit_delay; double cn_credit_delay; double router_delay; + + //Xin: parameters for message counters of apps + int counting_bool; + tw_stime counting_start; + tw_stime counting_interval; + int counting_windows; + int num_apps; }; struct dfly_hash_key @@ -369,12 +376,19 @@ struct router_state char output_buf[4096]; char output_buf2[4096]; + //Xin: buffer for output data + char output_buf5[4096]; + char output_buf6[4096]; struct dfly_router_sample * rsamples; long fwd_events; long rev_events; + //Xin: msg couters for apps + tw_stime **agg_busy_time; + int64_t **agg_link_traffic; + /* following used for ROSS model-level stats collection */ tw_stime* busy_time_ross_sample; int64_t * link_traffic_ross_sample; @@ -649,6 +663,23 @@ static void dragonfly_read_config(const char * anno, dragonfly_param *params){ routing = -1; } + //Xin: app msgs counting on routers + rc = configuration_get_value_int(&config, "PARAMS", "counting_bool", anno, &p->counting_bool); + if(p->counting_bool) { + int rc1 = configuration_get_value_double(&config, "PARAMS", "counting_start", anno, &p->counting_start); + int rc2 = configuration_get_value_int(&config, "PARAMS", "counting_windows", anno, &p->counting_windows); + int rc3 = configuration_get_value_double(&config, "PARAMS", "counting_interval", anno, &p->counting_interval); + int rc4 = configuration_get_value_int(&config, "PARAMS", "num_apps", anno, &p->num_apps); + if(rc1 || rc2 || rc3 || rc4) + tw_error(TW_LOC, "\n Missing couting values, (counting_start/windows/interval/num_apps) check for config files\n"); + + //convert us to ns + p->counting_start = p->counting_start * 1000; + p->counting_interval = p->counting_interval * 1000; + + //printf("start %f, end %f, interval %f\n", p->counting_start, p->counting_end, p->counting_interval); + } + // rc = configuration_get_value_int(&config, "PARAMS", "num_vcs_override", anno, &p->num_vcs); // if(rc) { // if(routing == PROG_ADAPTIVE) @@ -1155,6 +1186,21 @@ void router_custom_setup(router_state * r, tw_lp * lp) r->ross_rsample.busy_time = (tw_stime*)calloc(p->radix, sizeof(tw_stime)); r->ross_rsample.link_traffic_sample = (int64_t*)calloc(p->radix, sizeof(int64_t)); + //Xin: msg counters for apps + if(p->counting_bool > 0) + { + r->agg_link_traffic = (int64_t **) calloc(p->counting_windows, sizeof(int64_t *)); + r->agg_busy_time = (tw_stime **) malloc (p->counting_windows * sizeof(tw_stime *)); + + for (int i = 0; i < p->counting_windows; ++i) + { + r->agg_link_traffic[i] = (int64_t*) calloc(p->radix, sizeof(int64_t)); + r->agg_busy_time[i] = (tw_stime*) malloc(p->radix * sizeof(tw_stime)); + for(int j = 0; j < p->radix; j++) + r->agg_busy_time[i][j] = 0.0; + } + } + rc_stack_create(&r->st); for(int i = 0; i < p->num_router_rows; i++) @@ -2510,6 +2556,35 @@ void dragonfly_custom_router_final(router_state * s, written += sprintf(s->output_buf2 + written, " %lld", LLD(s->link_traffic[d])); lp_io_write(lp->gid, (char*)"dragonfly-router-traffic", written, s->output_buf2); + + //Xin: output link statistics + if(s->params->counting_bool) + { + // for link traffic + if(!s->router_id){ + written = sprintf(s->output_buf5, "# Format \n"); + lp_io_write(lp->gid, (char*)"dragonfly-router-traffic-sample", written, s->output_buf5); + } + for(int i=0; i < p->counting_windows; i++) { + written = sprintf(s->output_buf5, "\n %llu %d %d %lf", LLU(lp->gid), s->router_id / p->num_routers, s->router_id , (p->counting_start+(i+1)*p->counting_interval)); + for (int d=0; d < p->radix; d++) + written += sprintf(s->output_buf5 + written, " %d", (s->agg_link_traffic[i][d])); + lp_io_write(lp->gid, (char*)"dragonfly-router-traffic-sample", written, s->output_buf5); + } + + // for link busy time + if(!s->router_id){ + written = sprintf(s->output_buf6, "# Format \n"); + lp_io_write(lp->gid, (char*)"dragonfly-router-busytime-sample", written, s->output_buf6); + } + for(int i=0; i < p->counting_windows; i++) { + written = sprintf(s->output_buf6, "\n %llu %d %d %lf", LLU(lp->gid), s->router_id / p->num_routers, s->router_id , (p->counting_start+(i+1)*p->counting_interval)); + for (int d=0; d < p->radix; d++) + written += sprintf(s->output_buf6 + written, " %lf", (s->agg_busy_time[i][d])); + lp_io_write(lp->gid, (char*)"dragonfly-router-busytime-sample", written, s->output_buf6); + } + } + } static vector get_intra_router(router_state * s, int src_router_id, int dest_router_id, int num_rtrs_per_grp) @@ -3356,6 +3431,17 @@ static void router_packet_send_rc(router_state * s, terminal_custom_message_list * cur_entry = (terminal_custom_message_list *)rc_stack_pop(s->st); assert(cur_entry); + + //Xin: target window to rollback + bool rolback = false; + int current_window = -1; + const dragonfly_param *p = s->params; + if(s->params->counting_bool>0 && msg->last_sent_time >= s->params->counting_start) { + current_window = (int) ((msg->last_sent_time-s->params->counting_start)/s->params->counting_interval); + if(current_window < s->params->counting_windows) { + rolback = true; + } + } if(bf->c11) { @@ -3363,6 +3449,10 @@ static void router_packet_send_rc(router_state * s, s->link_traffic_sample[output_port] -= cur_entry->msg.packet_size % s->params->chunk_size; s->ross_rsample.link_traffic_sample[output_port] -= cur_entry->msg.packet_size % s->params->chunk_size; s->link_traffic_ross_sample[output_port] -= cur_entry->msg.packet_size % s->params->chunk_size; + //Xin: reverse link traffic + if(rolback && current_window >= 0){ + s->agg_link_traffic[current_window][output_port] -= cur_entry->msg.packet_size % s->params->chunk_size; + } } if(bf->c12) { @@ -3370,6 +3460,10 @@ static void router_packet_send_rc(router_state * s, s->link_traffic_sample[output_port] -= s->params->chunk_size; s->ross_rsample.link_traffic_sample[output_port] -= s->params->chunk_size; s->link_traffic_ross_sample[output_port] -= s->params->chunk_size; + //Xin: reverse link traffic + if(rolback && current_window >= 0){ + s->agg_link_traffic[current_window][output_port] -= s->params->chunk_size; + } } s->next_output_available_time[output_port] = msg->saved_available_time; @@ -3483,6 +3577,18 @@ router_packet_send( router_state * s, m->intm_lp_id = lp->gid; m->magic = router_magic_num; + //Xin: target window to update link traffic + msg->last_sent_time = tw_now(lp); + bool update = false; + int current_window = -1; + const dragonfly_param *p = s->params; + if(s->params->counting_bool>0 && msg->last_sent_time >= s->params->counting_start) { + current_window = (int) ((msg->last_sent_time - s->params->counting_start)/s->params->counting_interval); + if(current_window < s->params->counting_windows) { + update = true; + } + } + if((cur_entry->msg.packet_size % s->params->chunk_size) && (cur_entry->msg.chunk_id == num_chunks - 1)) { bf->c11 = 1; s->link_traffic[output_port] += (cur_entry->msg.packet_size % @@ -3493,14 +3599,27 @@ router_packet_send( router_state * s, s->params->chunk_size); s->link_traffic_ross_sample[output_port] += (cur_entry->msg.packet_size % s->params->chunk_size); + //Xin: update link traffic data + if(update && current_window >= 0){ + // if (s->router_id==0 && to_terminal) + // printf("Router %d: update port %d with app %d traffic to dest %d\n", s->router_id, output_port, msg->app_id, msg->final_dest_gid); + s->agg_link_traffic[current_window][output_port] += (cur_entry->msg.packet_size % + s->params->chunk_size); + } } else { bf->c12 = 1; s->link_traffic[output_port] += s->params->chunk_size; s->link_traffic_sample[output_port] += s->params->chunk_size; s->ross_rsample.link_traffic_sample[output_port] += s->params->chunk_size; s->link_traffic_ross_sample[output_port] += s->params->chunk_size; + //Xin: update link traffic data + if(update && current_window >= 0){ + s->agg_link_traffic[current_window][output_port] += s->params->chunk_size; + } } + + if(cur_entry->msg.packet_ID == LLU(TRACK_PKT) && cur_entry->msg.src_terminal_id == T_ID) printf("\n Queuing at the router %d ", s->router_id); /* Determine the event type. If the packet has arrived at the final @@ -3563,6 +3682,15 @@ static void router_buf_update_rc(router_state * s, s->ross_rsample.busy_time[indx] = msg->saved_sample_time; s->busy_time_ross_sample[indx] = msg->saved_busy_time_ross; s->last_buf_full[indx][output_chan] = msg->saved_busy_time; + + //Xin: reverse agg busytime (not working for cross window reverse) + const dragonfly_param *p = s->params; + if(s->params->counting_bool>0 && msg->last_bufupdate_time >= s->params->counting_start) { + int current_window = (int) ((msg->last_bufupdate_time - s->params->counting_start)/s->params->counting_interval); + if(current_window < s->params->counting_windows) { + s->agg_busy_time[current_window][indx] = msg->saved_rcv_time; + } + } } if(bf->c1) { terminal_custom_message_list* head = return_tail(s->pending_msgs[indx], @@ -3596,6 +3724,23 @@ static void router_buf_update(router_state * s, tw_bf * bf, terminal_custom_mess s->busy_time_sample[indx] += (tw_now(lp) - s->last_buf_full[indx][output_chan]); s->ross_rsample.busy_time[indx] += (tw_now(lp) - s->last_buf_full[indx][output_chan]); s->busy_time_ross_sample[indx] += (tw_now(lp) - s->last_buf_full[indx][output_chan]); + + //Xin: agg busy time + const dragonfly_param *p = s->params; + msg->last_bufupdate_time = tw_now(lp); + if(s->params->counting_bool>0 && msg->last_bufupdate_time >= s->params->counting_start) { + int current_window = (int) ((msg->last_bufupdate_time - s->params->counting_start)/s->params->counting_interval); + if(current_window < s->params->counting_windows) { + int full_window = (int) ((s->last_buf_full[indx][output_chan] - s->params->counting_start)/s->params->counting_interval); + if(full_window==current_window) { + s->agg_busy_time[current_window][indx] += (tw_now(lp) - s->last_buf_full[indx][output_chan]); + } else { + s->agg_busy_time[current_window][indx] += (tw_now(lp) - (s->params->counting_start+current_window*s->params->counting_interval)); + s->agg_busy_time[full_window][indx] += ((s->params->counting_start+current_window*s->params->counting_interval) - s->last_buf_full[indx][output_chan]); + } + } + } + s->last_buf_full[indx][output_chan] = 0.0; } if(s->queued_msgs[indx][output_chan] != NULL) { diff --git a/src/networks/model-net/dragonfly-dally.C b/src/networks/model-net/dragonfly-dally.C index a45c48d3..8cbc2fc7 100644 --- a/src/networks/model-net/dragonfly-dally.C +++ b/src/networks/model-net/dragonfly-dally.C @@ -244,6 +244,14 @@ struct dragonfly_param double router_delay; int max_hops_notify; //maximum number of hops allowed before notifying via printout + + //Xin: parameters for message counters of apps + int counting_bool; + tw_stime counting_start; + tw_stime counting_interval; + int counting_windows; + int num_apps; + }; static const dragonfly_param* stored_params; @@ -591,6 +599,13 @@ struct router_state long fwd_events; long rev_events; + //Xin: buffer for output data + char output_buf5[4096]; + char output_buf6[4096]; + //Xin: msg couters for apps + tw_stime **agg_busy_time; + int64_t **agg_link_traffic; + /* following used for ROSS model-level stats collection */ tw_stime* busy_time_ross_sample; int64_t * link_traffic_ross_sample; @@ -1810,6 +1825,24 @@ static void dragonfly_read_config(const char * anno, dragonfly_param *params) if(p->num_qos_levels > 1) p->num_vcs = p->num_qos_levels * p->num_vcs; + //Xin: app msgs counting on routers + rc = configuration_get_value_int(&config, "PARAMS", "counting_bool", anno, &p->counting_bool); + if(p->counting_bool) { + int rc1 = configuration_get_value_double(&config, "PARAMS", "counting_start", anno, &p->counting_start); + int rc2 = configuration_get_value_int(&config, "PARAMS", "counting_windows", anno, &p->counting_windows); + int rc3 = configuration_get_value_double(&config, "PARAMS", "counting_interval", anno, &p->counting_interval); + int rc4 = configuration_get_value_int(&config, "PARAMS", "num_apps", anno, &p->num_apps); + if(rc1 || rc2 || rc3 || rc4) + tw_error(TW_LOC, "\n Missing couting values, (counting_start/windows/interval/num_apps) check for config files\n"); + + //convert us to ns + p->counting_start = p->counting_start * 1000; + p->counting_interval = p->counting_interval * 1000; + + //printf("start %f, end %f, interval %f\n", p->counting_start, p->counting_end, p->counting_interval); + } + + rc = configuration_get_value_int(&config, "PARAMS", "num_groups", anno, &p->num_groups); if(rc) { tw_error(TW_LOC, "\nnum_groups not specified, Aborting\n"); @@ -3106,6 +3139,22 @@ void router_dally_init(router_state * r, tw_lp * lp) router_send_snapshot_events(r, lp); } + //Xin: msg counters for apps + if(p->counting_bool > 0) + { + r->agg_link_traffic = (int64_t **) calloc(p->counting_windows, sizeof(int64_t *)); + r->agg_busy_time = (tw_stime **) malloc (p->counting_windows * sizeof(tw_stime *)); + + for (int i = 0; i < p->counting_windows; ++i) + { + r->agg_link_traffic[i] = (int64_t*) calloc(p->radix, sizeof(int64_t)); + // r->agg_link_traffic[i] = (int64_t*) calloc(p->radix*p->num_apps, sizeof(int64_t)); + r->agg_busy_time[i] = (tw_stime*) malloc(p->radix * sizeof(tw_stime)); + for(int j = 0; j < p->radix; j++) + r->agg_busy_time[i][j] = 0.0; + } + } + return; } @@ -4478,6 +4527,35 @@ void dragonfly_dally_router_final(router_state * s, tw_lp * lp){ // dragonfly_print_params(s->params); // } // } + + //Xin: output link statistics + if(p->counting_bool) + { + // for link traffic + if(!s->router_id){ + written = sprintf(s->output_buf5, "# Format \n"); + lp_io_write(lp->gid, (char*)"dragonfly-router-traffic-sample", written, s->output_buf5); + } + for(int i=0; i < p->counting_windows; i++) { + written = sprintf(s->output_buf5, "\n %llu %d %d %lf", LLU(lp->gid), s->router_id / p->num_routers, s->router_id , (p->counting_start+(i+1)*p->counting_interval)); + for (int d=0; d < p->radix; d++) + written += sprintf(s->output_buf5 + written, " %d", (s->agg_link_traffic[i][d])); + lp_io_write(lp->gid, (char*)"dragonfly-router-traffic-sample", written, s->output_buf5); + } + + // for link busy time + if(!s->router_id){ + written = sprintf(s->output_buf6, "# Format \n"); + lp_io_write(lp->gid, (char*)"dragonfly-router-busytime-sample", written, s->output_buf6); + } + for(int i=0; i < p->counting_windows; i++) { + written = sprintf(s->output_buf6, "\n %llu %d %d %lf", LLU(lp->gid), s->router_id / p->num_routers, s->router_id , (p->counting_start+(i+1)*p->counting_interval)); + for (int d=0; d < p->radix; d++) + written += sprintf(s->output_buf6 + written, " %lf", (s->agg_busy_time[i][d])); + lp_io_write(lp->gid, (char*)"dragonfly-router-busytime-sample", written, s->output_buf6); + } + } + } static Connection do_dfdally_routing(router_state *s, tw_bf *bf, terminal_dally_message *msg, tw_lp *lp, int fdest_router_id) @@ -4704,6 +4782,13 @@ static void router_packet_receive_rc(router_state * s, { int output_port = msg->saved_vc; int output_chan = msg->saved_channel; + + for(int i = 0 ; i < msg->num_cll; i++) + codes_local_latency_reverse(lp); + + for(int i = 0; i < msg->num_rngs; i++) + tw_rand_reverse_unif(lp->rng); + int src_term_id = msg->dfdally_src_terminal_id; int app_id = msg->saved_app_id; @@ -4972,7 +5057,18 @@ static void router_packet_send_rc(router_state * s, tw_bf * bf, terminal_dally_m if(msg->last_saved_qos) s->last_qos_lvl[output_port] = msg->last_saved_qos; - + + //Xin: target window to rollback + bool rolback = false; + int current_window = -1; + const dragonfly_param *p = s->params; + if(s->params->counting_bool>0 && msg->last_sent_time >= s->params->counting_start) { + current_window = (int) ((msg->last_sent_time-s->params->counting_start)/s->params->counting_interval); + if(current_window < s->params->counting_windows) { + rolback = true; + } + } + if(bf->c1) { s->in_send_loop[output_port] = msg->saved_send_loop; if(bf->c2) { @@ -4988,6 +5084,11 @@ static void router_packet_send_rc(router_state * s, tw_bf * bf, terminal_dally_m s->busy_time_sample[output_port] = msg->saved_sample_time; s->ross_rsample.busy_time[output_port] = msg->saved_sample_time; s->last_buf_full[output_port] = msg->saved_busy_time; + + //Xin: reverse busy time + if(rolback && current_window >= 0){ + s->agg_busy_time[current_window][output_port] = msg->saved_rcv_time; + } } terminal_dally_message_list * cur_entry = (terminal_dally_message_list *)rc_stack_pop(s->st); @@ -5010,6 +5111,11 @@ static void router_packet_send_rc(router_state * s, tw_bf * bf, terminal_dally_m s->link_traffic_sample[output_port] -= cur_entry->msg.packet_size % s->params->chunk_size; s->ross_rsample.link_traffic_sample[output_port] -= cur_entry->msg.packet_size % s->params->chunk_size; s->link_traffic_ross_sample[output_port] -= cur_entry->msg.packet_size % s->params->chunk_size; + + //Xin: reverse link traffic + if(rolback && current_window >= 0){ + s->agg_link_traffic[current_window][output_port] -= cur_entry->msg.packet_size % s->params->chunk_size; + } } if(bf->c12) { @@ -5017,6 +5123,11 @@ static void router_packet_send_rc(router_state * s, tw_bf * bf, terminal_dally_m s->link_traffic_sample[output_port] -= s->params->chunk_size; s->ross_rsample.link_traffic_sample[output_port] -= s->params->chunk_size; s->link_traffic_ross_sample[output_port] -= s->params->chunk_size; + + //Xin: reverse link traffic + if(rolback && current_window >= 0){ + s->agg_link_traffic[current_window][output_port] -= s->params->chunk_size; + } } s->total_chunks[output_port]--; @@ -5054,6 +5165,18 @@ static void router_packet_send( router_state * s, tw_bf * bf, terminal_dally_mes msg->saved_vc = output_port; msg->saved_channel = output_chan; + + //Xin: target window to update link traffic + msg->last_sent_time = tw_now(lp); + bool update = false; + int current_window = -1; + const dragonfly_param *p = s->params; + if(s->params->counting_bool>0 && msg->last_sent_time >= s->params->counting_start) { + current_window = (int) ((msg->last_sent_time - s->params->counting_start)/s->params->counting_interval); + if(current_window < s->params->counting_windows) { + update = true; + } + } if(output_chan < 0) { @@ -5084,6 +5207,11 @@ static void router_packet_send( router_state * s, tw_bf * bf, terminal_dally_mes s->busy_time_sample[output_port] += (tw_now(lp) - s->last_buf_full[output_port]); s->ross_rsample.busy_time[output_port] += (tw_now(lp) - s->last_buf_full[output_port]); s->last_buf_full[output_port] = 0.0; + + //Xin: update link busy time + if(update && current_window >= 0){ + s->agg_busy_time[current_window][output_port] += (tw_now(lp) - s->last_buf_full[output_port]); + } } int vcg = 0; @@ -5176,6 +5304,11 @@ static void router_packet_send( router_state * s, tw_bf * bf, terminal_dally_mes s->ross_rsample.link_traffic_sample[output_port] += (cur_entry->msg.packet_size % s->params->chunk_size); s->link_traffic_ross_sample[output_port] += (cur_entry->msg.packet_size % s->params->chunk_size); msg_size = cur_entry->msg.packet_size % s->params->chunk_size; + + //Xin: update link traffic + if(update && current_window >= 0){ + s->agg_link_traffic[current_window][output_port] += (cur_entry->msg.packet_size % s->params->chunk_size); + } } else { bf->c12 = 1; @@ -5183,6 +5316,11 @@ static void router_packet_send( router_state * s, tw_bf * bf, terminal_dally_mes s->link_traffic_sample[output_port] += s->params->chunk_size; s->ross_rsample.link_traffic_sample[output_port] += s->params->chunk_size; s->link_traffic_ross_sample[output_port] += s->params->chunk_size; + + //Xin: update link traffic + if(update && current_window >= 0){ + s->agg_link_traffic[current_window][output_port] += s->params->chunk_size; + } } s->total_chunks[output_port]++; @@ -5258,6 +5396,15 @@ static void router_buf_update_rc(router_state * s, s->ross_rsample.busy_time[indx] = msg->saved_sample_time; s->busy_time_ross_sample[indx] = msg->saved_busy_time_ross; s->last_buf_full[indx] = msg->saved_busy_time; + + //Xin: reverse agg busytime (not working for cross window reverse) + const dragonfly_param *p = s->params; + if(s->params->counting_bool>0 && msg->last_bufupdate_time >= s->params->counting_start) { + int current_window = (int) ((msg->last_bufupdate_time - s->params->counting_start)/s->params->counting_interval); + if(current_window < s->params->counting_windows) { + s->agg_busy_time[current_window][indx] = msg->saved_rcv_time; + } + } } if(bf->c1) { terminal_dally_message_list* head = return_tail(s->pending_msgs[indx], @@ -5290,6 +5437,23 @@ static void router_buf_update(router_state * s, tw_bf * bf, terminal_dally_messa s->busy_time_sample[indx] += (tw_now(lp) - s->last_buf_full[indx]); s->ross_rsample.busy_time[indx] += (tw_now(lp) - s->last_buf_full[indx]); s->busy_time_ross_sample[indx] += (tw_now(lp) - s->last_buf_full[indx]); + + //Xin: update link busy time + const dragonfly_param *p = s->params; + msg->last_bufupdate_time = tw_now(lp); + if(s->params->counting_bool>0 && msg->last_bufupdate_time >= s->params->counting_start) { + int current_window = (int) ((msg->last_bufupdate_time - s->params->counting_start)/s->params->counting_interval); + if(current_window < s->params->counting_windows) { + int full_window = (int) ((s->last_buf_full[indx] - s->params->counting_start)/s->params->counting_interval); + if(full_window==current_window) { + s->agg_busy_time[current_window][indx] += (tw_now(lp) - s->last_buf_full[indx]); + } else { + s->agg_busy_time[current_window][indx] += (tw_now(lp) - (s->params->counting_start+current_window*s->params->counting_interval)); + s->agg_busy_time[full_window][indx] += ((s->params->counting_start+current_window*s->params->counting_interval) - s->last_buf_full[indx]); + } + } + } + s->last_buf_full[indx] = 0.0; } diff --git a/src/workload/codes-workload-dump.c b/src/workload/codes-workload-dump.c index 18756bba..73631869 100644 --- a/src/workload/codes-workload-dump.c +++ b/src/workload/codes-workload-dump.c @@ -215,7 +215,7 @@ int main(int argc, char *argv[]) wparams = (char*)&d_params; } } - else if(strcmp(type, "online_comm_workload") == 0){ + else if(strcmp(type, "swm_online_comm_workload") == 0 || strcmp(type, "conc_online_comm_workload") == 0){ if (n == -1){ fprintf(stderr, "Expected \"--num-ranks\" argument for online workload\n"); @@ -448,7 +448,7 @@ int main(int argc, char *argv[]) } } while (op.op_type != CODES_WK_END); - if(strcmp(type, "online_comm_workload") == 0) + if(strcmp(type, "swm_online_comm_workload") == 0 || strcmp(type, "conc_online_comm_workload") == 0) { codes_workload_finalize(type, wparams, 0, i); } diff --git a/src/workload/codes-workload.c b/src/workload/codes-workload.c index 91cd49d4..a7f96506 100644 --- a/src/workload/codes-workload.c +++ b/src/workload/codes-workload.c @@ -35,9 +35,14 @@ extern struct codes_workload_method darshan_mpi_io_workload_method; #ifdef USE_RECORDER extern struct codes_workload_method recorder_io_workload_method; #endif -#ifdef USE_ONLINE -extern struct codes_workload_method online_comm_workload_method; + +#ifdef USE_SWM +extern struct codes_workload_method swm_online_comm_workload_method; +#endif +#ifdef USE_UNION +extern struct codes_workload_method conc_online_comm_workload_method; #endif + extern struct codes_workload_method checkpoint_workload_method; extern struct codes_workload_method iomock_workload_method; @@ -59,8 +64,11 @@ static struct codes_workload_method const * method_array_default[] = #endif #endif -#ifdef USE_ONLINE - &online_comm_workload_method, +#ifdef USE_SWM + &swm_online_comm_workload_method, +#endif +#ifdef USE_UNION + &conc_online_comm_workload_method, #endif #ifdef USE_RECORDER &recorder_io_workload_method, diff --git a/src/workload/methods/codes-conc-online-comm-wrkld.C b/src/workload/methods/codes-conc-online-comm-wrkld.C new file mode 100644 index 00000000..e961b1c8 --- /dev/null +++ b/src/workload/methods/codes-conc-online-comm-wrkld.C @@ -0,0 +1,2072 @@ +/* + * Copyright (C) 2014 University of Chicago + * See COPYRIGHT notice in top-level directory. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "codes/codes-workload.h" +#include "codes/quickhash.h" +#include "codes/codes-jobmap.h" +#include "codes_config.h" +#include "union_util.h" + +//#ifdef USE_SWM +#include "lammps.h" +#include "nekbone_swm_user_code.h" +#include "nearest_neighbor_swm_user_code.h" +#include "all_to_one_swm_user_code.h" +#include "milc_swm_user_code.h" +#include "abt.h" +//#endif + +#define ALLREDUCE_SHORT_MSG_SIZE 2048 + +#define DBG_COMM 0 +#define DBG_LINKING 0 +#define DBG_TMP 0 +#define CHECKPOINT_HASH_TABLE_SIZE 251 +#define DEFAULT_WR_BUF_SIZE (16 * 1024 * 1024) /* 16 MiB default */ + +#define THISMIN(a,b) ((a) < (b)) ? (a) : (b) + +using namespace std; + +static struct qhash_table *rank_tbl = NULL; +static int rank_tbl_pop = 0; +static int total_rank_cnt = 0; +static ABT_thread global_prod_thread = NULL; +static ABT_xstream self_es; +static long cpu_freq = 1.0; +static long num_allreduce = 0; +static long num_isends = 0; +static long num_irecvs = 0; +static long num_barriers = 0; +static long num_sends = 0; +static long num_recvs = 0; +static long num_sendrecv = 0; +static long num_waitalls = 0; + +//static std::map send_count; +//static std::map isend_count; +//static std::map allreduce_count; + +struct shared_context { + int my_rank; + uint32_t wait_id; + int num_ranks; + char workload_name[MAX_NAME_LENGTH_WKLD]; + void * swm_obj; + void * conc_params; + bool isconc; + ABT_thread producer; + std::deque fifo; +}; + +struct rank_mpi_context { + struct qhash_head hash_link; + int app_id; + struct shared_context sctx; +}; + +typedef struct rank_mpi_compare { + int app_id; + int rank; +} rank_mpi_compare; + + +/* Conceptual online workload implementations */ +void UNION_MPI_Comm_size (UNION_Comm comm, int *size) +{ + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err; + + err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + + *size = sctx->num_ranks; + // printf("ranks %d\n", sctx->num_ranks); +} + +void UNION_MPI_Comm_rank( UNION_Comm comm, int *rank ) +{ + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err; + + err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + + *rank = sctx->my_rank; +} + +void UNION_MPI_Finalize() +{ + /* Add an event in the shared queue and then yield */ + struct codes_workload_op wrkld_per_rank; + + wrkld_per_rank.op_type = CODES_WK_END; + + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + sctx->fifo.push_back(&wrkld_per_rank); + + if(DBG_COMM){ + printf("\nUNION FINALIZE src %d ", sctx->my_rank); + printf("\nnum_sends %ld num_recvs %ld num_isends %ld num_irecvs %ld num_allreduce %ld num_barrier %ld num_waitalls %ld\n", + num_sends, num_recvs, num_isends, num_irecvs, num_allreduce, num_barriers, num_waitalls); + // printf("Rank %d yield to CODES thread: %p\n", sctx->my_rank, global_prod_thread); + } + + ABT_thread_yield_to(global_prod_thread); +} + +void UNION_Compute(long cycle_count) +{ + /* Add an event in the shared queue and then yield */ + struct codes_workload_op wrkld_per_rank; + + wrkld_per_rank.op_type = CODES_WK_DELAY; + wrkld_per_rank.u.delay.nsecs = cycle_count; + wrkld_per_rank.u.delay.seconds = (cycle_count) / (1000.0 * 1000.0 * 1000.0); + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + sctx->fifo.push_back(&wrkld_per_rank); + if(DBG_COMM){ + printf("\nUNION COMPUTE src %d: %ld ns ", sctx->my_rank, cycle_count); + } + ABT_thread_yield_to(global_prod_thread); +} + +void UNION_Mark_Iteration(UNION_TAG iter_tag) +{ + /* Add an event in the shared queue and then yield */ + struct codes_workload_op wrkld_per_rank; + + wrkld_per_rank.op_type = CODES_WK_MARK; + wrkld_per_rank.u.send.tag = iter_tag; + + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + wrkld_per_rank.u.send.source_rank = sctx->my_rank; + sctx->fifo.push_back(&wrkld_per_rank); + + if(DBG_COMM){ + printf("\nUNION MARKITERATION src %d ", sctx->my_rank); + } + + ABT_thread_yield_to(global_prod_thread); +} + + +void UNION_IO_OPEN_FILE(int fid) +{ + struct codes_workload_op op; + op.op_type = CODES_WK_OPEN; + op.u.open.file_id = fid; + op.u.open.create_flag = 1; + + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + sctx->fifo.push_back(&op); + + if(DBG_TMP){ + printf("\nUNION IO OPEN src %d ", sctx->my_rank); + } + + ABT_thread_yield_to(global_prod_thread); + +} + +void UNION_IO_WRITE(int fid, long size) +{ + struct codes_workload_op op; + op.op_type = CODES_WK_WRITE; + op.u.write.file_id = fid; + op.u.write.offset = 0; + op.u.write.size = size; + + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + sctx->fifo.push_back(&op); + + if(DBG_TMP){ + printf("\nUNION IO WRITE src %d ", sctx->my_rank); + } + + ABT_thread_yield_to(global_prod_thread); +} + +void UNION_IO_READ(int fid, long size) +{ + struct codes_workload_op op; + op.op_type = CODES_WK_READ; + op.u.read.file_id = fid; + op.u.read.offset = 0; + op.u.read.size = size; + + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + sctx->fifo.push_back(&op); + + if(DBG_TMP){ + printf("\nUNION IO READ src %d ", sctx->my_rank); + } + + ABT_thread_yield_to(global_prod_thread); +} + +void UNION_IO_CLOSE_FILE(int fid) +{ + struct codes_workload_op op; + op.op_type = CODES_WK_CLOSE; + op.u.close.file_id = fid; + + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + sctx->fifo.push_back(&op); + + if(DBG_TMP){ + printf("\nUNION IO READ src %d ", sctx->my_rank); + } + + ABT_thread_yield_to(global_prod_thread); +} + +void UNION_MPI_Send(const void *buf, + int count, + UNION_Datatype datatype, + int dest, + int tag, + UNION_Comm comm) +{ + /* add an event in the shared queue and then yield */ + struct codes_workload_op wrkld_per_rank; + + int datatypesize; + UNION_Type_size(datatype, &datatypesize); + + wrkld_per_rank.op_type = CODES_WK_SEND; + wrkld_per_rank.u.send.tag = tag; + wrkld_per_rank.u.send.count = count; + wrkld_per_rank.u.send.data_type = datatype; + wrkld_per_rank.u.send.num_bytes = count * datatypesize; + wrkld_per_rank.u.send.dest_rank = dest; + + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + wrkld_per_rank.u.send.source_rank = sctx->my_rank; + sctx->fifo.push_back(&wrkld_per_rank); + if(DBG_TMP){ + printf("\nUNION SEND src %d dst %d: %lld bytes ", sctx->my_rank, dest, + wrkld_per_rank.u.send.num_bytes); + // printf("Rank %d yield to CODES thread: %p\n", sctx->my_rank, global_prod_thread); + } + int rc = ABT_thread_yield_to(global_prod_thread); + num_sends++; +} + +void UNION_MPI_Recv(void *buf, + int count, + UNION_Datatype datatype, + int source, + int tag, + UNION_Comm comm, + UNION_Status *status) +{ + /* Add an event in the shared queue and then yield */ + struct codes_workload_op wrkld_per_rank; + + int datatypesize; + UNION_Type_size(datatype, &datatypesize); + + wrkld_per_rank.op_type = CODES_WK_RECV; + wrkld_per_rank.u.recv.tag = tag; + wrkld_per_rank.u.recv.source_rank = source; + wrkld_per_rank.u.recv.data_type = datatype; + wrkld_per_rank.u.recv.count = count; + wrkld_per_rank.u.recv.num_bytes = count * datatypesize; + + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + wrkld_per_rank.u.recv.dest_rank = sctx->my_rank; + sctx->fifo.push_back(&wrkld_per_rank); + if(DBG_COMM){ + printf("\nUNION RECV src %d dst %d: %lld bytes ", source, sctx->my_rank, + wrkld_per_rank.u.recv.num_bytes); + // printf("Rank %d yield to CODES thread: %p\n", sctx->my_rank, global_prod_thread); + } + + ABT_thread_yield_to(global_prod_thread); + num_recvs++; +} + +void UNION_MPI_Sendrecv(const void *sendbuf, + int sendcount, + UNION_Datatype sendtype, + int dest, + int sendtag, + void *recvbuf, + int recvcount, + UNION_Datatype recvtype, + int source, + int recvtag, + UNION_Comm comm, + UNION_Status *status) +{ + /* sendrecv events */ + struct codes_workload_op send_op; + + int datatypesize1, datatypesize2; + UNION_Type_size(sendtype, &datatypesize1); + UNION_Type_size(recvtype, &datatypesize2); + + send_op.op_type = CODES_WK_SEND; + send_op.u.send.tag = sendtag; + send_op.u.send.count = sendcount; + send_op.u.send.data_type = sendtype; + send_op.u.send.num_bytes = sendcount * datatypesize1; + send_op.u.send.dest_rank = dest; + + struct codes_workload_op recv_op; + + recv_op.op_type = CODES_WK_RECV; + recv_op.u.recv.tag = recvtag; + recv_op.u.recv.source_rank = source; + recv_op.u.recv.count = recvcount; + recv_op.u.recv.data_type = recvtype; + recv_op.u.recv.num_bytes = recvcount * datatypesize2; + + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + + /* Add an event in the shared queue and then yield */ + recv_op.u.recv.dest_rank = sctx->my_rank; + send_op.u.send.source_rank = sctx->my_rank; + sctx->fifo.push_back(&send_op); + sctx->fifo.push_back(&recv_op); + if(DBG_COMM){ + printf("\nUNION SENDRECV ssrc %d sdst %d: %lld bytes; rsrc %d rdst %d: %lld bytes ", sctx->my_rank, dest, + send_op.u.send.num_bytes, source, sctx->my_rank, recv_op.u.recv.num_bytes); + } + ABT_thread_yield_to(global_prod_thread); + num_sendrecv++; +} + + +void UNION_MPI_Barrier(UNION_Comm comm) +{ + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err; + int rank, size, src, dest, mask; + + err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + + rank = sctx->my_rank; + size = sctx->num_ranks; + mask = 0x1; + + while(mask < size) { + dest = (rank + mask) % size; + src = (rank - mask + size) % size; + + UNION_MPI_Sendrecv(NULL, 0, UNION_Int, dest, 1234, NULL, 0, UNION_Int, src, 1234, + comm, NULL); + + mask <<= 1; + } + num_barriers++; + // if(DBG_COMM){ + // printf("UNION BARRIER src %d\n", sctx->my_rank); + // } +} + +void UNION_MPI_Isend(const void *buf, + int count, + UNION_Datatype datatype, + int dest, + int tag, + UNION_Comm comm, + UNION_Request *request) +{ + /* add an event in the shared queue and then yield */ + // printf("\n Sending to rank %d ", comm_id); + struct codes_workload_op wrkld_per_rank; + + int datatypesize; + UNION_Type_size(datatype, &datatypesize); + + wrkld_per_rank.op_type = CODES_WK_ISEND; + wrkld_per_rank.u.send.tag = tag; + wrkld_per_rank.u.send.count = count; + wrkld_per_rank.u.send.data_type = datatype; + wrkld_per_rank.u.send.num_bytes = count * datatypesize; + wrkld_per_rank.u.send.dest_rank = dest; + + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + wrkld_per_rank.u.send.source_rank = sctx->my_rank; + sctx->fifo.push_back(&wrkld_per_rank); + + *request = sctx->wait_id; + wrkld_per_rank.u.send.req_id = *request; + sctx->wait_id++; + if(DBG_COMM){ + printf("\nUNION ISEND src %d dst %d: %lld bytes ", sctx->my_rank, dest, + wrkld_per_rank.u.send.num_bytes); + } + + ABT_thread_yield_to(global_prod_thread); + num_isends++; +} + +void UNION_MPI_Irecv(void *buf, + int count, + UNION_Datatype datatype, + int source, + int tag, + UNION_Comm comm, + UNION_Request *request) +{ + /* Add an event in the shared queue and then yield */ + struct codes_workload_op wrkld_per_rank; + + int datatypesize; + UNION_Type_size(datatype, &datatypesize); + + wrkld_per_rank.op_type = CODES_WK_IRECV; + wrkld_per_rank.u.recv.tag = tag; + wrkld_per_rank.u.recv.source_rank = source; + wrkld_per_rank.u.recv.count = count; + wrkld_per_rank.u.recv.data_type = datatype; + wrkld_per_rank.u.recv.num_bytes = count * datatypesize; + + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + wrkld_per_rank.u.recv.dest_rank = sctx->my_rank; + sctx->fifo.push_back(&wrkld_per_rank); + + *request = sctx->wait_id; + wrkld_per_rank.u.recv.req_id = *request; + sctx->wait_id++; + if(DBG_COMM){ + printf("\nUNION IRECV src %d dst %d: %lld bytes ", source, sctx->my_rank, + wrkld_per_rank.u.recv.num_bytes); + } + ABT_thread_yield_to(global_prod_thread); + num_irecvs++; +} + +void UNION_MPI_Wait(UNION_Request *request, + UNION_Status *status) +{ + /* Add an event in the shared queue and then yield */ + struct codes_workload_op wrkld_per_rank; + + wrkld_per_rank.op_type = CODES_WK_WAIT; + wrkld_per_rank.u.wait.req_id = *(UNION_Request *)request; + + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + sctx->fifo.push_back(&wrkld_per_rank); + if(DBG_COMM){ + printf("\nUNION WAIT src %d ",sctx->my_rank); + } + ABT_thread_yield_to(global_prod_thread); +} + +void UNION_MPI_Waitall(int count, + UNION_Request array_of_requests[], + UNION_Status array_of_statuses[]) +{ + num_waitalls++; + for(int i = 0; i < count; i++) + UNION_MPI_Wait(&array_of_requests[i], UNION_STATUSES_IGNORE); + + // if(DBG_COMM){ + // printf("UNION WAITALL count %d\n", count); + // } +} + +void UNION_MPI_Reduce(const void *sendbuf, + void *recvbuf, + int count, + UNION_Datatype datatype, + UNION_Op op, + int root, + UNION_Comm comm) +{ + //todo +} + +void UNION_MPI_Allreduce(const void *sendbuf, + void *recvbuf, + int count, + UNION_Datatype datatype, + UNION_Op op, + UNION_Comm comm) +{ + int comm_size, rank, type_size, i, send_idx, recv_idx, last_idx, send_cnt, recv_cnt; + int pof2, mask, rem, newrank, newdst, dst, *cnts, *disps; + + UNION_MPI_Comm_size(comm, &comm_size); + UNION_MPI_Comm_rank(comm, &rank); + UNION_Type_size(datatype, &type_size); + + cnts = disps = NULL; + + pof2 = 1; + while (pof2 <= comm_size) pof2 <<= 1; + pof2 >>=1; + + rem = comm_size - pof2; + + /* In the non-power-of-two case, all even-numbered + processes of rank < 2*rem send their data to + (rank+1). These even-numbered processes no longer + participate in the algorithm until the very end. The + remaining processes form a nice power-of-two. */ + if (rank < 2*rem) { + if (rank % 2 == 0) { /* even */ + UNION_MPI_Send(NULL, count, datatype, rank+1, -1002, comm); + newrank = -1; + } else { /* odd */ + UNION_MPI_Recv(NULL, count, datatype, rank-1, -1002, comm, NULL); + newrank = rank / 2; + } + } else { + newrank = rank - rem; + } + + /* If op is user-defined or count is less than pof2, use + recursive doubling algorithm. Otherwise do a reduce-scatter + followed by allgather. (If op is user-defined, + derived datatypes are allowed and the user could pass basic + datatypes on one process and derived on another as long as + the type maps are the same. Breaking up derived + datatypes to do the reduce-scatter is tricky, therefore + using recursive doubling in that case.) */ + if (newrank != -1) { + if ((count*type_size <= 81920 ) || (count < pof2)) { + mask = 0x1; + while (mask < pof2) { + newdst = newrank ^ mask; + dst = (newdst < rem) ? newdst*2 + 1 : newdst + rem; + + UNION_MPI_Sendrecv(NULL, count, datatype, dst, -1002, NULL, count, datatype, dst, -1002, comm, NULL); + mask <<= 1; + } + } else { + /* do a reduce-scatter followed by allgather */ + /* for the reduce-scatter, calculate the count that + each process receives and the displacement within + the buffer */ + + cnts = (int*)malloc(pof2*sizeof(int)); + disps = (int*)malloc(pof2*sizeof(int)); + + for (i=0; i<(pof2-1); i++) + cnts[i] = count/pof2; + cnts[pof2-1] = count - (count/pof2)*(pof2-1); + + disps[0] = 0; + for (i=1; i>= 1; + while (mask > 0) { + newdst = newrank ^ mask; + /* find real rank of dest */ + dst = (newdst < rem) ? newdst*2 + 1 : newdst + rem; + + send_cnt = recv_cnt = 0; + if (newrank < newdst) { + if (mask != pof2/2) + last_idx = last_idx + pof2/(mask*2); + + recv_idx = send_idx + pof2/(mask*2); + for (i=send_idx; i newdst) send_idx = recv_idx; + mask >>= 1; + } + } + } + + if(rank < 2*rem) { + if(rank % 2) {/* odd */ + UNION_MPI_Send(NULL, count, datatype, rank-1, -1002, comm); + } else { + UNION_MPI_Recv(NULL, count, datatype, rank+1, -1002, comm, NULL); + } + } + + if(cnts) free(cnts); + if(disps) free(disps); +} + + +void bcast_binomial(void *buffer, + int rank, + int count, + UNION_Datatype datatype, + int root, + UNION_Comm comm) +{ + int comm_size, src, dst, relative_rank, mask; + UNION_Status status; + UNION_MPI_Comm_size(comm, &comm_size); + + relative_rank = (rank >= root) ? rank - root : rank - root + comm_size; + + mask = 0x1; + while(mask < comm_size) + { + if(relative_rank & mask) + { + src = rank - mask; + if(src < 0) src += comm_size; + UNION_MPI_Recv(buffer,count,datatype,src,-1005,comm, &status); + break; + } + mask <<= 1; + } + + mask >>=1; + while(mask > 0) + { + if(relative_rank + mask < comm_size) + { + dst = rank + mask; + if(dst >= comm_size) dst -= comm_size; + UNION_MPI_Send(buffer,count,datatype,dst,-1005,comm); + } + mask >>= 1; + } +} + +void bcast_scatter_doubling_allgather(void *buffer, + int rank, + int count, + UNION_Datatype datatype, + int root, + UNION_Comm comm) +{ + int comm_size, dst, relative_rank, mask, scatter_size, curr_size, recvcount, recv_size = 0; + UNION_Status status; + int j, k, i, tmp_mask; + int type_size, nbytes = 0; + int relative_dst, dst_tree_root, my_tree_root, send_offset, recv_offset; + + UNION_Type_size(datatype, &type_size); + UNION_MPI_Comm_size(comm, &comm_size); + + relative_rank = (rank >= root) ? rank - root : rank - root + comm_size; + + if(comm_size == 1) return; + + nbytes = type_size * count; + if(nbytes == 0) return; + + scatter_size = (nbytes + comm_size - 1)/comm_size; /* ceiling division */ + curr_size = THISMIN(scatter_size, (nbytes - (relative_rank * scatter_size))); + + if (curr_size < 0) curr_size = 0; + + mask = 0x1; + i = 0; + + while(mask < comm_size) { + relative_dst = relative_rank ^ mask; + dst = (relative_dst + root) % comm_size; + + dst_tree_root = relative_dst >> i; + dst_tree_root <<= i; + + my_tree_root = relative_rank >> i; + my_tree_root <<= i; + + send_offset = my_tree_root * scatter_size; + recv_offset = dst_tree_root * scatter_size; + + if(relative_dst < comm_size) + { + recvcount = (nbytes-recv_offset < 0 ? 0 : nbytes-recv_offset); + UNION_MPI_Sendrecv(buffer,curr_size,UNION_Byte,dst,-1005,buffer,recvcount,UNION_Byte,dst,-1005,comm,&status); + curr_size += recv_size; + } + + mask <<= 1; + i++; + } +} + +void bcast_scatter_ring_allgather(void *buffer, + int rank, + int count, + UNION_Datatype datatype, + int root, + UNION_Comm comm) +{ + int comm_size, scatter_size, j, i, nbytes, type_size; + int left, right, jnext, curr_size = 0; + int recvd_size; + UNION_Status status; + + UNION_Type_size(datatype, &type_size); + UNION_MPI_Comm_size(comm, &comm_size); + + if(comm_size == 1) return; + + nbytes = type_size * count; + if (nbytes == 0) return; + + scatter_size = (nbytes + comm_size - 1)/comm_size; /* ceiling division */ + + curr_size = THISMIN(scatter_size, nbytes - ((rank - root + comm_size) % comm_size) * scatter_size); + if(curr_size < 0) curr_size = 0; + + left = (comm_size + rank - 1) % comm_size; + right = (rank + 1) % comm_size; + j = rank; + jnext = left; + + for (i=1; isecond = it->second + 1; + } + }*/ +#endif + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + wrkld_per_rank.u.send.source_rank = sctx->my_rank; + sctx->fifo.push_back(&wrkld_per_rank); + + if(DBG_COMM){ + printf("\nSWM SEND src %d dst %d: %lld bytes ", sctx->my_rank, peer, + wrkld_per_rank.u.send.num_bytes); + // printf("Rank %d yield to CODES thread: %p\n", sctx->my_rank, global_prod_thread); + } + + ABT_thread_yield_to(global_prod_thread); + num_sends++; +} + +/* + * @param comm_id: communicator ID (For now, UNION_Comm_World) + * reqvc and rspvc: virtual channel IDs for request and response (ignore for + * our purpose) + * buf: buffer location for the call (ignore for our purpose) + * reqrt and rsprt: routing types, ignore and use routing from config file instead. + * */ +void SWM_Barrier( + SWM_COMM_ID comm_id, + SWM_VC reqvc, + SWM_VC rspvc, + SWM_BUF buf, + SWM_UNKNOWN auto1, + SWM_UNKNOWN2 auto2, + SWM_ROUTING_TYPE reqrt, + SWM_ROUTING_TYPE rsprt) +{ + /* Add an event in the shared queue and then yield */ +#if 0 + struct codes_workload_op wrkld_per_rank; + + wrkld_per_rank.op_type = CODES_WK_DELAY; + /* TODO: Check how to convert cycle count into delay? */ + wrkld_per_rank.u.delay.nsecs = 0.1; + +#ifdef DBG_COMM + printf("\n Barrier delay %lf ", wrkld_per_rank.u.delay.nsecs); +#endif + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + sctx->fifo.push_back(&wrkld_per_rank); + + ABT_thread_yield_to(global_prod_thread); +#endif +#ifdef DBG_COMM +// printf("\n barrier "); +#endif + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err; + int rank, size, src, dest, mask; + + err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + + rank = sctx->my_rank; + size = sctx->num_ranks; + mask = 0x1; + + while(mask < size) { + dest = (rank + mask) % size; + src = (rank - mask + size) % size; + + SWM_Sendrecv(comm_id, dest, 1234, reqvc, rspvc, 0, 0, 0, + src, 1234, 0, reqrt, rsprt); + mask <<= 1; + } + num_barriers++; +} + +void SWM_Isend(SWM_PEER peer, + SWM_COMM_ID comm_id, + SWM_TAG tag, + SWM_VC reqvc, + SWM_VC rspvc, + SWM_BUF buf, + SWM_BYTES bytes, + SWM_BYTES pktrspbytes, + uint32_t * handle, + SWM_ROUTING_TYPE reqrt, + SWM_ROUTING_TYPE rsprt) +{ + /* add an event in the shared queue and then yield */ + // printf("\n Sending to rank %d ", comm_id); + struct codes_workload_op wrkld_per_rank; + + wrkld_per_rank.op_type = CODES_WK_ISEND; + wrkld_per_rank.u.send.tag = tag; + wrkld_per_rank.u.send.num_bytes = bytes; + wrkld_per_rank.u.send.dest_rank = peer; + +#ifdef DBG_COMM +/* if(tag != 1235 && tag != 1234) + { + auto it = isend_count.find(bytes); + if(it == isend_count.end()) + { + isend_count.insert(std::make_pair(bytes, 1)); + } + else + { + it->second = it->second + 1; + } + }*/ +#endif + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + wrkld_per_rank.u.send.source_rank = sctx->my_rank; + sctx->fifo.push_back(&wrkld_per_rank); + + *handle = sctx->wait_id; + wrkld_per_rank.u.send.req_id = *handle; + sctx->wait_id++; + + if(DBG_COMM){ + printf("\nSWM ISEND src %d dst %d: %lld bytes ", sctx->my_rank, peer, + wrkld_per_rank.u.send.num_bytes); + } + + ABT_thread_yield_to(global_prod_thread); + num_isends++; +} +void SWM_Recv(SWM_PEER peer, + SWM_COMM_ID comm_id, + SWM_TAG tag, + SWM_BUF buf) +{ + /* Add an event in the shared queue and then yield */ + struct codes_workload_op wrkld_per_rank; + + wrkld_per_rank.op_type = CODES_WK_RECV; + wrkld_per_rank.u.recv.tag = tag; + wrkld_per_rank.u.recv.source_rank = peer; + wrkld_per_rank.u.recv.num_bytes = 0; + +#ifdef DBG_COMM + //printf("\n recv op tag: %d source: %d ", tag, peer); +#endif + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + wrkld_per_rank.u.recv.dest_rank = sctx->my_rank; + sctx->fifo.push_back(&wrkld_per_rank); + + if(DBG_COMM){ + printf("\nSWM RECV src %d dst %d: %lld bytes ", peer, sctx->my_rank, + wrkld_per_rank.u.recv.num_bytes); + } + + ABT_thread_yield_to(global_prod_thread); + num_recvs++; +} + +/* handle is for the request ID */ +void SWM_Irecv(SWM_PEER peer, + SWM_COMM_ID comm_id, + SWM_TAG tag, + SWM_BUF buf, + uint32_t* handle) +{ + /* Add an event in the shared queue and then yield */ + struct codes_workload_op wrkld_per_rank; + + wrkld_per_rank.op_type = CODES_WK_IRECV; + wrkld_per_rank.u.recv.tag = tag; + wrkld_per_rank.u.recv.source_rank = peer; + wrkld_per_rank.u.recv.num_bytes = 0; + + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + wrkld_per_rank.u.recv.dest_rank = sctx->my_rank; + sctx->fifo.push_back(&wrkld_per_rank); + + + *handle = sctx->wait_id; + wrkld_per_rank.u.recv.req_id = *handle; + sctx->wait_id++; + + if(DBG_COMM){ + printf("\nSWM IRECV src %d dst %d: %lld bytes ", peer, sctx->my_rank, + wrkld_per_rank.u.recv.num_bytes); + } + + ABT_thread_yield_to(global_prod_thread); + num_irecvs++; +} + +void SWM_Compute(long cycle_count) +{ + //NM: noting that cpu_frequency has been loaded in comm_online_workload_load() as GHz, e.g. cpu_freq = 2.0 means 2.0GHz + if(!cpu_freq) + cpu_freq = 2.0; + /* Add an event in the shared queue and then yield */ + struct codes_workload_op wrkld_per_rank; + + double cpu_freq_hz = cpu_freq * 1000.0 * 1000.0 * 1000.0; + double delay_in_seconds = cycle_count / cpu_freq_hz; + double delay_in_ns = delay_in_seconds * 1000.0 * 1000.0 * 1000.0; + + wrkld_per_rank.op_type = CODES_WK_DELAY; + /* TODO: Check how to convert cycle count into delay? */ + wrkld_per_rank.u.delay.nsecs = delay_in_ns; + wrkld_per_rank.u.delay.seconds = delay_in_seconds; +#ifdef DBG_COMM + // printf("\n Compute op delay: %f ", delay_in_ns); +#endif + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + sctx->fifo.push_back(&wrkld_per_rank); + + if(DBG_COMM){ + printf("\nSWM COMPUTE src %d: %lld ns ", sctx->my_rank, delay_in_ns); + } + + ABT_thread_yield_to(global_prod_thread); + +} + +void SWM_Wait(uint32_t req_id) +{ + /* Add an event in the shared queue and then yield */ + struct codes_workload_op wrkld_per_rank; + + wrkld_per_rank.op_type = CODES_WK_WAIT; + /* TODO: Check how to convert cycle count into delay? */ + wrkld_per_rank.u.wait.req_id = req_id; + +#ifdef DBG_COMM +// printf("\n wait op req_id: %"PRIu32"\n", req_id); +// printf("\n wait "); +#endif + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + sctx->fifo.push_back(&wrkld_per_rank); + + if(DBG_COMM){ + printf("\nSWM WAIT src %d ",sctx->my_rank); + } + + ABT_thread_yield_to(global_prod_thread); +} + +void SWM_Waitall(int len, uint32_t * req_ids) +{ + num_waitalls++; + /* Add an event in the shared queue and then yield */ + struct codes_workload_op wrkld_per_rank; + + wrkld_per_rank.op_type = CODES_WK_WAITALL; + /* TODO: Check how to convert cycle count into delay? */ + wrkld_per_rank.u.waits.count = len; + wrkld_per_rank.u.waits.req_ids = (unsigned int*)calloc(len, sizeof(int)); + + for(int i = 0; i < len; i++) + wrkld_per_rank.u.waits.req_ids[i] = req_ids[i]; + +#ifdef DBG_COMM +// for(int i = 0; i < len; i++) +// printf("\n wait op len %d req_id: %"PRIu32"\n", len, req_ids[i]); +#endif + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + sctx->fifo.push_back(&wrkld_per_rank); + + if(DBG_COMM){ + printf("\nSWM WAITALL src %d: count %d ",sctx->my_rank, len); + } + + ABT_thread_yield_to(global_prod_thread); +} + +void SWM_Sendrecv( + SWM_COMM_ID comm_id, + SWM_PEER sendpeer, + SWM_TAG sendtag, + SWM_VC sendreqvc, + SWM_VC sendrspvc, + SWM_BUF sendbuf, + SWM_BYTES sendbytes, + SWM_BYTES pktrspbytes, + SWM_PEER recvpeer, + SWM_TAG recvtag, + SWM_BUF recvbuf, + SWM_ROUTING_TYPE reqrt, + SWM_ROUTING_TYPE rsprt) +{ + // printf("\n Sending to %d receiving from %d ", sendpeer, recvpeer); + struct codes_workload_op send_op; + + send_op.op_type = CODES_WK_SEND; + send_op.u.send.tag = sendtag; + send_op.u.send.num_bytes = sendbytes; + send_op.u.send.dest_rank = sendpeer; + + /* Add an event in the shared queue and then yield */ + struct codes_workload_op recv_op; + + recv_op.op_type = CODES_WK_RECV; + recv_op.u.recv.tag = recvtag; + recv_op.u.recv.source_rank = recvpeer; + recv_op.u.recv.num_bytes = 0; + + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + recv_op.u.recv.dest_rank = sctx->my_rank; + send_op.u.send.source_rank = sctx->my_rank; + sctx->fifo.push_back(&send_op); + sctx->fifo.push_back(&recv_op); + + if(DBG_COMM){ + printf("\nSWM SENDRECV ssrc %d sdst %d: %d bytes; rsrc %d rdst %d: %lld bytes ", sctx->my_rank, sendpeer, + sendbytes, recvpeer, sctx->my_rank, recv_op.u.recv.num_bytes); + } + + ABT_thread_yield_to(global_prod_thread); + num_sendrecv++; +} + +/* @param count: number of bytes in Allreduce + * @param respbytes: number of bytes to be sent in response (ignore for our + * purpose) + * $params comm_id: communicator ID (UNION_Comm_World for our case) + * @param sendreqvc: virtual channel of the sender request (ignore for our + * purpose) + * @param sendrspvc: virtual channel of the response request (ignore for our + * purpose) + * @param sendbuf and rcvbuf: buffers for send and receive calls (ignore for + * our purpose) */ +void SWM_Allreduce( + SWM_BYTES count, + SWM_BYTES respbytes, + SWM_COMM_ID comm_id, + SWM_VC sendreqvc, + SWM_VC sendrspvc, + SWM_BUF sendbuf, + SWM_BUF rcvbuf) +{ +#if 0 + /* TODO: For now, simulate a constant delay for ALlreduce*/ + // printf("\n Allreduce bytes %d ", bytes); + /* Add an event in the shared queue and then yield */ + struct codes_workload_op wrkld_per_rank; + + wrkld_per_rank.op_type = CODES_WK_DELAY; + /* TODO: Check how to convert cycle count into delay? */ + wrkld_per_rank.u.delay.nsecs = bytes + 0.1; + +#ifdef DBG_COMM + printf("\n Allreduce delay %lf ", wrkld_per_rank.u.delay.nsecs); +#endif + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + sctx->fifo.push_back(&wrkld_per_rank); + + ABT_thread_yield_to(global_prod_thread); +#endif + +#ifdef DBG_COMM + /* + auto it = allreduce_count.find(count); + if(it == allreduce_count.end()) + { + allreduce_count.insert(std::make_pair(count, 1)); + } + else + { + it->second = it->second + 1; + } + */ +#endif + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + + int comm_size, i, send_idx, recv_idx, last_idx, send_cnt, recv_cnt; + int pof2, mask, rem, newrank, newdst, dst, *cnts, *disps; + int rank = sctx->my_rank; + comm_size = sctx->num_ranks; + + cnts = disps = NULL; + + pof2 = 1; + while (pof2 <= comm_size) pof2 <<= 1; + pof2 >>=1; + + rem = comm_size - pof2; + + /* In the non-power-of-two case, all even-numbered + processes of rank < 2*rem send their data to + (rank+1). These even-numbered processes no longer + participate in the algorithm until the very end. The + remaining processes form a nice power-of-two. */ + if (rank < 2*rem) { + if (rank % 2 == 0) { /* even */ + SWM_Send(rank+1, comm_id, 1235, sendreqvc, sendrspvc, 0, count, 1, 0, 0); + newrank = -1; + } else { /* odd */ + SWM_Recv(rank-1, comm_id, 1235, 0); + newrank = rank / 2; + } + } else { + newrank = rank - rem; + } + + /* If op is user-defined or count is less than pof2, use + recursive doubling algorithm. Otherwise do a reduce-scatter + followed by allgather. (If op is user-defined, + derived datatypes are allowed and the user could pass basic + datatypes on one process and derived on another as long as + the type maps are the same. Breaking up derived + datatypes to do the reduce-scatter is tricky, therefore + using recursive doubling in that case.) */ + if (newrank != -1) { + if ((count <= ALLREDUCE_SHORT_MSG_SIZE) || (count < pof2)) { + + mask = 0x1; + while (mask < pof2) { + newdst = newrank ^ mask; + dst = (newdst < rem) ? newdst*2 + 1 : newdst + rem; + + SWM_Sendrecv(comm_id, dst, 1235, sendreqvc, sendrspvc, 0, + count, 1, dst, 1235, 0, 0, 0); + + mask <<= 1; + } + } else { + /* do a reduce-scatter followed by allgather */ + /* for the reduce-scatter, calculate the count that + each process receives and the displacement within + the buffer */ + + cnts = (int*)malloc(pof2*sizeof(int)); + disps = (int*)malloc(pof2*sizeof(int)); + + for (i=0; i<(pof2-1); i++) + cnts[i] = count/pof2; + cnts[pof2-1] = count - (count/pof2)*(pof2-1); + + disps[0] = 0; + for (i=1; i>= 1; + while (mask > 0) { + newdst = newrank ^ mask; + /* find real rank of dest */ + dst = (newdst < rem) ? newdst*2 + 1 : newdst + rem; + + send_cnt = recv_cnt = 0; + if (newrank < newdst) { + if (mask != pof2/2) + last_idx = last_idx + pof2/(mask*2); + + recv_idx = send_idx + pof2/(mask*2); + for (i=send_idx; i newdst) send_idx = recv_idx; + + mask >>= 1; + } + } + } + + if(rank < 2*rem) { + if(rank % 2) {/* odd */ + SWM_Send(rank-1, comm_id, 1235, sendreqvc, sendrspvc, 0, count, 1, 0, 0); + } else { + SWM_Recv(rank+1, comm_id, 1235, 0); + } + } + + if(cnts) free(cnts); + if(disps) free(disps); + + num_allreduce++; +} + +void SWM_Allreduce( + SWM_BYTES bytes, + SWM_BYTES respbytes, + SWM_COMM_ID comm_id, + SWM_VC sendreqvc, + SWM_VC sendrspvc, + SWM_BUF sendbuf, + SWM_BUF rcvbuf, + SWM_UNKNOWN auto1, + SWM_UNKNOWN2 auto2, + SWM_ROUTING_TYPE reqrt, + SWM_ROUTING_TYPE rsprt) +{ + SWM_Allreduce(bytes, respbytes, comm_id, sendreqvc, sendrspvc, sendbuf, rcvbuf); +} + +void SWM_Finalize() +{ + /* Add an event in the shared queue and then yield */ + struct codes_workload_op wrkld_per_rank; + + wrkld_per_rank.op_type = CODES_WK_END; + + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + sctx->fifo.push_back(&wrkld_per_rank); + + if(DBG_COMM){ + /* + auto it = allreduce_count.begin(); + for(; it != allreduce_count.end(); it++) + { + cout << "\n Allreduce " << it->first << " " << it->second; + } + + it = send_count.begin(); + for(; it != send_count.end(); it++) + { + cout << "\n Send " << it->first << " " << it->second; + } + + it = isend_count.begin(); + for(; it != isend_count.end(); it++) + { + cout << "\n isend " << it->first << " " << it->second; + }*/ + printf("\nSWM FINALIZE src %d ", sctx->my_rank); + printf("\nnum_sends %ld num_recvs %ld num_isends %ld num_irecvs %ld num_allreduce %ld num_barrier %ld num_waitalls %ld\n", + num_sends, num_recvs, num_isends, num_irecvs, num_allreduce, num_barriers, num_waitalls); + } + ABT_thread_yield_to(global_prod_thread); +} + +void SWM_Mark_Iteration(SWM_TAG iter_tag) +{ + /* Add an event in the shared queue and then yield */ + struct codes_workload_op wrkld_per_rank; + + wrkld_per_rank.op_type = CODES_WK_MARK; + wrkld_per_rank.u.send.tag = iter_tag; + + /* Retreive the shared context state */ + ABT_thread prod; + void * arg; + int err = ABT_thread_self(&prod); + assert(err == ABT_SUCCESS); + err = ABT_thread_get_arg(prod, &arg); + assert(err == ABT_SUCCESS); + struct shared_context * sctx = static_cast(arg); + wrkld_per_rank.u.send.source_rank = sctx->my_rank; + sctx->fifo.push_back(&wrkld_per_rank); + + if(DBG_COMM){ + printf("\nSWM MARKITERATION src %d ", sctx->my_rank); + } + + ABT_thread_yield_to(global_prod_thread); +} + +//#endif + + +static int hash_rank_compare(void *key, struct qhash_head *link) +{ + rank_mpi_compare *in = (rank_mpi_compare*)key; + rank_mpi_context *tmp; + + tmp = qhash_entry(link, rank_mpi_context, hash_link); + if (tmp->sctx.my_rank == in->rank && tmp->app_id == in->app_id) + return 1; + return 0; +} + +static void workload_caller(void * arg) +{ + shared_context* sctx = static_cast(arg); + + // printf("\n workload name %s ", sctx->workload_name); + if(strncmp(sctx->workload_name, "conceptual", 10) == 0) + { + union_bench_param * conc_params = static_cast (sctx->conc_params); + // printf("program: %s\n",conc_params->conc_program); + // printf("argc: %d\n",conc_params->conc_argc); + int i; + for (i=0; iconc_argc; i++){ + conc_params->conc_argv[i] = conc_params->config_in[i]; + } + // conc_params->argv = &conc_params->conc_argv; + if(DBG_LINKING) + { + printf("\nLoad Union Benchmark: %s: %s", conc_params->conc_program, conc_params->conc_argv[1]); + } + union_conc_bench_load(conc_params->conc_program, + conc_params->conc_argc, + conc_params->conc_argv); + } else if(strcmp(sctx->workload_name, "lammps") == 0) + { + LAMMPS_SWM * lammps_swm = static_cast(sctx->swm_obj); + lammps_swm->call(); + } + else if(strcmp(sctx->workload_name, "nekbone") == 0) + { + NEKBONESWMUserCode * nekbone_swm = static_cast(sctx->swm_obj); + nekbone_swm->call(); + } + else if(strcmp(sctx->workload_name, "milc") == 0) + { + MilcSWMUserCode * milc_swm = static_cast(sctx->swm_obj); + milc_swm->call(); + } + else if(strcmp(sctx->workload_name, "nearest_neighbor") == 0) + { + NearestNeighborSWMUserCode * nn_swm = static_cast(sctx->swm_obj); + nn_swm->call(); + } + else if(strcmp(sctx->workload_name, "incast") == 0 || strcmp(sctx->workload_name, "incast1") == 0 || strcmp(sctx->workload_name, "incast2") == 0) + { + AllToOneSWMUserCode * incast_swm = static_cast(sctx->swm_obj); + incast_swm->call(); + } +} + +static int comm_online_workload_load(const char * params, int app_id, int rank) +{ + /* LOAD parameters from JSON file*/ + online_comm_params * o_params = (online_comm_params*)params; + int nprocs = o_params->nprocs; + + rank_mpi_context *my_ctx = new rank_mpi_context; + //my_ctx = (rank_mpi_context*)caloc(1, sizeof(rank_mpi_context)); + assert(my_ctx); + my_ctx->sctx.my_rank = rank; + my_ctx->sctx.num_ranks = nprocs; + my_ctx->sctx.wait_id = 0; + my_ctx->app_id = app_id; + + // printf("my_ctx nprocs %d\n", my_ctx->sctx.num_ranks); + + void** generic_ptrs; + int array_len = 1; + generic_ptrs = (void**)calloc(array_len, sizeof(void*)); + generic_ptrs[0] = (void*)&rank; + + strcpy(my_ctx->sctx.workload_name, o_params->workload_name); + boost::property_tree::ptree root, child; + string swm_path, conc_path; + bool isconc=0; + + // printf("workload name: %s\n", o_params->workload_name); + swm_path.append(SWM_DATAROOTDIR); + if(strcmp(o_params->workload_name, "lammps") == 0) + { + swm_path.append("/lammps_workload.json"); + } + else if(strcmp(o_params->workload_name, "nekbone") == 0) + { + swm_path.append("/workload.json"); + } + else if(strcmp(o_params->workload_name, "milc") == 0) + { + swm_path.append("/milc_skeleton.json"); + } + else if(strcmp(o_params->workload_name, "nearest_neighbor") == 0) + { + swm_path.append("/skeleton.json"); + } + else if(strcmp(o_params->workload_name, "incast") == 0) + { + swm_path.append("/incast.json"); + } + else if(strcmp(o_params->workload_name, "incast1") == 0) + { + swm_path.append("/incast1.json"); + } + else if(strcmp(o_params->workload_name, "incast2") == 0) + { + swm_path.append("/incast2.json"); + } + else if(strncmp(o_params->workload_name, "conceptual", 10) == 0) + { + conc_path.append(UNION_DATADIR); + conc_path.append("/conceptual.json"); + isconc = 1; + } + else + tw_error(TW_LOC, "\n Undefined workload type %s ", o_params->workload_name); + + // printf("\nUnion jason path %s\n", conc_path.c_str()); + if(isconc){ + try { + std::ifstream jsonFile(conc_path.c_str()); + boost::property_tree::json_parser::read_json(jsonFile, root); + + // printf("workload_name: %s\n", o_params->workload_name); + union_bench_param *tmp_params = (union_bench_param *) calloc(1, sizeof(union_bench_param)); + strcpy(tmp_params->conc_program, &o_params->workload_name[11]); + child = root.get_child(tmp_params->conc_program); + tmp_params->conc_argc = child.get("argc"); + int i = 0; + BOOST_FOREACH(boost::property_tree::ptree::value_type &v, child.get_child("argv")) + { + assert(v.first.empty()); // array elements have no names + // tmp_params->conc_argv[i] = (char *) v.second.data().c_str(); + strcpy(tmp_params->config_in[i], v.second.data().c_str()); + i += 1; + } + my_ctx->sctx.conc_params = (void*) tmp_params; + my_ctx->sctx.isconc = 1; + } + catch(std::exception & e) + { + printf("%s \n", e.what()); + return -1; + } + } + else { + try { + std::ifstream jsonFile(swm_path.c_str()); + boost::property_tree::json_parser::read_json(jsonFile, root); + uint32_t process_cnt = root.get("jobs.size", 1); + cpu_freq = root.get("jobs.cfg.cpu_freq") / 1e9; + } + catch(std::exception & e) + { + printf("%s \n", e.what()); + return -1; + } + my_ctx->sctx.isconc = 0; + if(strcmp(o_params->workload_name, "lammps") == 0) + { + LAMMPS_SWM * lammps_swm = new LAMMPS_SWM(root, generic_ptrs); + my_ctx->sctx.swm_obj = (void*)lammps_swm; + } + else if(strcmp(o_params->workload_name, "nekbone") == 0) + { + NEKBONESWMUserCode * nekbone_swm = new NEKBONESWMUserCode(root, generic_ptrs); + my_ctx->sctx.swm_obj = (void*)nekbone_swm; + } + else if(strcmp(o_params->workload_name, "milc") == 0) + { + MilcSWMUserCode * milc_swm = new MilcSWMUserCode(root, generic_ptrs); + my_ctx->sctx.swm_obj = (void*)milc_swm; + } + else if(strcmp(o_params->workload_name, "nearest_neighbor") == 0) + { + NearestNeighborSWMUserCode * nn_swm = new NearestNeighborSWMUserCode(root, generic_ptrs); + my_ctx->sctx.swm_obj = (void*)nn_swm; + } + else if(strcmp(o_params->workload_name, "incast") == 0 || strcmp(o_params->workload_name, "incast1") == 0 || strcmp(o_params->workload_name, "incast2") == 0) + { + AllToOneSWMUserCode * incast_swm = new AllToOneSWMUserCode(root, generic_ptrs); + my_ctx->sctx.swm_obj = (void*)incast_swm; + } + } + + if(global_prod_thread == NULL) + { + ABT_xstream_self(&self_es); + ABT_thread_self(&global_prod_thread); + } + int rcode = ABT_thread_create_on_xstream(self_es, + &workload_caller, (void*)&(my_ctx->sctx), + ABT_THREAD_ATTR_NULL, &(my_ctx->sctx.producer)); + + if(DBG_LINKING) + { + printf("\nRank %d create app thread? %d", rank, rcode); + } + rank_mpi_compare cmp; + cmp.app_id = app_id; + cmp.rank = rank; + + if(!rank_tbl) + { + rank_tbl = qhash_init(hash_rank_compare, quickhash_64bit_hash, nprocs); + if(!rank_tbl) + return -1; + } + qhash_add(rank_tbl, &cmp, &(my_ctx->hash_link)); + rank_tbl_pop++; + + return 0; +} + +static void comm_online_workload_get_next(int app_id, int rank, struct codes_workload_op * op) +{ + /* At this point, we will use the "call" function. The send/receive/wait + * definitions will be replaced by our own function definitions that will do a + * yield to argobots if an event is not available. */ + /* if shared queue is empty then yield */ + + rank_mpi_context * temp_data; + struct qhash_head * hash_link = NULL; + rank_mpi_compare cmp; + cmp.rank = rank; + cmp.app_id = app_id; + hash_link = qhash_search(rank_tbl, &cmp); + if(!hash_link) + { + printf("\n not found for rank id %d , %d", rank, app_id); + op->op_type = CODES_WK_END; + return; + } + temp_data = qhash_entry(hash_link, rank_mpi_context, hash_link); + assert(temp_data); + while(temp_data->sctx.fifo.empty()) + { + if(DBG_COMM){ + // void * arg; + // int err = ABT_thread_get_arg(temp_data->sctx.producer, &arg); + // assert(err == ABT_SUCCESS); + // struct shared_context * sctx = static_cast(arg); + printf("\nFIFO que empty, yield to rank %d ", rank); + } + int rc = ABT_thread_yield_to(temp_data->sctx.producer); + } + struct codes_workload_op * front_op = temp_data->sctx.fifo.front(); + assert(front_op); + if(DBG_COMM) + { + switch(front_op->op_type) + { + case CODES_WK_ISEND: printf("\nFIFO pop operation ISEND src %d ", rank); + case CODES_WK_SEND: printf("\nFIFO pop operation SEND src %d ", rank); + case CODES_WK_RECV: printf("\nFIFO pop operation RECV src %d ", rank); + case CODES_WK_IRECV: printf("\nFIFO pop operation IRECV src %d ", rank); + case CODES_WK_DELAY: printf("\nFIFO pop operation COMPUTE src %d ", rank); + case CODES_WK_WAIT: printf("\nFIFO pop operation WAIT src %d ", rank); + case CODES_WK_WAITALL: printf("\nFIFO pop operation WAITALL src %d ", rank); + } + } + *op = *front_op; + temp_data->sctx.fifo.pop_front(); + return; +} +static int comm_online_workload_get_rank_cnt(const char *params, int app_id) +{ + online_comm_params * o_params = (online_comm_params*)params; + int nprocs = o_params->nprocs; + return nprocs; +} + +static int comm_online_workload_finalize(const char* params, int app_id, int rank) +{ + // printf("Rank %d: Finalize workload for app %d\n", rank, app_id); + rank_mpi_context * temp_data; + struct qhash_head * hash_link = NULL; + rank_mpi_compare cmp; + cmp.rank = rank; + cmp.app_id = app_id; + hash_link = qhash_search(rank_tbl, &cmp); + if(!hash_link) + { + printf("\n not found for rank id %d , %d ", rank, app_id); + return -1; + } + temp_data = qhash_entry(hash_link, rank_mpi_context, hash_link); + assert(temp_data); + + int rc; + rc = ABT_thread_join(temp_data->sctx.producer); + // printf("thread terminate rc=%d\n", rc); + rc = ABT_thread_free(&(temp_data->sctx.producer)); + // printf("thread free rc=%d\n", rc); + if (temp_data->sctx.isconc){ + // printf("free conceptual params\n"); + free(temp_data->sctx.conc_params); + } + return 0; +} +extern "C" { +/* workload method name and function pointers for the CODES workload API */ +struct codes_workload_method conc_online_comm_workload_method = +{ + //.method_name = + (char*)"conc_online_comm_workload", + //.codes_workload_read_config = + NULL, + //.codes_workload_load = + comm_online_workload_load, + //.codes_workload_get_next = + comm_online_workload_get_next, + // .codes_workload_get_next_rc2 = + NULL, + // .codes_workload_get_rank_cnt + comm_online_workload_get_rank_cnt, + // .codes_workload_finalize = + comm_online_workload_finalize +}; +} // closing brace for extern "C" + diff --git a/src/workload/methods/codes-online-comm-wrkld.C b/src/workload/methods/codes-online-comm-wrkld.C index c9e87406..6b850793 100644 --- a/src/workload/methods/codes-online-comm-wrkld.C +++ b/src/workload/methods/codes-online-comm-wrkld.C @@ -1114,10 +1114,10 @@ static int comm_online_workload_finalize(const char* params, int app_id, int ran } extern "C" { /* workload method name and function pointers for the CODES workload API */ -struct codes_workload_method online_comm_workload_method = +struct codes_workload_method swm_online_comm_workload_method = { //.method_name = - (char*)"online_comm_workload", + (char*)"swm_online_comm_workload", //.codes_workload_read_config = NULL, //.codes_workload_load = diff --git a/tmptest/README.md b/tmptest/README.md new file mode 100644 index 00000000..6bc14fad --- /dev/null +++ b/tmptest/README.md @@ -0,0 +1,98 @@ +:# Union +Workload Manager for Integration of Conceptual as an Online Workload for CODES + + +# Installation + +### Installing Conceptual (mandatory) + +Download Conceptual at https://ccsweb.lanl.gov/~pakin/software/conceptual/download.html (version 1.5.1 or greater) + +```bash +tar xvf conceptual-1.5.1.tar.gz +cd conceptual-1.5.1 +./configure --prefix=/path/to/conceptual/install +make +make install +``` + +### Installing Boost-Python (currently mandatory, we may remove this soon) + +Download boost at http://www.boost.org/users/download/ (version 1.68 or greater) + +```bash +tar xvf boost_1_68_0.tar.gz +cd boost_1_68_0 +./bootstrap.sh --prefix=/path/to/boost/install --with-libraries=python +./b2 install +``` + +### Installing Union +```bash +cd union +./prepare.sh +./configure --with-boost=/path/to/boost/install --with-conceptual=/path/to/conceptual/install --prefix=/path/to/union/install CC=mpicc CXX=mpicxx +make +make install +``` + +# Workload Simulation with CODES + +### Installing ROSS + +```bash +git clone https://github.com/carothersc/ROSS.git +mkdir build-ross +cd build-ross +cmake -DCMAKE_INSTALL_PREFIX:path=path/to/ross/install -DCMAKE_C_COMPILER=$(which mpicc) -DCMAKE_CXX_COMPILER=$(which mpicxx) ../ROSS +make install +``` + +### Installing Argobots + +```bash +git clone https://github.com/pmodels/argobots.git +./autogen.sh +./configure --prefix=/path/to/argobots/install +make +make install +``` + +### Installing SWM workloads + +```bash +git clone https://github.com/codes-org/SWM-workloads.git +cd swm +./prepare.sh +./configure --with-boost=/path/to/boost/install --prefix=/path/to/swm/install CC=mpicc CXX=mpicxx +make +make install +``` + +### Installing CODES (kronos-union branch) + +```bash +git clone https://github.com/codes-org/codes.git +cd codes +./prepare.sh +mkdir build +cd build +../configure --with-online=true --with-boost=/path/to/boost/install PKG_CONFIG_PATH=/home/path/to/argobots/install/lib/pkgconfig:/path/to/ross/install/lib/pkgconfig:/path/to/union/install/lib/pkgconfig:/path/to/swm/install/lib/pkgconfig --with-union=true --prefix=/path/to/codes/install CC=mpicc CXX=mpicxx +make +make install +``` + +### Run Test Simulations +The tmptest directory includes all necessary configuration files to run the test simulation. + +- Copy milc_skeleton.json to /path/to/swm/install/share/ +- Copy conceptual.json to /path/to/union/install/share/ +- Change the path for "intra-group-connections" and "intra-group-connections" in dfdally-72-par.conf +- Run the following command: + +```bash +/path/to/codes/install/bin/model-net-mpi-replay --sync=1 --workload_type=conc-online --lp-io-use-suffix=1 --workload_conf_file=/path/to/codes/tmptest/conf/jacobi_MILC.conf --alloc_file=/path/to/codes/tmptest/conf/rand_node0-1d-72-jacobi_MILC.conf --lp-io-dir=tmptest-jacobiS_MILC -- /path/to/codes/tmptest/conf/dfdally-72-par.conf > tmptest-jacobiS_MILC.output +``` + + + diff --git a/tmptest/conf/conceptual.json b/tmptest/conf/conceptual.json new file mode 100644 index 00000000..ad786bce --- /dev/null +++ b/tmptest/conf/conceptual.json @@ -0,0 +1,65 @@ +{ + "latency": { + "argc": 5, + "argv": [ + "latency", + "--reps", + "100", + "--maxbytes", + "1M" + ] + }, + "cosmoflow": { + "argc": 7, + "argv": [ + "cosmoflow", + "--msgsize", + "7379200", + "--reps", + "10", + "--compute", + "129" + ] + }, + "cosmo": { + "argc": 5, + "argv": [ + "cosmo", + "5", + "7379200", + "129000000" + ] + }, + "jacobi3d": { + "argc": 11, + "argv": [ + "jacobi3d", + "400", + "300", + "300", + "100", + "100", + "100", + "125000", + "5", + "2000000", + "barrier" + ] + }, + "alexnet": { + "argc": 2, + "argv": [ + "alexnet", + "10" + ] + }, + "checkpoint": { + "argc": 4, + "argv": [ + "checkpoint", + "1", + "50000000000", + "100000000" + ] + } +} diff --git a/tmptest/conf/dfdally-72-inter b/tmptest/conf/dfdally-72-inter new file mode 100644 index 00000000..f95b989c Binary files /dev/null and b/tmptest/conf/dfdally-72-inter differ diff --git a/tmptest/conf/dfdally-72-intra b/tmptest/conf/dfdally-72-intra new file mode 100644 index 00000000..37ea2848 Binary files /dev/null and b/tmptest/conf/dfdally-72-intra differ diff --git a/tmptest/conf/dfdally-72-par.conf b/tmptest/conf/dfdally-72-par.conf new file mode 100644 index 00000000..4059a519 --- /dev/null +++ b/tmptest/conf/dfdally-72-par.conf @@ -0,0 +1,64 @@ +LPGROUPS +{ + MODELNET_GRP + { + repetitions="36"; +# name of this lp changes according to the model + nw-lp="2"; +# these lp names will be the same for dragonfly-custom model + modelnet_dragonfly_dally="2"; + modelnet_dragonfly_dally_router="1"; + } +} +PARAMS +{ +# packet size in the network + packet_size="4096"; + modelnet_order=( "dragonfly_dally","dragonfly_dally_router" ); + # scheduler options + modelnet_scheduler="fcfs"; +# chunk size in the network (when chunk size = packet size, packets will not be +# divided into chunks) + chunk_size="4096"; +# modelnet_scheduler="round-robin"; +# number of routers in group + num_routers="4"; +# number of groups in the network + num_groups="9"; +# buffer size in bytes for local virtual channels + local_vc_size="16384"; +#buffer size in bytes for global virtual channels + global_vc_size="16384"; +#buffer size in bytes for compute node virtual channels + cn_vc_size="32768"; +#bandwidth in GiB/s for local channels + local_bandwidth="5.25"; +# bandwidth in GiB/s for global channels + global_bandwidth="4.7"; +# bandwidth in GiB/s for compute node-router channels + cn_bandwidth="5.25"; +# ROSS message size + message_size="792"; +# number of compute nodes connected to router, dictated by dragonfly config +# file + num_cns_per_router="2"; +# number of global channels per router + num_global_channels="2"; +# network config file for intra-group connections + intra-group-connections="/home/ac.xwang/tools/codes-new/tmptest/conf/dfdally-72-intra"; +# network config file for inter-group connections + inter-group-connections="/home/ac.xwang/tools/codes-new/tmptest/conf/dfdally-72-inter"; +# routing protocol to be used + routing="prog-adaptive"; + minimal-bias="1"; + df-dally-vc = "1"; +# counting msgs recv to/send from routers + counting_bool="0"; + counting_start="0"; + counting_windows="1800"; + #interval in us + counting_interval="300"; + num_apps="2"; + #offset for app_id: model-net-mpi-replay is 88, synthetic-dfly-plus is 24 + offset="144"; +} diff --git a/tmptest/conf/jacobi_MILC.conf b/tmptest/conf/jacobi_MILC.conf new file mode 100644 index 00000000..93c60688 --- /dev/null +++ b/tmptest/conf/jacobi_MILC.conf @@ -0,0 +1,2 @@ +36 conceptual-jacobi3d 1 0 +36 milc 1 0 diff --git a/tmptest/conf/milc_skeleton.json b/tmptest/conf/milc_skeleton.json new file mode 100644 index 00000000..b3a42297 --- /dev/null +++ b/tmptest/conf/milc_skeleton.json @@ -0,0 +1,17 @@ +{ +"jobs" : { + "dll_path": "${FABSIM_APPS_PATH}/dll/milc.so", + "size": 36, + "cfg": { + "app": "milc", + "iteration_cnt": 5, + "compute_delay": 100, + "dimension_cnt": 4, + "dimension_sizes": [2,2,3,3], + "msg_size": 497664, + "max_dimension_distance": 1, + "randomize_communication_order": false, + "cpu_freq" : 4e9 + } + } +} diff --git a/tmptest/conf/rand_node0-1d-72-jacobi_MILC.conf b/tmptest/conf/rand_node0-1d-72-jacobi_MILC.conf new file mode 100644 index 00000000..07e490d0 --- /dev/null +++ b/tmptest/conf/rand_node0-1d-72-jacobi_MILC.conf @@ -0,0 +1,2 @@ +12 24 38 2 65 18 3 70 39 11 69 67 48 21 8 45 71 55 6 1 49 68 32 5 61 46 23 9 7 26 15 62 52 28 13 25 +0 42 31 10 57 20 41 40 66 64 4 22 33 58 37 59 47 43 54 50 14 35 44 16 63 56 36 30 19 51 27 34 17 29 53 60 diff --git a/tmptest/expected/iteration-logs b/tmptest/expected/iteration-logs new file mode 100644 index 00000000..83179b2f --- /dev/null +++ b/tmptest/expected/iteration-logs @@ -0,0 +1,360 @@ +ITERATION 0 node 53 job 1 rank 34 time 4512686.215045 +ITERATION 0 node 54 job 1 rank 18 time 4513749.276363 +ITERATION 0 node 4 job 1 rank 10 time 4517871.443080 +ITERATION 0 node 56 job 1 rank 25 time 4538165.950297 +ITERATION 0 node 51 job 1 rank 29 time 4540989.136935 +ITERATION 0 node 29 job 1 rank 33 time 4542208.517079 +ITERATION 0 node 64 job 1 rank 9 time 4543495.002481 +ITERATION 0 node 34 job 1 rank 31 time 4545035.368923 +ITERATION 0 node 58 job 1 rank 13 time 4545114.472426 +ITERATION 0 node 59 job 1 rank 15 time 4548339.211403 +ITERATION 0 node 35 job 1 rank 21 time 4554419.528244 +ITERATION 0 node 10 job 1 rank 3 time 4561111.532285 +ITERATION 0 node 60 job 1 rank 35 time 4562346.412949 +ITERATION 0 node 30 job 1 rank 27 time 4564867.979829 +ITERATION 0 node 16 job 1 rank 23 time 4567439.860843 +ITERATION 0 node 31 job 1 rank 2 time 4573504.960624 +ITERATION 0 node 22 job 1 rank 11 time 4574627.826180 +ITERATION 0 node 37 job 1 rank 14 time 4579930.283097 +ITERATION 0 node 27 job 1 rank 30 time 4587175.167871 +ITERATION 0 node 20 job 1 rank 5 time 4589753.028610 +ITERATION 0 node 57 job 1 rank 4 time 4593050.336040 +ITERATION 0 node 17 job 1 rank 32 time 4604738.524840 +ITERATION 0 node 19 job 1 rank 28 time 4607122.579619 +ITERATION 0 node 63 job 1 rank 24 time 4616051.899458 +ITERATION 0 node 44 job 1 rank 22 time 4629534.947693 +ITERATION 0 node 33 job 1 rank 12 time 4630801.551756 +ITERATION 0 node 14 job 1 rank 20 time 4634810.847629 +ITERATION 0 node 43 job 1 rank 17 time 4637426.227568 +ITERATION 0 node 50 job 1 rank 19 time 4645719.045367 +ITERATION 0 node 42 job 1 rank 1 time 4657866.214120 +ITERATION 0 node 0 job 1 rank 0 time 4662904.772657 +ITERATION 0 node 36 job 1 rank 26 time 4669557.114654 +ITERATION 0 node 47 job 1 rank 16 time 4682491.551200 +ITERATION 0 node 40 job 1 rank 7 time 4725442.291027 +ITERATION 0 node 41 job 1 rank 6 time 4726998.347349 +ITERATION 0 node 66 job 1 rank 8 time 4766523.879336 +ITERATION 0 node 67 job 0 rank 11 time 5565984.178337 +ITERATION 0 node 5 job 0 rank 23 time 5575875.812174 +ITERATION 0 node 9 job 0 rank 27 time 5579506.018872 +ITERATION 0 node 62 job 0 rank 31 time 5584465.243288 +ITERATION 0 node 45 job 0 rank 15 time 5618600.555287 +ITERATION 0 node 1 job 0 rank 19 time 5717281.741377 +ITERATION 0 node 70 job 0 rank 7 time 5721216.605169 +ITERATION 0 node 3 job 0 rank 6 time 5727197.597463 +ITERATION 0 node 68 job 0 rank 21 time 5728040.094749 +ITERATION 0 node 26 job 0 rank 29 time 5732165.171144 +ITERATION 0 node 46 job 0 rank 25 time 5736556.257391 +ITERATION 0 node 21 job 0 rank 13 time 5736620.081453 +ITERATION 0 node 2 job 0 rank 3 time 5742325.644168 +ITERATION 0 node 55 job 0 rank 17 time 5749700.425050 +ITERATION 0 node 25 job 0 rank 35 time 5767346.740335 +ITERATION 0 node 38 job 0 rank 2 time 5788871.660345 +ITERATION 0 node 28 job 0 rank 33 time 5811545.306529 +ITERATION 0 node 32 job 0 rank 22 time 5813306.845833 +ITERATION 0 node 49 job 0 rank 20 time 5816982.805562 +ITERATION 0 node 61 job 0 rank 24 time 5820868.818799 +ITERATION 0 node 52 job 0 rank 32 time 5824994.468838 +ITERATION 0 node 7 job 0 rank 28 time 5829521.253890 +ITERATION 0 node 23 job 0 rank 26 time 5830679.689756 +ITERATION 0 node 71 job 0 rank 16 time 5830833.289263 +ITERATION 0 node 18 job 0 rank 5 time 5831517.990821 +ITERATION 0 node 13 job 0 rank 34 time 5836011.317489 +ITERATION 0 node 69 job 0 rank 10 time 5848873.775015 +ITERATION 0 node 39 job 0 rank 8 time 5852519.517052 +ITERATION 0 node 65 job 0 rank 4 time 5853828.568648 +ITERATION 0 node 24 job 0 rank 1 time 5854716.580830 +ITERATION 0 node 12 job 0 rank 0 time 5859659.053022 +ITERATION 0 node 6 job 0 rank 18 time 5863641.542198 +ITERATION 0 node 15 job 0 rank 30 time 5891375.888033 +ITERATION 0 node 8 job 0 rank 14 time 5894381.087555 +ITERATION 0 node 48 job 0 rank 12 time 5895134.332795 +ITERATION 0 node 11 job 0 rank 9 time 5942306.311091 +ITERATION 1 node 66 job 1 rank 8 time 8297180.376270 +ITERATION 1 node 14 job 1 rank 20 time 8300140.917016 +ITERATION 1 node 64 job 1 rank 9 time 8300849.048957 +ITERATION 1 node 19 job 1 rank 28 time 8301305.476039 +ITERATION 1 node 63 job 1 rank 24 time 8301305.711761 +ITERATION 1 node 33 job 1 rank 12 time 8301733.793207 +ITERATION 1 node 10 job 1 rank 3 time 8302129.790711 +ITERATION 1 node 42 job 1 rank 1 time 8302470.511443 +ITERATION 1 node 47 job 1 rank 16 time 8303046.409280 +ITERATION 1 node 35 job 1 rank 21 time 8303817.637378 +ITERATION 1 node 37 job 1 rank 14 time 8303944.501174 +ITERATION 1 node 4 job 1 rank 10 time 8303944.806055 +ITERATION 1 node 43 job 1 rank 17 time 8304146.840707 +ITERATION 1 node 56 job 1 rank 25 time 8304344.924724 +ITERATION 1 node 59 job 1 rank 15 time 8305202.188843 +ITERATION 1 node 20 job 1 rank 5 time 8305346.120632 +ITERATION 1 node 31 job 1 rank 2 time 8305427.098141 +ITERATION 1 node 22 job 1 rank 11 time 8305464.857400 +ITERATION 1 node 16 job 1 rank 23 time 8305465.061184 +ITERATION 1 node 58 job 1 rank 13 time 8305909.329333 +ITERATION 1 node 44 job 1 rank 22 time 8306179.488712 +ITERATION 1 node 40 job 1 rank 7 time 8306815.016916 +ITERATION 1 node 36 job 1 rank 26 time 8307242.113385 +ITERATION 1 node 54 job 1 rank 18 time 8307242.230485 +ITERATION 1 node 0 job 1 rank 0 time 8307509.069980 +ITERATION 1 node 27 job 1 rank 30 time 8308069.836665 +ITERATION 1 node 41 job 1 rank 6 time 8308371.073239 +ITERATION 1 node 51 job 1 rank 29 time 8308510.790046 +ITERATION 1 node 57 job 1 rank 4 time 8308643.428061 +ITERATION 1 node 30 job 1 rank 27 time 8308762.164730 +ITERATION 1 node 17 job 1 rank 32 time 8308912.995878 +ITERATION 1 node 53 job 1 rank 34 time 8309964.008052 +ITERATION 1 node 34 job 1 rank 31 time 8311068.775441 +ITERATION 1 node 50 job 1 rank 19 time 8311331.100457 +ITERATION 1 node 29 job 1 rank 33 time 8311707.229825 +ITERATION 1 node 60 job 1 rank 35 time 8317686.769451 +ITERATION 1 node 8 job 0 rank 14 time 11235088.810240 +ITERATION 1 node 18 job 0 rank 5 time 11235317.411859 +ITERATION 1 node 15 job 0 rank 30 time 11237472.894623 +ITERATION 1 node 24 job 0 rank 1 time 11245995.227219 +ITERATION 1 node 61 job 0 rank 24 time 11248511.493893 +ITERATION 1 node 71 job 0 rank 16 time 11249063.598574 +ITERATION 1 node 2 job 0 rank 3 time 11249988.785889 +ITERATION 1 node 11 job 0 rank 9 time 11250588.161742 +ITERATION 1 node 21 job 0 rank 13 time 11251495.763839 +ITERATION 1 node 49 job 0 rank 20 time 11252879.124696 +ITERATION 1 node 38 job 0 rank 2 time 11253481.695522 +ITERATION 1 node 52 job 0 rank 32 time 11254930.185172 +ITERATION 1 node 26 job 0 rank 29 time 11259777.124063 +ITERATION 1 node 39 job 0 rank 8 time 11266061.281928 +ITERATION 1 node 32 job 0 rank 22 time 11270470.549169 +ITERATION 1 node 68 job 0 rank 21 time 11286125.385978 +ITERATION 1 node 48 job 0 rank 12 time 11294811.908230 +ITERATION 1 node 46 job 0 rank 25 time 11300192.747257 +ITERATION 1 node 12 job 0 rank 0 time 11317107.807555 +ITERATION 1 node 7 job 0 rank 28 time 11322189.096862 +ITERATION 1 node 67 job 0 rank 11 time 11333239.622073 +ITERATION 1 node 70 job 0 rank 7 time 11334381.123429 +ITERATION 1 node 45 job 0 rank 15 time 11339259.471444 +ITERATION 1 node 1 job 0 rank 19 time 11340523.986731 +ITERATION 1 node 62 job 0 rank 31 time 11345350.350138 +ITERATION 1 node 69 job 0 rank 10 time 11351306.613121 +ITERATION 1 node 23 job 0 rank 26 time 11361640.366497 +ITERATION 1 node 25 job 0 rank 35 time 11363595.692666 +ITERATION 1 node 3 job 0 rank 6 time 11372326.537226 +ITERATION 1 node 9 job 0 rank 27 time 11388501.387550 +ITERATION 1 node 6 job 0 rank 18 time 11391110.891033 +ITERATION 1 node 5 job 0 rank 23 time 11392483.556208 +ITERATION 1 node 65 job 0 rank 4 time 11392558.633627 +ITERATION 1 node 13 job 0 rank 34 time 11396149.449470 +ITERATION 1 node 55 job 0 rank 17 time 11417714.983024 +ITERATION 1 node 28 job 0 rank 33 time 11421840.318515 +ITERATION 2 node 58 job 1 rank 13 time 12316899.292981 +ITERATION 2 node 35 job 1 rank 21 time 12316899.576287 +ITERATION 2 node 64 job 1 rank 9 time 12316899.606397 +ITERATION 2 node 10 job 1 rank 3 time 12317127.807697 +ITERATION 2 node 33 job 1 rank 12 time 12320196.737845 +ITERATION 2 node 56 job 1 rank 25 time 12320196.913727 +ITERATION 2 node 59 job 1 rank 15 time 12320197.104361 +ITERATION 2 node 43 job 1 rank 17 time 12320197.230276 +ITERATION 2 node 66 job 1 rank 8 time 12320197.233370 +ITERATION 2 node 40 job 1 rank 7 time 12320425.112677 +ITERATION 2 node 31 job 1 rank 2 time 12320425.115126 +ITERATION 2 node 42 job 1 rank 1 time 12320426.025358 +ITERATION 2 node 51 job 1 rank 29 time 12321024.628471 +ITERATION 2 node 16 job 1 rank 23 time 12321024.717490 +ITERATION 2 node 22 job 1 rank 11 time 12321024.945440 +ITERATION 2 node 14 job 1 rank 20 time 12321025.218551 +ITERATION 2 node 41 job 1 rank 6 time 12321981.169000 +ITERATION 2 node 34 job 1 rank 31 time 12323494.411691 +ITERATION 2 node 0 job 1 rank 0 time 12323723.332787 +ITERATION 2 node 19 job 1 rank 28 time 12324322.073336 +ITERATION 2 node 30 job 1 rank 27 time 12324322.252770 +ITERATION 2 node 47 job 1 rank 16 time 12324322.491049 +ITERATION 2 node 29 job 1 rank 33 time 12324322.565767 +ITERATION 2 node 63 job 1 rank 24 time 12324322.568861 +ITERATION 2 node 50 job 1 rank 19 time 12325150.326534 +ITERATION 2 node 44 job 1 rank 22 time 12326063.258270 +ITERATION 2 node 20 job 1 rank 5 time 12326291.816256 +ITERATION 2 node 4 job 1 rank 10 time 12326891.771792 +ITERATION 2 node 37 job 1 rank 14 time 12326892.126731 +ITERATION 2 node 17 job 1 rank 32 time 12328447.826540 +ITERATION 2 node 60 job 1 rank 35 time 12329275.662024 +ITERATION 2 node 57 job 1 rank 4 time 12329589.123686 +ITERATION 2 node 54 job 1 rank 18 time 12330188.984627 +ITERATION 2 node 36 job 1 rank 26 time 12330189.079122 +ITERATION 2 node 27 job 1 rank 30 time 12331017.462222 +ITERATION 2 node 53 job 1 rank 34 time 12332573.069010 +ITERATION 3 node 64 job 1 rank 9 time 16846408.366519 +ITERATION 3 node 35 job 1 rank 21 time 16846408.565540 +ITERATION 3 node 58 job 1 rank 13 time 16848977.637086 +ITERATION 3 node 66 job 1 rank 8 time 16849705.670921 +ITERATION 3 node 56 job 1 rank 25 time 16849705.673849 +ITERATION 3 node 59 job 1 rank 15 time 16849705.765384 +ITERATION 3 node 43 job 1 rank 17 time 16849705.775639 +ITERATION 3 node 42 job 1 rank 1 time 16849934.209991 +ITERATION 3 node 40 job 1 rank 7 time 16849935.003134 +ITERATION 3 node 22 job 1 rank 11 time 16850534.153202 +ITERATION 3 node 16 job 1 rank 23 time 16850535.146788 +ITERATION 3 node 41 job 1 rank 6 time 16851491.059456 +ITERATION 3 node 34 job 1 rank 31 time 16853003.072714 +ITERATION 3 node 51 job 1 rank 29 time 16853102.972576 +ITERATION 3 node 0 job 1 rank 0 time 16853231.517421 +ITERATION 3 node 33 job 1 rank 12 time 16853284.355810 +ITERATION 3 node 47 job 1 rank 16 time 16853830.997593 +ITERATION 3 node 63 job 1 rank 24 time 16853831.006412 +ITERATION 3 node 29 job 1 rank 33 time 16853831.111130 +ITERATION 3 node 19 job 1 rank 28 time 16853831.239840 +ITERATION 3 node 20 job 1 rank 5 time 16854059.856564 +ITERATION 3 node 4 job 1 rank 10 time 16854659.040052 +ITERATION 3 node 44 job 1 rank 22 time 16856400.617505 +ITERATION 3 node 50 job 1 rank 19 time 16856401.051372 +ITERATION 3 node 57 job 1 rank 4 time 16857357.163993 +ITERATION 3 node 37 job 1 rank 14 time 16857724.883755 +ITERATION 3 node 54 job 1 rank 18 time 16857956.265580 +ITERATION 3 node 36 job 1 rank 26 time 16857956.347382 +ITERATION 3 node 17 job 1 rank 32 time 16859697.584190 +ITERATION 3 node 53 job 1 rank 34 time 16860340.349963 +ITERATION 3 node 60 job 1 rank 35 time 16860526.386863 +ITERATION 3 node 30 job 1 rank 27 time 16862439.401431 +ITERATION 3 node 27 job 1 rank 30 time 16862631.359863 +ITERATION 3 node 10 job 1 rank 3 time 16874057.983505 +ITERATION 3 node 31 job 1 rank 2 time 16877355.290935 +ITERATION 3 node 14 job 1 rank 20 time 16894510.197562 +ITERATION 2 node 5 job 0 rank 23 time 17110727.735133 +ITERATION 2 node 32 job 0 rank 22 time 17114852.209292 +ITERATION 2 node 62 job 0 rank 31 time 17114852.599159 +ITERATION 2 node 9 job 0 rank 27 time 17114852.774364 +ITERATION 2 node 68 job 0 rank 21 time 17114853.074428 +ITERATION 2 node 49 job 0 rank 20 time 17118149.308069 +ITERATION 2 node 45 job 0 rank 15 time 17118149.906489 +ITERATION 2 node 46 job 0 rank 25 time 17118150.389777 +ITERATION 2 node 25 job 0 rank 35 time 17118150.407391 +ITERATION 2 node 70 job 0 rank 7 time 17118379.051555 +ITERATION 2 node 15 job 0 rank 30 time 17118977.516634 +ITERATION 2 node 23 job 0 rank 26 time 17118977.597908 +ITERATION 2 node 67 job 0 rank 11 time 17118978.109855 +ITERATION 2 node 26 job 0 rank 29 time 17118978.321161 +ITERATION 2 node 8 job 0 rank 14 time 17121361.601018 +ITERATION 2 node 61 job 0 rank 24 time 17121446.508622 +ITERATION 2 node 11 job 0 rank 9 time 17121447.697106 +ITERATION 2 node 28 job 0 rank 33 time 17121448.334170 +ITERATION 2 node 7 job 0 rank 28 time 17122274.470849 +ITERATION 2 node 13 job 0 rank 34 time 17122274.835607 +ITERATION 2 node 1 job 0 rank 19 time 17122275.742882 +ITERATION 2 node 18 job 0 rank 5 time 17122503.338803 +ITERATION 2 node 2 job 0 rank 3 time 17122504.165793 +ITERATION 2 node 3 job 0 rank 6 time 17122504.387146 +ITERATION 2 node 69 job 0 rank 10 time 17123102.933399 +ITERATION 2 node 21 job 0 rank 13 time 17123103.656652 +ITERATION 2 node 39 job 0 rank 8 time 17124743.815952 +ITERATION 2 node 52 job 0 rank 32 time 17125571.717580 +ITERATION 2 node 55 job 0 rank 17 time 17125573.669661 +ITERATION 2 node 24 job 0 rank 1 time 17125800.744680 +ITERATION 2 node 38 job 0 rank 2 time 17125801.473223 +ITERATION 2 node 48 job 0 rank 12 time 17126399.806339 +ITERATION 2 node 6 job 0 rank 18 time 17126400.171098 +ITERATION 2 node 65 job 0 rank 4 time 17126628.674394 +ITERATION 2 node 71 job 0 rank 16 time 17128869.024909 +ITERATION 2 node 12 job 0 rank 0 time 17129926.080271 +ITERATION 4 node 4 job 1 rank 10 time 21068851.547471 +ITERATION 4 node 44 job 1 rank 22 time 21071037.824821 +ITERATION 4 node 54 job 1 rank 18 time 21073270.434306 +ITERATION 4 node 37 job 1 rank 14 time 21097612.783438 +ITERATION 4 node 27 job 1 rank 30 time 21102424.565486 +ITERATION 4 node 20 job 1 rank 5 time 21108249.546302 +ITERATION 4 node 33 job 1 rank 12 time 21110027.342829 +ITERATION 4 node 42 job 1 rank 1 time 21110256.073660 +ITERATION 4 node 57 job 1 rank 4 time 21111546.853731 +ITERATION 4 node 66 job 1 rank 8 time 21113501.882887 +ITERATION 4 node 14 job 1 rank 20 time 21113973.869283 +ITERATION 4 node 19 job 1 rank 28 time 21114152.678320 +ITERATION 4 node 58 job 1 rank 13 time 21115387.315874 +ITERATION 4 node 35 job 1 rank 21 time 21115387.760180 +ITERATION 4 node 10 job 1 rank 3 time 21115616.245472 +ITERATION 4 node 47 job 1 rank 16 time 21118843.796707 +ITERATION 4 node 63 job 1 rank 24 time 21119441.870921 +ITERATION 4 node 0 job 1 rank 0 time 21119597.570694 +ITERATION 4 node 17 job 1 rank 32 time 21127435.068013 +ITERATION 4 node 51 job 1 rank 29 time 21129060.332514 +ITERATION 4 node 36 job 1 rank 26 time 21143479.925267 +ITERATION 4 node 53 job 1 rank 34 time 21154862.434499 +ITERATION 4 node 31 job 1 rank 2 time 21156014.514993 +ITERATION 4 node 59 job 1 rank 15 time 21161740.594529 +ITERATION 4 node 40 job 1 rank 7 time 21161969.568395 +ITERATION 4 node 41 job 1 rank 6 time 21163525.624717 +ITERATION 4 node 16 job 1 rank 23 time 21173654.388369 +ITERATION 4 node 64 job 1 rank 9 time 21185533.014478 +ITERATION 4 node 43 job 1 rank 17 time 21189278.967485 +ITERATION 4 node 56 job 1 rank 25 time 21189811.925489 +ITERATION 4 node 34 job 1 rank 31 time 21192311.784227 +ITERATION 4 node 29 job 1 rank 33 time 21238412.751629 +ITERATION 4 node 22 job 1 rank 11 time 21253653.349842 +ITERATION 4 node 30 job 1 rank 27 time 21256950.657171 +ITERATION 4 node 50 job 1 rank 19 time 21257778.307985 +ITERATION 4 node 60 job 1 rank 35 time 21356838.612638 +ITERATION 3 node 49 job 0 rank 20 time 22283924.781893 +ITERATION 3 node 32 job 0 rank 22 time 22287221.893064 +ITERATION 3 node 61 job 0 rank 24 time 22287222.081563 +ITERATION 3 node 68 job 0 rank 21 time 22287222.429961 +ITERATION 3 node 7 job 0 rank 28 time 22288050.215038 +ITERATION 3 node 39 job 0 rank 8 time 22290519.388893 +ITERATION 3 node 15 job 0 rank 30 time 22291346.949060 +ITERATION 3 node 23 job 0 rank 26 time 22291347.443031 +ITERATION 3 node 26 job 0 rank 29 time 22291347.569684 +ITERATION 3 node 52 job 0 rank 32 time 22291347.632683 +ITERATION 3 node 24 job 0 rank 1 time 22291576.365970 +ITERATION 3 node 48 job 0 rank 12 time 22292175.550529 +ITERATION 3 node 5 job 0 rank 23 time 22292260.691330 +ITERATION 3 node 46 job 0 rank 25 time 22292261.166656 +ITERATION 3 node 8 job 0 rank 14 time 22293731.033444 +ITERATION 3 node 71 job 0 rank 16 time 22294644.940013 +ITERATION 3 node 13 job 0 rank 34 time 22294645.243202 +ITERATION 3 node 18 job 0 rank 5 time 22294873.423611 +ITERATION 3 node 2 job 0 rank 3 time 22294873.612687 +ITERATION 3 node 69 job 0 rank 10 time 22295472.778521 +ITERATION 3 node 21 job 0 rank 13 time 22295472.905174 +ITERATION 3 node 28 job 0 rank 33 time 22295558.271868 +ITERATION 3 node 11 job 0 rank 9 time 22295558.473985 +ITERATION 3 node 12 job 0 rank 0 time 22295701.701561 +ITERATION 3 node 9 job 0 rank 27 time 22296386.567242 +ITERATION 3 node 62 job 0 rank 31 time 22296386.592726 +ITERATION 3 node 38 job 0 rank 2 time 22298170.920117 +ITERATION 3 node 6 job 0 rank 18 time 22298770.578693 +ITERATION 3 node 65 job 0 rank 4 time 22298998.759202 +ITERATION 3 node 55 job 0 rank 17 time 22299683.607359 +ITERATION 3 node 45 job 0 rank 15 time 22299683.900055 +ITERATION 3 node 25 job 0 rank 35 time 22299683.915598 +ITERATION 3 node 70 job 0 rank 7 time 22299911.908515 +ITERATION 3 node 67 job 0 rank 11 time 22300511.902733 +ITERATION 3 node 1 job 0 rank 19 time 22303809.251089 +ITERATION 3 node 3 job 0 rank 6 time 22304037.244106 +ITERATION 4 node 46 job 0 rank 25 time 27793249.825077 +ITERATION 4 node 68 job 0 rank 21 time 27795614.122037 +ITERATION 4 node 11 job 0 rank 9 time 27795614.960123 +ITERATION 4 node 61 job 0 rank 24 time 27796442.932740 +ITERATION 4 node 9 job 0 rank 27 time 27796462.525210 +ITERATION 4 node 28 job 0 rank 33 time 27798203.258478 +ITERATION 4 node 49 job 0 rank 20 time 27799739.567011 +ITERATION 4 node 26 job 0 rank 29 time 27799739.840442 +ITERATION 4 node 39 job 0 rank 8 time 27799740.240069 +ITERATION 4 node 55 job 0 rank 17 time 27799740.572089 +ITERATION 4 node 67 job 0 rank 11 time 27800568.269665 +ITERATION 4 node 5 job 0 rank 23 time 27800568.290579 +ITERATION 4 node 52 job 0 rank 32 time 27800568.291383 +ITERATION 4 node 23 job 0 rank 26 time 27800568.764657 +ITERATION 4 node 25 job 0 rank 35 time 27800587.792281 +ITERATION 4 node 2 job 0 rank 3 time 27803265.147279 +ITERATION 4 node 21 job 0 rank 13 time 27803865.175933 +ITERATION 4 node 7 job 0 rank 28 time 27803865.393650 +ITERATION 4 node 71 job 0 rank 16 time 27803865.598713 +ITERATION 4 node 13 job 0 rank 34 time 27803865.779107 +ITERATION 4 node 1 job 0 rank 19 time 27803865.949695 +ITERATION 4 node 62 job 0 rank 31 time 27804693.839746 +ITERATION 4 node 69 job 0 rank 10 time 27804694.100148 +ITERATION 4 node 32 job 0 rank 22 time 27804694.147620 +ITERATION 4 node 38 job 0 rank 2 time 27806562.454709 +ITERATION 4 node 24 job 0 rank 1 time 27807391.000446 +ITERATION 4 node 48 job 0 rank 12 time 27807990.729141 +ITERATION 4 node 6 job 0 rank 18 time 27807991.114598 +ITERATION 4 node 45 job 0 rank 15 time 27807991.147076 +ITERATION 4 node 70 job 0 rank 7 time 27808219.847694 +ITERATION 4 node 15 job 0 rank 30 time 27808819.476032 +ITERATION 4 node 8 job 0 rank 14 time 27811203.560416 +ITERATION 4 node 12 job 0 rank 0 time 27811516.336037 +ITERATION 4 node 3 job 0 rank 6 time 27812345.183284 +ITERATION 4 node 18 job 0 rank 5 time 27812345.583060 +ITERATION 4 node 65 job 0 rank 4 time 27816470.918651 diff --git a/tmptest/expected/tmptest-jacobiS_MILC-25331-1693498581/avg-all-reduce-time b/tmptest/expected/tmptest-jacobiS_MILC-25331-1693498581/avg-all-reduce-time new file mode 100644 index 00000000..e69de29b diff --git a/tmptest/expected/tmptest-jacobiS_MILC-25331-1693498581/dragonfly-cn-stats b/tmptest/expected/tmptest-jacobiS_MILC-25331-1693498581/dragonfly-cn-stats new file mode 100644 index 00000000..b06aa026 --- /dev/null +++ b/tmptest/expected/tmptest-jacobiS_MILC-25331-1693498581/dragonfly-cn-stats @@ -0,0 +1,73 @@ +# Format <# Packets finished> +2 0 39813200 39813200 36107.138499 461417.952062 3297.307430 9770 4.376561 17587784.331581 +3 1 30000200 30000200 39284.494061 434701.820268 2379.827009 7387 3.682144 18356179.307331 +7 2 30000240 30000240 62318.782725 640866.354244 2379.827009 7392 4.470373 19113473.070391 +8 3 30000040 30000040 40925.980015 515505.949898 3291.464725 7367 3.945975 17940780.437224 +12 4 39813520 39813520 34994.103721 469254.313408 3297.307430 9810 4.381040 16536392.029545 +13 5 30000200 30000200 34635.404728 544989.362677 2379.827009 7387 4.055909 14938820.108085 +17 6 30000200 30000200 44767.801473 576653.794469 2384.084484 7387 3.656288 18814126.770707 +18 7 30000200 30000200 51387.382471 546505.844848 3291.464725 7387 4.206444 22205724.648773 +22 8 30000200 30000200 56515.671426 456563.833012 2379.827009 7387 4.338568 15243839.322545 +23 9 30000200 30000200 62747.573596 732304.908878 2464.855722 7387 4.501963 22518624.337887 +27 10 39813600 39813600 38206.513802 595234.314223 3297.307430 9820 4.071996 15912055.432753 +28 11 30000200 30000200 57688.459239 460987.598043 3291.464725 7387 4.624882 21982147.565134 +32 12 30000040 30000040 48120.746995 460788.732751 1553.218006 7367 4.426904 21978848.089413 +33 13 30000200 30000200 48728.737706 528097.477557 2379.827009 7387 4.224042 17300716.492549 +37 14 39813520 39813520 42482.617734 504077.082789 3297.307430 9810 4.500408 16254727.926633 +38 15 30000200 30000200 55858.592637 544988.314605 2379.827009 7387 3.945986 10437047.462660 +42 16 39813520 39813520 42849.647075 408832.282689 2469.279268 9810 4.165036 15447231.594722 +43 17 39813520 39813520 38338.085471 341206.976962 2384.084484 9810 4.015087 16773305.735538 +47 18 30000240 30000240 42373.430620 629220.891776 3291.464725 7392 4.535173 15995328.015708 +48 19 39813520 39813520 40423.608697 315897.493880 2384.084484 9810 4.176860 14328352.862862 +52 20 39813600 39813600 43520.623476 541086.894327 3297.307430 9820 4.555601 13780387.971014 +53 21 30000200 30000200 44476.828958 349439.122320 2379.827009 7387 4.475430 18712483.166522 +57 22 39813520 39813520 46535.756921 308890.720074 3297.307430 9810 4.331906 12926592.020511 +58 23 30000200 30000200 33511.399102 322937.974241 2469.279268 7387 3.786517 18523348.301746 +62 24 30000240 30000240 36774.377417 461518.474685 1553.218006 7392 4.146239 19158269.234675 +63 25 30000200 30000200 41059.457855 278051.087009 2379.827009 7387 4.351157 19270573.497551 +67 26 30000200 30000200 40614.046110 381768.605366 2379.827009 7387 4.125220 19112482.493963 +68 27 39813520 39813520 41995.882873 371667.257947 2469.279268 9810 4.376962 14646355.081486 +72 28 30000200 30000200 31321.605985 365266.392194 2379.827009 7387 4.039123 19400082.478809 +73 29 39813520 39813520 32959.171255 451587.798712 3297.307430 9810 4.179613 16095202.695306 +77 30 39813520 39813520 37427.649193 351365.395737 2469.279268 9810 4.407339 15586679.540493 +78 31 39813200 39813200 41862.918330 387855.048741 3297.307430 9770 4.525077 16586112.004836 +82 32 30000200 30000200 45060.956994 427249.367222 3291.464725 7387 4.514146 19189374.516511 +83 33 39813520 39813520 49395.064664 469382.320131 2384.084484 9810 4.012232 17850768.194652 +87 34 39813520 39813520 44079.438999 342285.995523 2469.279268 9810 4.520387 15144572.054951 +88 35 39813520 39813520 38971.920099 300516.633956 3297.307430 9810 4.351682 16091038.039457 +92 36 39813520 39813520 39426.347282 309758.764907 2643.131510 9810 4.074822 15678132.783902 +93 37 39813520 39813520 34995.061880 346958.053999 2384.084484 9810 3.428746 16876971.125963 +97 38 30000040 30000040 35905.285204 495198.570009 2379.827009 7367 3.970273 22512609.412966 +98 39 30000200 30000200 42447.183602 377731.969067 2469.279268 7387 4.671179 22714730.942416 +102 40 39813600 39813600 34687.355890 335707.416147 1556.056322 9820 3.577800 14259163.848822 +103 41 39813200 39813200 38175.362430 382249.538761 1556.056322 9770 3.537769 13573738.064970 +107 42 39813600 39813600 44532.014760 369370.892239 3297.307430 9820 4.442770 15313358.299072 +108 43 39813520 39813520 38517.783131 536152.927723 2384.084484 9810 3.930887 16854266.067963 +112 44 39813520 39813520 48072.153707 551643.077958 3297.307430 9810 4.406932 13784797.518310 +113 45 30000200 30000200 38361.576186 337612.463862 3291.464725 7387 4.412481 22709598.612240 +117 46 30000200 30000200 47063.934511 323522.751165 3291.464725 7387 4.315690 15178598.555845 +118 47 39813520 39813520 32468.101294 470956.241085 2384.084484 9810 3.637717 16103495.317657 +122 48 30000200 30000200 34763.145246 355505.175562 2379.827009 7387 3.586165 14099343.817718 +123 49 30000200 30000200 32178.416645 415926.699100 1553.218006 7387 3.282523 13642975.324074 +127 50 39813520 39813520 36042.175157 333399.692314 2384.084484 9810 3.894903 15924037.373174 +128 51 39813520 39813520 47426.976684 384894.236551 3297.307430 9810 4.524771 14800606.559240 +132 52 30000200 30000200 50648.202686 683306.228547 3291.464725 7387 4.051712 18051629.450587 +133 53 39813520 39813520 43688.807523 397577.483030 2384.084484 9810 4.367992 15294739.661280 +137 54 39813520 39813520 41274.721778 410620.945162 2384.084484 9810 3.614985 15348607.758912 +138 55 30000200 30000200 47460.273307 393172.959339 3291.464725 7387 4.455665 22327681.850808 +142 56 39813520 39813520 30353.003214 423224.921981 2384.084484 9810 3.627217 14875339.838529 +143 57 39813200 39813200 41978.905805 362220.406331 3297.307430 9770 4.289662 13439725.026830 +147 58 39813520 39813520 32600.221245 394656.517832 1556.056322 9810 3.366769 17388431.077442 +148 59 39813520 39813520 34844.964516 437962.421017 1556.056322 9810 3.642712 15275599.714230 +152 60 39813520 39813520 38828.762813 380963.287056 2469.279268 9810 4.269521 14057550.559304 +153 61 30000200 30000200 38425.563290 437052.170191 3291.464725 7387 4.298227 18690662.547655 +157 62 30000200 30000200 37163.192817 486901.376592 3291.464725 7387 4.302423 22529024.421436 +158 63 39813520 39813520 32177.129431 313859.556601 2384.084484 9810 4.102345 16088278.649605 +162 64 39813520 39813520 36307.283720 473982.706414 2384.084484 9810 3.756575 13805423.148064 +163 65 30000040 30000040 39266.258111 541660.942240 3291.464725 7367 3.542012 22415755.472424 +167 66 39813520 39813520 35784.342668 486343.405857 2384.084484 9810 3.758104 17791245.347997 +168 67 30000200 30000200 35113.840119 558234.396436 2379.827009 7387 3.712739 15175940.132678 +172 68 30000200 30000200 46259.577398 529697.867518 3291.464725 7387 4.381752 11926841.048741 +173 69 30000200 30000200 41583.798735 474531.461375 2384.084484 7387 4.093001 18609998.026356 +177 70 30000240 30000240 30915.717460 551227.348696 2379.827009 7392 3.543561 18582548.588579 +178 71 30000200 30000200 36220.251632 387764.380366 2464.855722 7387 3.623392 14445475.496982 diff --git a/tmptest/expected/tmptest-jacobiS_MILC-25331-1693498581/dragonfly-link-stats b/tmptest/expected/tmptest-jacobiS_MILC-25331-1693498581/dragonfly-link-stats new file mode 100644 index 00000000..7864d91b --- /dev/null +++ b/tmptest/expected/tmptest-jacobiS_MILC-25331-1693498581/dragonfly-link-stats @@ -0,0 +1,326 @@ +# Format < dest_type> + +0 T 0 R CN 40017920 17587784.331581 8837 +1 T 0 R CN 30257152 18356179.307331 6359 +0 R 1 R L 43550704 4874052.951440 4664 +0 R 2 R L 45137320 4738075.959451 5558 +0 R 3 R L 47388976 5040625.986632 6123 +0 R 7 R G 47388976 5040625.986632 6123 +0 R 11 R G 41983848 4420584.424223 4472 +0 R 0 T CN 39813200 1311579.280498 3696 +0 R 1 T CN 30049352 627821.545675 1868 +2 T 1 R CN 30277632 19113473.070391 6755 +3 T 1 R CN 30175232 17940780.437224 6736 +1 R 0 R L 45287672 4986264.334545 5638 +1 R 2 R L 41987648 4053798.568995 5472 +1 R 3 R L 44837432 4310280.411427 4833 +1 R 14 R G 44837432 4310280.411427 4833 +1 R 18 R G 40681472 5840547.653511 5126 +1 R 2 T CN 30049392 1001716.940524 3112 +1 R 3 T CN 30049192 766538.802992 2606 +4 T 2 R CN 40181760 16536392.029545 8204 +5 T 2 R CN 30257152 14938820.108085 6439 +2 R 0 R L 45136984 3987872.001758 3633 +2 R 1 R L 33825320 5132507.548055 3802 +2 R 3 R L 48316064 5229299.015873 6004 +2 R 21 R G 48316064 5229299.015873 6004 +2 R 25 R G 38686264 4817680.782145 4226 +2 R 4 T CN 39813520 1501521.379594 4519 +2 R 5 T CN 30049352 556600.125602 1835 +6 T 3 R CN 30257152 18814126.770707 6964 +7 T 3 R CN 30257152 22205724.648773 6984 +3 R 0 R L 45473184 4549998.796036 5237 +3 R 1 R L 38859592 4033811.151346 4587 +3 R 2 R L 36569560 4293046.016019 3998 +3 R 28 R G 47455304 5109010.661862 5571 +3 R 32 R G 48449992 6234288.585361 7036 +3 R 6 T CN 30049352 821409.664124 2409 +3 R 7 T CN 30049352 969930.916156 3276 +8 T 4 R CN 30257152 15243839.322545 6972 +9 T 4 R CN 30257152 22518624.337887 6513 +4 R 5 R L 36860984 4721092.963003 4346 +4 R 6 R L 32135288 3583080.888814 3568 +4 R 7 R L 58009616 6102408.455236 8020 +4 R 11 R G 58009616 6102408.455236 8020 +4 R 15 R G 52375248 5544874.795086 7249 +4 R 8 T CN 30049352 1128444.125886 3975 +4 R 9 T CN 30049352 932709.088273 3051 +10 T 5 R CN 40222720 15912055.432753 8427 +11 T 5 R CN 30257152 21982147.565134 6710 +5 R 4 R L 53993696 6136982.915861 7661 +5 R 6 R L 42998872 5104126.663520 4877 +5 R 7 R L 46448488 5646843.629053 6270 +5 R 18 R G 46448488 5646843.629053 6270 +5 R 22 R G 51448536 5797029.042031 6137 +5 R 10 T CN 39813600 1349237.793212 4270 +5 R 11 T CN 30049352 1248376.533293 3652 +12 T 6 R CN 30175232 21978848.089413 7147 +13 T 6 R CN 30257152 17300716.492549 6711 +6 R 4 R L 40487440 5812805.144307 5433 +6 R 5 R L 36769744 5264234.631795 4172 +6 R 7 R L 36385608 4752852.854935 3298 +6 R 25 R G 36385608 4752852.854935 3298 +6 R 29 R G 40053384 5005853.637480 4483 +6 R 12 T CN 30049192 903354.038109 3055 +6 R 13 T CN 30049352 712938.420808 2057 +14 T 7 R CN 40181760 16254727.926633 8254 +15 T 7 R CN 30257152 10437047.462660 6653 +7 R 4 R L 34675992 4691030.184385 3995 +7 R 5 R L 43513016 4301021.299787 4870 +7 R 6 R L 35973648 3934225.668027 3041 +7 R 0 R G 42749416 4505780.268095 5345 +7 R 32 R G 38144576 4584423.547847 5166 +7 R 14 T CN 39813520 1387873.491301 4062 +7 R 15 T CN 30049352 1037738.118919 3344 +16 T 8 R CN 40181760 15447231.594722 8402 +17 T 8 R CN 40181760 16773305.735538 9077 +8 R 9 R L 37801352 5059668.991064 4600 +8 R 10 R L 37946560 6152744.148682 4069 +8 R 11 R L 55297048 5864020.845953 7606 +8 R 15 R G 55297048 5864020.845953 7606 +8 R 19 R G 45039696 4606939.448035 4488 +8 R 16 T CN 39813520 1003951.885126 3174 +8 R 17 T CN 39813520 1200737.527034 3904 +18 T 9 R CN 30277632 15995328.015708 7099 +19 T 9 R CN 40181760 14328352.862862 8584 +9 R 8 R L 49385696 6808787.447933 6557 +9 R 10 R L 33253400 5479264.726710 3535 +9 R 11 R L 52364520 6489474.843136 7766 +9 R 22 R G 52364520 6489474.843136 7766 +9 R 26 R G 49267624 6524810.669739 6733 +9 R 18 T CN 30049392 972448.000381 3110 +9 R 19 T CN 39813520 963301.128882 3233 +20 T 10 R CN 40222720 13780387.971014 8866 +21 T 10 R CN 30257152 18712483.166522 6914 +10 R 8 R L 38678080 5240244.555583 4041 +10 R 9 R L 49890448 5799177.766866 6788 +10 R 11 R L 48753776 5150370.905425 6152 +10 R 29 R G 48753776 5150370.905425 6152 +10 R 33 R G 41425648 6389805.183540 5013 +10 R 20 T CN 39813600 1377361.309928 4429 +10 R 21 T CN 30049352 1175058.415210 3308 +22 T 11 R CN 40181760 12926592.020511 8104 +23 T 11 R CN 30257152 18523348.301746 6773 +11 R 8 R L 40560208 4846836.691540 3797 +11 R 9 R L 34124224 4763859.453014 3292 +11 R 10 R L 38605016 5277021.621061 4322 +11 R 0 R G 40478280 5086777.914766 4111 +11 R 4 R G 49943824 5905101.806403 6563 +11 R 22 T CN 39813520 1424222.517660 4265 +11 R 23 T CN 30049352 1028261.496375 3530 +24 T 12 R CN 30277632 19158269.234675 7090 +25 T 12 R CN 30257152 19270573.497551 7116 +12 R 13 R L 32047456 3750265.764293 2849 +12 R 14 R L 50178184 7309130.184921 7564 +12 R 15 R L 58034400 5843698.462804 8436 +12 R 19 R G 58034400 5843698.462804 8436 +12 R 23 R G 44575160 6092245.688980 5725 +12 R 24 T CN 30049392 806566.838442 2811 +12 R 25 T CN 30049352 1213202.131881 3583 +26 T 13 R CN 30257152 19112482.493963 7014 +27 T 13 R CN 40181760 14646355.081486 8988 +13 R 12 R L 44527192 6423030.861185 6482 +13 R 14 R L 46636984 5807093.011567 6138 +13 R 15 R L 46974000 6554687.676421 5454 +13 R 26 R G 46974000 6554687.676421 5454 +13 R 30 R G 52447448 4836595.765817 6980 +13 R 26 T CN 30049352 1125329.914129 3288 +13 R 27 T CN 39813520 1512104.949816 4844 +28 T 14 R CN 30257152 19400082.478809 7092 +29 T 14 R CN 40181760 16095202.695306 9170 +14 R 12 R L 34606080 5950705.752400 4000 +14 R 13 R L 43123232 5680350.634564 5580 +14 R 15 R L 38261328 4981625.686206 3350 +14 R 1 R G 45992208 4930271.366009 5573 +14 R 33 R G 38261328 4981625.686206 3350 +14 R 28 T CN 30049352 637814.555154 2221 +14 R 29 T CN 39813520 1249106.103622 3833 +30 T 15 R CN 40181760 15586679.540493 9411 +31 T 15 R CN 40017920 16586112.004836 9223 +15 R 12 R L 51077496 6550042.514575 7713 +15 R 13 R L 47073208 4832118.412440 5895 +15 R 14 R L 45116952 4837185.355505 4833 +15 R 4 R G 52746688 6709131.321456 8350 +15 R 8 R G 51692976 6953577.442845 7000 +15 R 30 T CN 39813520 1283130.365744 4192 +15 R 31 T CN 39813200 1457038.449892 4765 +32 T 16 R CN 30257152 19189374.516511 7113 +33 T 16 R CN 40181760 17850768.194652 7596 +16 R 17 R L 54025952 5905546.258479 7114 +16 R 18 R L 34160632 4064251.783900 3198 +16 R 19 R L 45741616 6374696.422823 6186 +16 R 23 R G 45741616 6374696.422823 6186 +16 R 27 R G 41321480 5702481.030882 5627 +16 R 32 T CN 30049352 1532449.420789 4360 +16 R 33 T CN 39813520 1199169.584479 3474 +34 T 17 R CN 40181760 15144572.054951 9081 +35 T 17 R CN 40181760 16091038.039457 9000 +17 R 16 R L 46232920 5971728.548924 6388 +17 R 18 R L 44728608 6438892.891589 6745 +17 R 19 R L 51983616 5427979.947518 6365 +17 R 30 R G 51983616 5427979.947518 6365 +17 R 34 R G 44317208 5188154.376478 5087 +17 R 34 T CN 39813520 1485890.868749 4665 +17 R 35 T CN 39813520 1130833.183301 3732 +36 T 18 R CN 40181760 15678132.783902 8490 +37 T 18 R CN 40181760 16876971.125963 8122 +18 R 16 R L 46143600 5514466.847122 6984 +18 R 17 R L 42394152 3865669.619331 4840 +18 R 19 R L 45794064 5340218.948968 5313 +18 R 1 R G 45794064 5340218.948968 5313 +18 R 5 R G 49523608 5463627.902051 6131 +18 R 36 T CN 39813520 852504.013955 2683 +18 R 37 T CN 39813520 805790.300623 2486 +38 T 19 R CN 30175232 22512609.412966 6847 +39 T 19 R CN 30257152 22714730.942416 7121 +19 R 16 R L 34957960 5526707.603444 4004 +19 R 17 R L 47349408 6034758.983252 6333 +19 R 18 R L 46919416 5608445.885587 6075 +19 R 8 R G 44365616 5296334.999713 4604 +19 R 12 R G 56495544 6082973.442639 8366 +19 R 38 T CN 30049192 1092387.377044 3270 +19 R 39 T CN 30049352 1068280.894725 3140 +40 T 20 R CN 40222720 14259163.848822 8729 +41 T 20 R CN 40017920 13573738.064970 8591 +20 R 21 R L 39728944 4697512.855911 5353 +20 R 22 R L 41903320 5045588.986343 5348 +20 R 23 R L 52146088 7359369.800037 7983 +20 R 27 R G 52146088 7359369.800037 7983 +20 R 31 R G 47184128 5131759.262767 5973 +20 R 40 T CN 39813600 883030.699000 2892 +20 R 41 T CN 39813200 784350.806184 2677 +42 T 21 R CN 40222720 15313358.299072 9214 +43 T 21 R CN 40181760 16854266.067963 8718 +21 R 20 R L 39164632 5944643.875686 5577 +21 R 22 R L 38028176 4427084.605373 4537 +21 R 23 R L 34169112 4269694.137535 2856 +21 R 2 R G 48270464 5223801.490295 5763 +21 R 34 R G 34169112 4269694.137535 2856 +21 R 42 T CN 39813600 1364767.638329 4459 +21 R 43 T CN 39813520 857971.397901 2662 +44 T 22 R CN 40181760 13784797.518310 8666 +45 T 22 R CN 30257152 22709598.612240 6328 +22 R 20 R L 41212736 5760616.725519 4330 +22 R 21 R L 44899648 5571184.216750 5490 +22 R 23 R L 48191408 6286261.674063 6674 +22 R 5 R G 48191408 6286261.674063 6674 +22 R 9 R G 51169760 5237963.175649 7226 +22 R 44 T CN 39813520 1542534.243019 4936 +22 R 45 T CN 30049352 1265047.999267 3871 +46 T 23 R CN 30257152 15178598.555845 6169 +47 T 23 R CN 40181760 16103495.317657 8422 +23 R 20 R L 40333504 6603454.297476 5211 +23 R 21 R L 36006888 4843963.251430 3295 +23 R 22 R L 40413664 5142267.725370 4994 +23 R 12 R G 45082392 5304702.183129 5115 +23 R 16 R G 50801776 5131874.483025 7138 +23 R 46 T CN 30049352 1382693.916307 4027 +23 R 47 T CN 39813520 1038551.205006 3128 +48 T 24 R CN 30257152 14099343.817718 6106 +49 T 24 R CN 30257152 13642975.324074 6045 +24 R 25 R L 39016768 3857944.974915 4288 +24 R 26 R L 34965464 5003889.506839 4262 +24 R 27 R L 47190024 5454167.775527 6871 +24 R 31 R G 47190024 5454167.775527 6871 +24 R 35 R G 41646064 5992850.984984 5408 +24 R 48 T CN 30049352 667188.968666 2499 +24 R 49 T CN 30049352 881431.111138 2993 +50 T 25 R CN 40181760 15924037.373174 9323 +51 T 25 R CN 40181760 14800606.559240 8762 +25 R 24 R L 35274088 5828284.233935 3900 +25 R 26 R L 51652152 5817462.082088 7529 +25 R 27 R L 39214576 4326894.031401 4324 +25 R 2 R G 39214576 4326894.031401 4324 +25 R 6 R G 35298432 4524630.058634 3493 +25 R 50 T CN 39813520 966485.561719 2871 +25 R 51 T CN 39813520 1404936.336504 4156 +52 T 26 R CN 30257152 18051629.450587 6976 +53 T 26 R CN 40181760 15294739.661280 9009 +26 R 24 R L 38439736 6450489.640662 5018 +26 R 25 R L 43021968 4912180.431768 4539 +26 R 27 R L 49255576 5506754.761772 6905 +26 R 9 R G 49255576 5506754.761772 6905 +26 R 13 R G 46517152 4931759.758126 5515 +26 R 52 T CN 30049352 1089113.603708 3137 +26 R 53 T CN 39813520 1068108.929478 3544 +54 T 27 R CN 40181760 15348607.758912 8357 +55 T 27 R CN 30257152 22327681.850808 6890 +27 R 24 R L 31797088 5550718.157644 3272 +27 R 25 R L 52961704 5033719.493260 5860 +27 R 26 R L 40313048 4772700.110949 4746 +27 R 16 R G 46071704 4936679.422089 6250 +27 R 20 R G 51076808 5847799.836050 6668 +27 R 54 T CN 39813520 1055478.134521 3643 +27 R 55 T CN 30049352 1389171.083011 3761 +56 T 28 R CN 40181760 14875339.838529 8758 +57 T 28 R CN 40017920 13439725.026830 8197 +28 R 29 R L 36407792 4562925.391117 4531 +28 R 30 R L 54929192 5839356.894003 8374 +28 R 31 R L 47104064 5457596.779440 5298 +28 R 3 R G 44037240 3666217.594051 4157 +28 R 35 R G 47104064 5457596.779440 5298 +28 R 56 T CN 39813520 589240.204071 1810 +28 R 57 T CN 39813200 1253920.506312 4022 +58 T 29 R CN 40181760 17388431.077442 8594 +59 T 29 R CN 40181760 15275599.714230 8708 +29 R 28 R L 36743304 4747217.925107 3404 +29 R 30 R L 39226976 4588611.200791 4500 +29 R 31 R L 43193824 5690009.346772 4949 +29 R 6 R G 43193824 5690009.346772 4949 +29 R 10 R G 46395064 5499095.428036 5989 +29 R 58 T CN 39813520 813051.646961 2322 +29 R 59 T CN 39813520 916003.412645 3024 +60 T 30 R CN 40181760 14057550.559304 8373 +61 T 30 R CN 30257152 18690662.547655 6874 +30 R 28 R L 37206752 5500248.346157 3199 +30 R 29 R L 46057680 5746289.642082 5828 +30 R 31 R L 51234608 5090602.876008 6564 +30 R 13 R G 51234608 5090602.876008 6564 +30 R 17 R G 50215328 5459724.442375 7315 +30 R 60 T CN 39813520 1135713.228615 3800 +30 R 61 T CN 30049352 1610036.399930 4445 +62 T 31 R CN 30257152 22529024.421436 6870 +63 T 31 R CN 40181760 16088278.649605 8550 +31 R 28 R L 54027816 4799689.111254 6056 +31 R 29 R L 38985584 5655226.937628 4649 +31 R 30 R L 47371424 4792407.927307 5839 +31 R 20 R G 46661320 5892242.729819 5976 +31 R 24 R G 49969336 6454067.586342 6779 +31 R 62 T CN 30049352 1152784.313173 3566 +31 R 63 T CN 39813520 803243.110496 2380 +64 T 32 R CN 40181760 13805423.148064 6702 +65 T 32 R CN 30175232 22415755.472424 6932 +32 R 33 R L 39495072 4060223.754083 4027 +32 R 34 R L 38318680 3832552.194477 3756 +32 R 35 R L 51263104 5519808.640647 7544 +32 R 3 R G 51263104 5519808.640647 7544 +32 R 7 R G 39328112 5219095.840084 5052 +32 R 64 T CN 39813520 1210251.667998 3458 +32 R 65 T CN 30049192 630422.140586 2292 +66 T 33 R CN 40181760 17791245.347997 6309 +67 T 33 R CN 30257152 15175940.132678 6274 +33 R 32 R L 55929688 5194979.684028 5947 +33 R 34 R L 32785920 4097967.225898 2747 +33 R 35 R L 39697960 5994401.587308 5430 +33 R 10 R G 39697960 5994401.587308 5430 +33 R 14 R G 38884784 4379182.216837 4004 +33 R 66 T CN 39813520 1107798.113758 3239 +33 R 67 T CN 30049352 811674.087607 2529 +68 T 34 R CN 30257152 11926841.048741 6879 +69 T 34 R CN 30257152 18609998.026356 6837 +34 R 32 R L 39777456 5046916.308178 5315 +34 R 33 R L 34270784 5365204.443651 4172 +34 R 35 R L 42249888 4560827.376285 5055 +34 R 17 R G 42249888 4560827.376285 5055 +34 R 21 R G 36831104 4824175.442723 3634 +34 R 68 T CN 30049352 1078687.231229 3249 +34 R 69 T CN 30049352 739703.645466 2337 +70 T 35 R CN 30277632 18582548.588579 6780 +71 T 35 R CN 30257152 14445475.496982 6863 +35 R 32 R L 39508896 5032306.409923 6202 +35 R 33 R L 34469632 5572253.621625 4066 +35 R 34 R L 33126928 4824327.757457 3462 +35 R 24 R G 41519936 4246448.961771 4535 +35 R 28 R G 43743104 4729620.821349 5151 +35 R 70 T CN 30049392 447139.490875 1640 +35 R 71 T CN 30049352 1020380.529942 3401 \ No newline at end of file diff --git a/tmptest/expected/tmptest-jacobiS_MILC-25331-1693498581/model-net-category-all b/tmptest/expected/tmptest-jacobiS_MILC-25331-1693498581/model-net-category-all new file mode 100644 index 00000000..b2df970f --- /dev/null +++ b/tmptest/expected/tmptest-jacobiS_MILC-25331-1693498581/model-net-category-all @@ -0,0 +1,72 @@ +lp:2 send_count:9770 send_bytes:39813200 send_time:7583466.666666 recv_count:9770 recv_bytes:39813200 recv_time:352766743.133932 max_event_size:792 +lp:3 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:290194557.627888 max_event_size:792 +lp:7 send_count:7392 send_bytes:30000240 send_time:5714331.428571 recv_count:7392 recv_bytes:30000240 recv_time:460660441.899865 max_event_size:792 +lp:8 send_count:7367 send_bytes:30000040 send_time:5714293.333333 recv_count:7367 recv_bytes:30000040 recv_time:301501694.772019 max_event_size:792 +lp:12 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:343292157.501219 max_event_size:792 +lp:13 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:255851734.723889 max_event_size:792 +lp:17 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:330699749.483186 max_event_size:792 +lp:18 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:379598594.313395 max_event_size:792 +lp:22 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:417481264.821944 max_event_size:792 +lp:23 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:463516326.154559 max_event_size:792 +lp:27 send_count:9820 send_bytes:39813600 send_time:7583542.857142 recv_count:9820 recv_bytes:39813600 recv_time:375187965.536660 max_event_size:792 +lp:28 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:426144648.397676 max_event_size:792 +lp:32 send_count:7367 send_bytes:30000040 send_time:5714293.333333 recv_count:7367 recv_bytes:30000040 recv_time:354505543.112376 max_event_size:792 +lp:33 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:359959185.432986 max_event_size:792 +lp:37 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:416754479.974724 max_event_size:792 +lp:38 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:412627423.811912 max_event_size:792 +lp:42 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:420355037.806001 max_event_size:792 +lp:43 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:376096618.471747 max_event_size:792 +lp:47 send_count:7392 send_bytes:30000240 send_time:5714331.428571 recv_count:7392 recv_bytes:30000240 recv_time:313224399.141498 max_event_size:792 +lp:48 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:396555601.315165 max_event_size:792 +lp:52 send_count:9820 send_bytes:39813600 send_time:7583542.857142 recv_count:9820 recv_bytes:39813600 recv_time:427372522.534280 max_event_size:792 +lp:53 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:328550335.514686 max_event_size:792 +lp:57 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:456515775.394763 max_event_size:792 +lp:58 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:247548705.168367 max_event_size:792 +lp:62 send_count:7392 send_bytes:30000240 send_time:5714331.428571 recv_count:7392 recv_bytes:30000240 recv_time:271836197.869304 max_event_size:792 +lp:63 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:303306215.174348 max_event_size:792 +lp:67 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:300015958.614822 max_event_size:792 +lp:68 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:411979610.984809 max_event_size:792 +lp:72 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:231372703.409270 max_event_size:792 +lp:73 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:323329470.014433 max_event_size:792 +lp:77 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:367165238.584887 max_event_size:792 +lp:78 send_count:9770 send_bytes:39813200 send_time:7583466.666666 recv_count:9770 recv_bytes:39813200 recv_time:409000712.088329 max_event_size:792 +lp:82 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:332865289.311507 max_event_size:792 +lp:83 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:484565584.355521 max_event_size:792 +lp:87 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:432419296.580878 max_event_size:792 +lp:88 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:382314536.175355 max_event_size:792 +lp:92 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:386772466.832815 max_event_size:792 +lp:93 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:343301557.045121 max_event_size:792 +lp:97 send_count:7367 send_bytes:30000040 send_time:5714293.333333 recv_count:7367 recv_bytes:30000040 recv_time:264514236.096660 max_event_size:792 +lp:98 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:313557345.269660 max_event_size:792 +lp:102 send_count:9820 send_bytes:39813600 send_time:7583542.857142 recv_count:9820 recv_bytes:39813600 recv_time:340629834.844444 max_event_size:792 +lp:103 send_count:9770 send_bytes:39813200 send_time:7583466.666666 recv_count:9770 recv_bytes:39813200 recv_time:372973290.936664 max_event_size:792 +lp:107 send_count:9820 send_bytes:39813600 send_time:7583542.857142 recv_count:9820 recv_bytes:39813600 recv_time:437304384.944908 max_event_size:792 +lp:108 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:377859452.518662 max_event_size:792 +lp:112 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:471587827.861975 max_event_size:792 +lp:113 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:283376963.287888 max_event_size:792 +lp:117 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:347661284.230018 max_event_size:792 +lp:118 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:318512073.696441 max_event_size:792 +lp:122 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:256795353.934300 max_event_size:792 +lp:123 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:237701963.756680 max_event_size:792 +lp:127 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:353573738.286471 max_event_size:792 +lp:128 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:465258641.273453 max_event_size:792 +lp:132 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:374138273.240924 max_event_size:792 +lp:133 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:428587201.804590 max_event_size:792 +lp:137 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:404905020.644931 max_event_size:792 +lp:138 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:350589038.917737 max_event_size:792 +lp:142 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:297762961.526255 max_event_size:792 +lp:143 send_count:9770 send_bytes:39813200 send_time:7583466.666666 recv_count:9770 recv_bytes:39813200 recv_time:410133909.716090 max_event_size:792 +lp:147 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:319808170.413551 max_event_size:792 +lp:148 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:341829101.902517 max_event_size:792 +lp:152 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:380910163.193983 max_event_size:792 +lp:153 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:283849636.026727 max_event_size:792 +lp:157 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:274524505.335948 max_event_size:792 +lp:158 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:315657639.722941 max_event_size:792 +lp:162 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:356174453.289787 max_event_size:792 +lp:163 send_count:7367 send_bytes:30000040 send_time:5714293.333333 recv_count:7367 recv_bytes:30000040 recv_time:289274523.506280 max_event_size:792 +lp:167 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:351044401.571382 max_event_size:792 +lp:168 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:259385936.957835 max_event_size:792 +lp:172 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:341719498.237854 max_event_size:792 +lp:173 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:307179521.253780 max_event_size:792 +lp:177 send_count:7392 send_bytes:30000240 send_time:5714331.428571 recv_count:7392 recv_bytes:30000240 recv_time:228528983.462069 max_event_size:792 +lp:178 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:267558998.807704 max_event_size:792 diff --git a/tmptest/expected/tmptest-jacobiS_MILC-25331-1693498581/model-net-category-high b/tmptest/expected/tmptest-jacobiS_MILC-25331-1693498581/model-net-category-high new file mode 100644 index 00000000..b2df970f --- /dev/null +++ b/tmptest/expected/tmptest-jacobiS_MILC-25331-1693498581/model-net-category-high @@ -0,0 +1,72 @@ +lp:2 send_count:9770 send_bytes:39813200 send_time:7583466.666666 recv_count:9770 recv_bytes:39813200 recv_time:352766743.133932 max_event_size:792 +lp:3 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:290194557.627888 max_event_size:792 +lp:7 send_count:7392 send_bytes:30000240 send_time:5714331.428571 recv_count:7392 recv_bytes:30000240 recv_time:460660441.899865 max_event_size:792 +lp:8 send_count:7367 send_bytes:30000040 send_time:5714293.333333 recv_count:7367 recv_bytes:30000040 recv_time:301501694.772019 max_event_size:792 +lp:12 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:343292157.501219 max_event_size:792 +lp:13 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:255851734.723889 max_event_size:792 +lp:17 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:330699749.483186 max_event_size:792 +lp:18 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:379598594.313395 max_event_size:792 +lp:22 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:417481264.821944 max_event_size:792 +lp:23 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:463516326.154559 max_event_size:792 +lp:27 send_count:9820 send_bytes:39813600 send_time:7583542.857142 recv_count:9820 recv_bytes:39813600 recv_time:375187965.536660 max_event_size:792 +lp:28 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:426144648.397676 max_event_size:792 +lp:32 send_count:7367 send_bytes:30000040 send_time:5714293.333333 recv_count:7367 recv_bytes:30000040 recv_time:354505543.112376 max_event_size:792 +lp:33 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:359959185.432986 max_event_size:792 +lp:37 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:416754479.974724 max_event_size:792 +lp:38 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:412627423.811912 max_event_size:792 +lp:42 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:420355037.806001 max_event_size:792 +lp:43 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:376096618.471747 max_event_size:792 +lp:47 send_count:7392 send_bytes:30000240 send_time:5714331.428571 recv_count:7392 recv_bytes:30000240 recv_time:313224399.141498 max_event_size:792 +lp:48 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:396555601.315165 max_event_size:792 +lp:52 send_count:9820 send_bytes:39813600 send_time:7583542.857142 recv_count:9820 recv_bytes:39813600 recv_time:427372522.534280 max_event_size:792 +lp:53 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:328550335.514686 max_event_size:792 +lp:57 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:456515775.394763 max_event_size:792 +lp:58 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:247548705.168367 max_event_size:792 +lp:62 send_count:7392 send_bytes:30000240 send_time:5714331.428571 recv_count:7392 recv_bytes:30000240 recv_time:271836197.869304 max_event_size:792 +lp:63 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:303306215.174348 max_event_size:792 +lp:67 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:300015958.614822 max_event_size:792 +lp:68 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:411979610.984809 max_event_size:792 +lp:72 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:231372703.409270 max_event_size:792 +lp:73 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:323329470.014433 max_event_size:792 +lp:77 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:367165238.584887 max_event_size:792 +lp:78 send_count:9770 send_bytes:39813200 send_time:7583466.666666 recv_count:9770 recv_bytes:39813200 recv_time:409000712.088329 max_event_size:792 +lp:82 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:332865289.311507 max_event_size:792 +lp:83 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:484565584.355521 max_event_size:792 +lp:87 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:432419296.580878 max_event_size:792 +lp:88 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:382314536.175355 max_event_size:792 +lp:92 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:386772466.832815 max_event_size:792 +lp:93 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:343301557.045121 max_event_size:792 +lp:97 send_count:7367 send_bytes:30000040 send_time:5714293.333333 recv_count:7367 recv_bytes:30000040 recv_time:264514236.096660 max_event_size:792 +lp:98 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:313557345.269660 max_event_size:792 +lp:102 send_count:9820 send_bytes:39813600 send_time:7583542.857142 recv_count:9820 recv_bytes:39813600 recv_time:340629834.844444 max_event_size:792 +lp:103 send_count:9770 send_bytes:39813200 send_time:7583466.666666 recv_count:9770 recv_bytes:39813200 recv_time:372973290.936664 max_event_size:792 +lp:107 send_count:9820 send_bytes:39813600 send_time:7583542.857142 recv_count:9820 recv_bytes:39813600 recv_time:437304384.944908 max_event_size:792 +lp:108 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:377859452.518662 max_event_size:792 +lp:112 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:471587827.861975 max_event_size:792 +lp:113 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:283376963.287888 max_event_size:792 +lp:117 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:347661284.230018 max_event_size:792 +lp:118 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:318512073.696441 max_event_size:792 +lp:122 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:256795353.934300 max_event_size:792 +lp:123 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:237701963.756680 max_event_size:792 +lp:127 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:353573738.286471 max_event_size:792 +lp:128 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:465258641.273453 max_event_size:792 +lp:132 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:374138273.240924 max_event_size:792 +lp:133 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:428587201.804590 max_event_size:792 +lp:137 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:404905020.644931 max_event_size:792 +lp:138 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:350589038.917737 max_event_size:792 +lp:142 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:297762961.526255 max_event_size:792 +lp:143 send_count:9770 send_bytes:39813200 send_time:7583466.666666 recv_count:9770 recv_bytes:39813200 recv_time:410133909.716090 max_event_size:792 +lp:147 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:319808170.413551 max_event_size:792 +lp:148 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:341829101.902517 max_event_size:792 +lp:152 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:380910163.193983 max_event_size:792 +lp:153 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:283849636.026727 max_event_size:792 +lp:157 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:274524505.335948 max_event_size:792 +lp:158 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:315657639.722941 max_event_size:792 +lp:162 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:356174453.289787 max_event_size:792 +lp:163 send_count:7367 send_bytes:30000040 send_time:5714293.333333 recv_count:7367 recv_bytes:30000040 recv_time:289274523.506280 max_event_size:792 +lp:167 send_count:9810 send_bytes:39813520 send_time:7583527.619046 recv_count:9810 recv_bytes:39813520 recv_time:351044401.571382 max_event_size:792 +lp:168 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:259385936.957835 max_event_size:792 +lp:172 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:341719498.237854 max_event_size:792 +lp:173 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:307179521.253780 max_event_size:792 +lp:177 send_count:7392 send_bytes:30000240 send_time:5714331.428571 recv_count:7392 recv_bytes:30000240 recv_time:228528983.462069 max_event_size:792 +lp:178 send_count:7387 send_bytes:30000200 send_time:5714323.809523 recv_count:7387 recv_bytes:30000200 recv_time:267558998.807704 max_event_size:792 diff --git a/tmptest/expected/tmptest-jacobiS_MILC-25331-1693498581/mpi-replay-stats b/tmptest/expected/tmptest-jacobiS_MILC-25331-1693498581/mpi-replay-stats new file mode 100644 index 00000000..fed80ff6 --- /dev/null +++ b/tmptest/expected/tmptest-jacobiS_MILC-25331-1693498581/mpi-replay-stats @@ -0,0 +1,73 @@ +# Format + 0 0 1 0 90 90 39813200 39813200 89237007.320510 21119347.570794 250.000000 0.000000 0.000000 + 1 1 0 19 67 67 30000200 30000200 56475874.301444 17852333.411932 10000000.000000 0.000000 0.000000 + 5 2 0 3 72 72 30000240 30000240 62621556.489293 17852174.837306 10000000.000000 0.000000 0.000000 + 6 3 0 6 47 47 30000040 30000040 53717217.531453 17853913.164114 10000000.000000 0.000000 0.000000 + 10 4 1 10 130 130 39813520 39813520 82212308.371531 21068601.547571 250.000000 0.000000 0.000000 + 11 5 0 23 67 67 30000200 30000200 56605447.229800 17856451.510284 10000000.000000 0.000000 0.000000 + 15 6 0 18 67 67 30000200 30000200 59377020.615150 17849212.584262 10000000.000000 0.000000 0.000000 + 16 7 0 28 67 67 30000200 30000200 56611204.332201 17853245.667187 10000000.000000 0.000000 0.000000 + 20 8 0 14 67 67 30000200 30000200 58046006.712762 17853330.657890 10000000.000000 0.000000 0.000000 + 21 9 0 27 67 67 30000200 30000200 54666576.648049 17857362.848268 10000000.000000 0.000000 0.000000 + 25 10 1 3 140 140 39813600 39813600 79806532.629068 21115366.245572 250.000000 0.000000 0.000000 + 26 11 0 9 67 67 30000200 30000200 55190353.587108 17851269.424881 10000000.000000 0.000000 0.000000 + 30 12 0 0 47 47 30000040 30000040 56355045.144427 17849847.891871 10000000.000000 0.000000 0.000000 + 31 13 0 34 67 67 30000200 30000200 57319838.732274 17853331.023495 10000000.000000 0.000000 0.000000 + 35 14 1 20 130 130 39813520 39813520 79825582.529869 21113723.869383 250.000000 0.000000 0.000000 + 36 15 0 30 67 67 30000200 30000200 50539798.306285 17855710.850404 10000000.000000 0.000000 0.000000 + 40 16 1 23 130 130 39813520 39813520 96570614.385612 21173404.388469 250.000000 0.000000 0.000000 + 41 17 1 32 130 130 39813520 39813520 104174353.511400 21127185.068113 250.000000 0.000000 0.000000 + 45 18 0 5 72 72 30000240 30000240 60746833.137984 17855387.498509 10000000.000000 0.000000 0.000000 + 46 19 1 28 130 130 39813520 39813520 90532100.834860 21113902.678420 250.000000 0.000000 0.000000 + 50 20 1 5 140 140 39813600 39813600 93215021.859260 21107999.546402 250.000000 0.000000 0.000000 + 51 21 0 13 67 67 30000200 30000200 62524142.281874 17854071.877755 10000000.000000 0.000000 0.000000 + 55 22 1 11 130 130 39813520 39813520 87108820.845512 21253403.349942 250.000000 0.000000 0.000000 + 56 23 0 26 67 67 30000200 30000200 58124303.599644 17850680.445220 10000000.000000 0.000000 0.000000 + 60 24 0 1 72 72 30000240 30000240 73825732.655678 17853237.674558 10000000.000000 0.000000 0.000000 + 61 25 0 35 67 67 30000200 30000200 74632319.393684 17856451.858593 10000000.000000 0.000000 0.000000 + 65 26 0 29 67 67 30000200 30000200 60973047.224376 17856451.550016 10000000.000000 0.000000 0.000000 + 66 27 1 30 130 130 39813520 39813520 97183327.200930 21102174.565586 250.000000 0.000000 0.000000 + 70 28 0 33 67 67 30000200 30000200 69666737.099805 17855617.501467 10000000.000000 0.000000 0.000000 + 71 29 1 33 130 130 39813520 39813520 100178218.078153 21238162.751729 250.000000 0.000000 0.000000 + 75 30 1 27 130 130 39813520 39813520 98877667.184731 21256700.657271 250.000000 0.000000 0.000000 + 76 31 1 2 90 90 39813200 39813200 100942318.305743 21155764.515093 250.000000 0.000000 0.000000 + 80 32 0 22 67 67 30000200 30000200 65591630.997276 17854157.642763 10000000.000000 0.000000 0.000000 + 81 33 1 12 130 130 39813520 39813520 78974801.715336 21109777.342929 250.000000 0.000000 0.000000 + 85 34 1 31 130 130 39813520 39813520 100689518.650071 21192061.784327 250.000000 0.000000 0.000000 + 86 35 1 21 130 130 39813520 39813520 101556407.296841 21115137.760280 250.000000 0.000000 0.000000 + 90 36 1 26 130 130 39813520 39813520 87181078.575814 21143229.925367 250.000000 0.000000 0.000000 + 91 37 1 14 130 130 39813520 39813520 91281082.849771 21097362.783538 250.000000 0.000000 0.000000 + 95 38 0 2 47 47 30000040 30000040 63940848.873793 17847374.542274 10000000.000000 0.000000 0.000000 + 96 39 0 8 67 67 30000200 30000200 71690442.429131 17849121.063364 10000000.000000 0.000000 0.000000 + 100 40 1 7 140 140 39813600 39813600 88967018.559046 21161719.568495 250.000000 0.000000 0.000000 + 101 41 1 6 90 90 39813200 39813200 85527779.462703 21163275.624817 250.000000 0.000000 0.000000 + 105 42 1 1 140 140 39813600 39813600 100457403.678861 21110006.073760 250.000000 0.000000 0.000000 + 106 43 1 17 130 130 39813520 39813520 99253629.669866 21189028.967585 250.000000 0.000000 0.000000 + 110 44 1 22 130 130 39813520 39813520 88807135.248057 21070787.824921 250.000000 0.000000 0.000000 + 111 45 0 15 67 67 30000200 30000200 55657802.114682 17856451.485560 10000000.000000 0.000000 0.000000 + 115 46 0 25 67 67 30000200 30000200 57569424.228786 17853238.309627 10000000.000000 0.000000 0.000000 + 116 47 1 16 130 130 39813520 39813520 94714665.003806 21118593.796807 250.000000 0.000000 0.000000 + 120 48 0 12 67 67 30000200 30000200 49329790.727020 17848300.919883 10000000.000000 0.000000 0.000000 + 121 49 0 20 67 67 30000200 30000200 49076027.353583 17848300.513379 10000000.000000 0.000000 0.000000 + 125 50 1 19 130 130 39813520 39813520 92110607.580828 21257528.308085 250.000000 0.000000 0.000000 + 126 51 1 29 130 130 39813520 39813520 94697768.477917 21128810.332614 250.000000 0.000000 0.000000 + 130 52 0 32 67 67 30000200 30000200 52119612.770477 17853139.356496 10000000.000000 0.000000 0.000000 + 131 53 1 34 130 130 39813520 39813520 87422795.515014 21154612.434599 250.000000 0.000000 0.000000 + 135 54 1 18 130 130 39813520 39813520 78422965.566418 21073020.434406 250.000000 0.000000 0.000000 + 136 55 0 17 67 67 30000200 30000200 53390682.328147 17853238.062964 10000000.000000 0.000000 0.000000 + 140 56 1 25 130 130 39813520 39813520 89493603.447990 21189561.925589 250.000000 0.000000 0.000000 + 141 57 1 4 90 90 39813200 39813200 85436564.237106 21111296.853831 250.000000 0.000000 0.000000 + 145 58 1 13 130 130 39813520 39813520 96802622.211033 21115137.315974 250.000000 0.000000 0.000000 + 146 59 1 15 130 130 39813520 39813520 96583487.482583 21161490.594629 250.000000 0.000000 0.000000 + 150 60 1 35 130 130 39813520 39813520 90266817.624509 21356588.612738 250.000000 0.000000 0.000000 + 151 61 0 24 67 67 30000200 30000200 58285049.554882 17852412.897185 10000000.000000 0.000000 0.000000 + 155 62 0 31 67 67 30000200 30000200 66320862.530225 17860569.932221 10000000.000000 0.000000 0.000000 + 156 63 1 24 130 130 39813520 39813520 98077004.277963 21119191.871021 250.000000 0.000000 0.000000 + 160 64 1 9 130 130 39813520 39813520 71635687.154524 21185283.014578 250.000000 0.000000 0.000000 + 161 65 0 4 47 47 30000040 30000040 55102180.614745 17851269.485238 10000000.000000 0.000000 0.000000 + 165 66 1 8 130 130 39813520 39813520 68646777.969893 21113251.882987 250.000000 0.000000 0.000000 + 166 67 0 11 67 67 30000200 30000200 51878884.318374 17855809.464314 10000000.000000 0.000000 0.000000 + 170 68 0 21 67 67 30000200 30000200 59776460.886694 17852418.990265 10000000.000000 0.000000 0.000000 + 171 69 0 10 67 67 30000200 30000200 57589326.703996 17849795.090486 10000000.000000 0.000000 0.000000 + 175 70 0 7 72 72 30000240 30000240 54267360.186473 17850595.235628 10000000.000000 0.000000 0.000000 + 176 71 0 16 67 67 30000200 30000200 56663635.212701 17849021.295227 10000000.000000 0.000000 0.000000 \ No newline at end of file diff --git a/tmptest/expected/tmptest-jacobiS_MILC.output b/tmptest/expected/tmptest-jacobiS_MILC.output new file mode 100644 index 00000000..b8fb808a --- /dev/null +++ b/tmptest/expected/tmptest-jacobiS_MILC.output @@ -0,0 +1,240 @@ +/home/ac.xwang/install/codes-new/bin/model-net-mpi-replay --sync=1 --workload_type=conc-online --lp-io-use-suffix=1 --workload_conf_file=/home/ac.xwang/tools/codes-new/tmptest/conf/jacobi_MILC.conf --alloc_file=/home/ac.xwang/tools/codes-new/tmptest/conf/rand_node0-1d-72-jacobi_MILC.conf --lp-io-dir=tmptest-jacobiS_MILC -- /home/ac.xwang/tools/codes-new/tmptest/conf/dfdally-72-par.conf + +Thu Aug 31 11:16:21 2023 + +ROSS Version: v8.0.0-dirty + +tw_net_start: Found world size to be 1 + + num_net_traces 72; num_dumpi_traces 72NIC num injection port not specified, setting to 1 +NIC seq delay not specified, setting to 10.000000 +NIC num copy queues not specified, setting to 1 +Dragonfly rail selection is 3 +within node transfer per byte delay is 0.190476 + +ROSS Core Configuration: + Total PEs 1 + Total KPs [Nodes (1) x KPs (16)] 16 + Total LPs 180 + Simulation End Time 3600000000000.00 + LP-to-PE Mapping model defined + + +ROSS Event Memory Allocation: + Model events 46081 + Network events 16 + Total events 46096 + +*** START SEQUENTIAL SIMULATION *** + +Jacobi3D: Running Jacobi on 36 processors with (4, 3, 3) elements +Jacobi3D: Array Dimensions: 400 300 300 +Jacobi3D: Block Dimensions: 100 100 100 +Set num_servers per router 2, servers per injection queue per router 2, servers per node copy queue per node 1, num nics 2 + + Network node 10 Rank 4 App 1 finished at 21068851.547571 + Network node 22 Rank 44 App 1 finished at 21071037.824921 + Network node 18 Rank 54 App 1 finished at 21073270.434406 + Network node 14 Rank 37 App 1 finished at 21097612.783538 + Network node 30 Rank 27 App 1 finished at 21102424.565586 + Network node 5 Rank 20 App 1 finished at 21108249.546402 + Network node 12 Rank 33 App 1 finished at 21110027.342929 + Network node 1 Rank 42 App 1 finished at 21110256.073760 + Network node 4 Rank 57 App 1 finished at 21111546.853831 + Network node 8 Rank 66 App 1 finished at 21113501.882987 + Network node 20 Rank 14 App 1 finished at 21113973.869383 + Network node 28 Rank 19 App 1 finished at 21114152.678420 + Network node 13 Rank 58 App 1 finished at 21115387.315974 + Network node 21 Rank 35 App 1 finished at 21115387.760280 + Network node 3 Rank 10 App 1 finished at 21115616.245572 + Network node 16 Rank 47 App 1 finished at 21118843.796807 + Network node 24 Rank 63 App 1 finished at 21119441.871021 + Network node 0 Rank 0 App 1 finished at 21119597.570794 + Network node 32 Rank 17 App 1 finished at 21127435.068113 + Network node 29 Rank 51 App 1 finished at 21129060.332614 + Network node 26 Rank 36 App 1 finished at 21143479.925367 + Network node 34 Rank 53 App 1 finished at 21154862.434599 + Network node 2 Rank 31 App 1 finished at 21156014.515093 + Network node 15 Rank 59 App 1 finished at 21161740.594629 + Network node 7 Rank 40 App 1 finished at 21161969.568495 + Network node 6 Rank 41 App 1 finished at 21163525.624817 + Network node 23 Rank 16 App 1 finished at 21173654.388469 + Network node 9 Rank 64 App 1 finished at 21185533.014578 + Network node 17 Rank 43 App 1 finished at 21189278.967585 + Network node 25 Rank 56 App 1 finished at 21189811.925589 + Network node 31 Rank 34 App 1 finished at 21192311.784327 + Network node 33 Rank 29 App 1 finished at 21238412.751729 + Network node 11 Rank 22 App 1 finished at 21253653.349942 + Network node 27 Rank 30 App 1 finished at 21256950.657271 + Network node 19 Rank 50 App 1 finished at 21257778.308085 + Network node 35 Rank 60 App 1 finished at 21356838.612738 App 0: Received finished workload notificationThere is still a nonsynethic workload left. 1 != 2 + + Network node 2 Rank 38 App 0 finished at 27847374.542274 + Network node 20 Rank 49 App 0 finished at 27848300.513379 + Network node 12 Rank 48 App 0 finished at 27848300.919883 + Network node 16 Rank 71 App 0 finished at 27849021.295227 + Network node 8 Rank 39 App 0 finished at 27849121.063364 + Network node 18 Rank 6 App 0 finished at 27849212.584262 + Network node 10 Rank 69 App 0 finished at 27849795.090486 + Network node 0 Rank 12 App 0 finished at 27849847.891871 + Network node 7 Rank 70 App 0 finished at 27850595.235628 + Network node 26 Rank 23 App 0 finished at 27850680.445220 + Network node 9 Rank 11 App 0 finished at 27851269.424881 + Network node 4 Rank 65 App 0 finished at 27851269.485238 + Network node 3 Rank 2 App 0 finished at 27852174.837306 + Network node 19 Rank 1 App 0 finished at 27852333.411932 + Network node 24 Rank 61 App 0 finished at 27852412.897185 + Network node 21 Rank 68 App 0 finished at 27852418.990265 + Network node 32 Rank 52 App 0 finished at 27853139.356496 + Network node 1 Rank 24 App 0 finished at 27853237.674558 + Network node 17 Rank 55 App 0 finished at 27853238.062964 + Network node 25 Rank 46 App 0 finished at 27853238.309627 + Network node 28 Rank 7 App 0 finished at 27853245.667187 + Network node 14 Rank 8 App 0 finished at 27853330.657890 + Network node 34 Rank 13 App 0 finished at 27853331.023495 + Network node 6 Rank 3 App 0 finished at 27853913.164114 + Network node 13 Rank 21 App 0 finished at 27854071.877755 + Network node 22 Rank 32 App 0 finished at 27854157.642763 + Network node 5 Rank 18 App 0 finished at 27855387.498509 + Network node 33 Rank 28 App 0 finished at 27855617.501467 + Network node 30 Rank 15 App 0 finished at 27855710.850404 + Network node 11 Rank 67 App 0 finished at 27855809.464314 + Network node 15 Rank 45 App 0 finished at 27856451.485560 + Network node 23 Rank 5 App 0 finished at 27856451.510284 + Network node 29 Rank 26 App 0 finished at 27856451.550016 + Network node 35 Rank 25 App 0 finished at 27856451.858593 + Network node 27 Rank 9 App 0 finished at 27857362.848268 + Network node 31 Rank 62 App 0 finished at 27860569.932221 App 0: Received finished workload notificationApp 0: All non-synthetic workloads have completed +*** END SIMULATION *** + + + : Running Time = 35.7901 seconds + +TW Library Statistics: + Total Events Processed 11315021 + Events Aborted (part of RBs) 0 + Events Rolled Back 0 + Event Ties Detected in PE Queues 0 + Efficiency 100.00 % + Total Remote (shared mem) Events Processed 0 + Percent Remote Events 0.00 % + Total Remote (network) Events Processed 0 + Percent Remote Events 0.00 % + + Total Roll Backs 0 + Primary Roll Backs 0 + Secondary Roll Backs 0 + Fossil Collect Attempts 0 + Total GVT Computations 0 + + Net Events Processed 11315021 + Event Rate (events/sec) 316149.8 + Total Events Scheduled Past End Time 0 + +TW Memory Statistics: + Events Allocated 46097 + Memory Allocated 80000 + Memory Wasted 101 + +TW Data Structure sizes in bytes (sizeof): + PE struct 3888 + KP struct 960 + LP struct 960 + LP Model struct 96 + LP RNGs 80 + Total LP 1136 + Event struct 976 + Event struct with Model 1768 + +TW Clock Cycle Statistics (MAX values in secs at 1.0000 GHz): + Initialization 0.3151 + Priority Queue (enq/deq) 5.0614 + AVL Tree (insert/delete) 0.0000 + LZ4 (de)compression 0.0000 + Buddy system 0.0000 + Event Processing 0.0000 + Event Cancel 0.0000 + Event Abort 0.0000 + + GVT 0.0000 + Fossil Collect 0.0000 + Primary Rollbacks 0.0000 + Network Read 0.0000 + Other Network 0.0000 + Instrumentation (computation) 0.0000 + Instrumentation (write) 0.0000 + Total Time (Note: Using Running Time above for Speedup) 74.9855 + +TW GVT Statistics: MPI AllReduce + GVT Interval 16 + GVT Real Time Interval (cycles) 0 + GVT Real Time Interval (sec) 0.00000000 + Batch Size 16 + + Forced GVT 0 + Total GVT Computations 0 + Total All Reduce Calls 0 + Average Reduction / GVT -nan + + Total bytes sent 2513292480 recvd 2513292480 + max runtime 27860569.932221 ns avg runtime 24501344.282682 + max comm time 21356588.612738 avg comm time 19501219.282682 + max send time 104174353.511400 avg send time 74765835.724547 + max recv time 100173347.933146 avg recv time 74419141.320531 + max wait time 19215338.524462 avg wait time 16456309.234173 + +---------- +Per App Max Elapsed Times: + App 0: 27860569.9322 + App 1: 21356838.6127 +---------- +LP-IO: writing output to tmptest-jacobiS_MILC-25331-1693498581/ +LP-IO: data files: + tmptest-jacobiS_MILC-25331-1693498581/dragonfly-cn-stats + tmptest-jacobiS_MILC-25331-1693498581/dragonfly-link-stats + tmptest-jacobiS_MILC-25331-1693498581/model-net-category-all + tmptest-jacobiS_MILC-25331-1693498581/model-net-category-high + tmptest-jacobiS_MILC-25331-1693498581/avg-all-reduce-time + tmptest-jacobiS_MILC-25331-1693498581/mpi-replay-stats + +------------------ Dragonfly Dally Parameters --------- + num_routers = 4 + local_bandwidth = 5.25 + global_bandwidth = 4.70 + cn_bandwidth = 5.25 + num_vcs = 4 + num_qos_levels = 1 + local_vc_size = 16384 + global_vc_size = 16384 + cn_vc_size = 32768 + chunk_size = 4096 + num_cn = 2 + cn_radix = 2 + intra_grp_radix = 3 + num_groups = 9 + total_groups = 9 + virtual radix = 7 + total_routers = 36 + total_terminals = 72 + num_global_channels = 2 + num_injection_queues = 1 + num_rails = 1 + num_planes = 1 + cn_delay = 726.61 + local_delay = 726.61 + global_delay = 811.64 + local credit_delay = 1.42 + global credit_delay = 1.42 + cn credit_delay = 1.42 + router_delay = 100.00 + routing = PROG_ADAPTIVE + adaptive_threshold = 0 + max hops notification = 2147483647 +------------------------------------------------------ + + +Average number of hops traversed 4.101973 average chunk latency 40.897694 us maximum chunk latency 732.304909 us avg message size 363612.937500 bytes finished messages 6912 finished chunks 618912 + +ADAPTIVE ROUTING STATS: 349554 chunks routed minimally 269358 chunks routed non-minimally completed packets 618912 + +Total packets generated 618912 finished 618912 Locally routed- same router 14696 different-router 56472 Remote (inter-group) 547744